2008-08-21 3 views
31

This question на Cyclomatic Complexity заставил меня подумать больше о static code analysis. Иногда бывает полезно анализировать сложность кода и согласованность, и я хотел бы начать делать это больше. Какие инструменты вы рекомендуете (на язык) для такого анализа? У Wikipedia есть большой список инструментов, но какие из них люди пытались раньше?Какие инструменты вы используете для статического анализа кода?

Редактировать: Как указывает Дэвид, этот вопрос не является полностью непонятным, когда речь заходит о C/UNIX based tools.

ответ

0

Единственный раз, когда я использовал один из этих инструментов, является Split (язык программирования C). Я думал, что это полезно, но я ни в коем случае не был сильным пользователем, и я думаю, что я едва поцарапал поверхность того, что он мог сделать.

2

Я использую плагин PMD для Eclipse. Это довольно приятно и очень настраиваемо. CheckStyle также хорош, если вы ищете больше элементов стиля.

+0

+1 Вот что я использую также – 2010-04-26 20:21:58

5

Для .Net мы используем NDepend. Это отличный инструмент и может быть интегрирован в сборку (мы используем CCNet).

http://www.ndepend.com/

НТН.

1

Lint - это единственное, что я использовал на предыдущей позиции. Это было неплохо, большинство вещей, которые оно предлагало, были хорошими уловами, некоторые не имели большого смысла. До тех пор, пока у вас не будет процесса, чтобы убедиться, что нет никаких ошибок или предупреждений на линт, тогда полезно уловить некоторые скрытые ошибки.

2

Checkstyle, Findbugs и PMD работают на Java. В настоящее время я очень доволен PMD, работающим в NetBeans. Он имеет довольно простой графический интерфейс для управления правилами, которые вы хотите запустить. Также очень легко запустить проверку в одном файле, весь пакет или весь проект.

2

Очевидно, что ответ зависит от языков программирования. UNO подходит для программ на C.

@ Томас Оуэнс: Думаю, вы имели в виду Шипт.

1

Мы используем Программирование QAC для нашего кода на языке C. Работает нормально.

Недавно мы говорили о проверке некоторых из более продвинутых и статических/динамических анализаторов кода, таких как Coverity's Prevent или инструмента анализа на GrammaTech.

Они заявляют, что не только выполняют статический анализ, но также обнаруживают ошибки времени выполнения и т. Д. Предполагается, что в одной из основных точек продажи меньше ложных срабатываний.

6

Для C и Objective-C вы также можете использовать LLVM/ClangStatic Analyzer.

Это с открытым исходным кодом и под активным развитием.

1

Мы используем Coverity Prevent для анализа кода Palm для C и C++, и это отлично поработало над обнаружением некоторых скрытых ошибок в нашем коде.Он также обнаруживает множество проблем, которые вряд ли могут пострадать, но их легко пометить как «не исправить» или «не проблема» в базе данных кода, которую создает инструмент. Это дорого, но компания иногда работает на проектах с открытым исходным кодом и предоставляет отчеты для сопровождающих. У них есть a whitepaper about our use of the product на своем сайте, если вы хотите больше узнать о нашем опыте.

3

Для C++ я использую CppCheck. Кажется, он работает нормально.

1

Моих админ очень дешево, так что я могу использовать только действительно дешевые инструменты:

1) КПКГ (C/C++ код счетчик): Различные результаты, связанные с количеством строк (против строк комментариев, цикломатические сложностей , Информационный поток, ...) 2) Semian: Самый быстрый поиск дубликатов кода, который я когда-либо пробовал. 3) LOC Metrix: Не очень полезно, но может помочь сделать точку.

0

Я использовал довольно много инструментов для открытого и коммерческого статического анализа на многих языках, и я нахожу, что общая дискуссия подходит под понятие концепции, известной как технический долг (which this article goes into detail about).

Однако быстрый ответ, вот мои любимые на языке:

+0

Спасибо Эндрю, я не знаю CodePro. Кажется здорово! – alcor 2013-03-14 15:51:27

23

Я настраивал непрерывную интеграцию Хадсона (CI) система сборки проектов iPhone (IOS приложений) мой C Цель-, и собрали разнообразный перечень инструментов, которые могут быть использованы для анализа моих проектов во время сборки:

  • Clang статический анализатор: бесплатный, обновленный автономный инструмент, который улавливает больше проблем, чем версия Clang, включенная в Xcode 4. Active project. - visit http://clang-analyzer.llvm.org

  • Doxygen: бесплатный инструмент для создания документации, который также генерирует диаграммы зависимостей классов. Активный проект - посещение http://www.stack.nl/~dimitri/doxygen

  • HFCCA (заголовок свободного цикломатической анализатор сложности): свободный Python скрипт для расчета сложности коды, но без заголовков файлов и предварительных процессоров. Поддерживает вывод в формате XML для сборки Hudson/Jenkins. Активный проект. - посетить http://code.google.com/p/headerfile-free-cyclomatic-complexity-analyzer

  • CLOC (подсчет строк кода): бесплатный инструмент для подсчета файлов, строк кода, комментариев и пустых строк. Поддержка отличается, поэтому вы можете видеть различия между сборками. Активный проект. - посетить http://cloc.sourceforge.net

  • SLOCcount (исходные линии подсчета кода): бесплатный инструмент для подсчета строк кода и оценки затрат и времени, связанных с проектом. Не кажется активным.- посещение http://sourceforge.net/projects/sloccount и http://www.dwheeler.com/sloccount

  • AnalysisTool: бесплатный инструмент для анализа кода, который измеряет сложность кода, а также генерирует диаграммы зависимостей. Не активен. Кажется, не работает с Xcode 4, но мне бы хотелось, чтобы он работал. - посетить http://www.karppinen.fi/analysistool

Смежные вопросы