Подтвердить что ты не робот

Какие инструменты вы используете для статического анализа кода?

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

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

4b9b3361

Ответ 1

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

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

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

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

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

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

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

Ответ 2

Для C и Objective-C вы также можете использовать LLVM/Clang Статический анализатор.

Он работает с открытым исходным кодом и находится в активной разработке.

Ответ 3

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

http://www.ndepend.com/

НТН.

Ответ 4

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

Ответ 5

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

Ответ 6

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

Ответ 8

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

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

Ответ 9

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

Ответ 10

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

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

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

Ответ 11

Мы используем Coverity Prevent в Palm для анализа кода на C и С++, и он отлично справился с обнаружением некоторых скрытых ошибок в нашем коде, Он также обнаруживает множество проблем, которые вряд ли будут затронуты, но легко отметить, что они не будут исправлены или "не являются проблемой" в базе данных кода, которую генерирует инструмент. Это дорого, но компания иногда работает на проектах с открытым исходным кодом и предоставляет отчеты для сопровождающих. У них технический документ о нашем использовании продукта на их сайте, если вы хотите больше узнать о нашем опыте.

Ответ 12

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

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

Ответ 13

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

Ответ 14

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

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