Сведения о вопросе

Fhohir

18:14, 17th August, 2020

Теги

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

Просмотров: 380   Ответов: 14

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

Edit: как отмечает Дэвид, это не совсем незаданный вопрос, когда речь заходит об инструментах на основе C/UNIX .



  Сведения об ответе

P_S_S

00:26, 19th August, 2020

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

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

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

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

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

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

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


  Сведения об ответе

lesha

00:06, 28th August, 2020

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

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


  Сведения об ответе

baggs

14:18, 15th August, 2020

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

http://www.ndepend.com/

HTH.


  Сведения об ответе

PHPH

18:16, 11th August, 2020

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


  Сведения об ответе

lourence

13:45, 28th August, 2020

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


  Сведения об ответе

darknet

04:58, 14th August, 2020

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


  Сведения об ответе

pumpa

18:48, 23rd August, 2020

Также смотрите вопрос выбор инструмента статического анализа кода , если вы ищете инструменты на основе C/UNIX.


  Сведения об ответе

DAAA

21:06, 1st October, 2020

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

Оуэнс: я думаю, вы имели в виду шину.


  Сведения об ответе

ASER

17:23, 18th August, 2020

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

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


  Сведения об ответе

SEEYOU

17:45, 13th August, 2020

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

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

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


  Сведения об ответе

LAST

17:28, 24th August, 2020

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


  Сведения об ответе

nYU

04:45, 17th August, 2020

Мы используем Coverity Prevent at Palm для анализа кода C и C++, и он проделал большую работу по выявлению некоторых скрытых ошибок в нашем коде. Он также находит много проблем, которые вряд ли будут затронуты, но их легко отметить как "will not fix" или "not a problem" в базе данных кода, которую генерирует инструмент. Это дорого, но компания иногда работает над проектами с открытым исходным кодом и предоставляет отчеты сопровождающим. Если вы хотите узнать больше о нашем опыте, у них на сайте есть техническая документация о нашем использовании продукта .


  Сведения об ответе

SILA

17:11, 7th August, 2020

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

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


  Сведения об ответе

VERSUION

11:06, 14th August, 2020

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться