Рекомендация инструмента статического анализа для Java?

Будучи смутно знакомым с миром Java, я искал инструмент статического анализа, который также был бы достаточно умным, чтобы исправить найденные проблемы. Я использовал инструмент CodePro, но, опять же, я новичок в сообществе Java и не знаю поставщиков.

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


person sergeb    schedule 18.09.2008    source источник
comment
вы также можете взглянуть на qulice.com, который объединяет вместе Checkstyle, PMD, FindBugs и предварительные настройки. их   -  person yegor256    schedule 17.09.2012
comment
softwarerecs.stackexchange.com будет вашим другом.   -  person peterh    schedule 11.09.2015


Ответы (9)


FindBugs, PMD и Checkstyle — отличный выбор, особенно если вы интегрируете их в процесс сборки.

В моей последней компании мы также использовали Fortify для проверки потенциальных проблем с безопасностью. Нам посчастливилось иметь корпоративную лицензию, поэтому я не знаю, сколько это стоит.

person Brian Matthews    schedule 18.09.2008

person Eduard Wirch    schedule 18.09.2008
comment
Не могли бы вы немного прокомментировать использование lint4j? Я только что попробовал, но он выдал только одно предупреждение (ложное срабатывание!) на всю мою кодовую базу. Я знаю, что мой код не такой чистый! Для моего кода требуется Java 6, а проект lint4j. вроде бездействует. lint4j не является FOSS, поэтому нет исходного кода. Спасибо! - person Greg Mattes; 23.09.2008
comment
Я получил несколько сотен предупреждений от lint4j во время сканирования проекта 200 KLOC. В большинстве из них было приятно использовать символьный литерал вместо строкового литерала для добавления одного постоянного символа в поток. Findbugs определенно дает вам более важные вещи для рассмотрения. (Но в новом коде я всегда использую их оба!) - person Bananeweizen; 23.05.2010

Я рекомендую FindBugs. http://findbugs.sourceforge.net/ Хорошо помогает при проверке кода.

person zxcv    schedule 18.09.2008
comment
findbugs больше не поддерживается и был заменен spotbugs - person svarog; 01.05.2019

IntelliJ IDEA от JetBrains. Они также делают ReSharper в сообществе .Net.

person SaaS Developer    schedule 18.09.2008

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

Сонар базируется на следующих проектах:

  • JavaNCSS: показатели качества

  • Checkstyle: проверка стиля

  • PMD: сканирование кода на наличие потенциальных ошибок.

  • Cobertura: тестовое покрытие

Вы также можете использовать Simian для обнаружения дубликатов.

person Julien Hoarau    schedule 19.09.2008
comment
Сонар мне не нравится - они стали очень-очень дорогими. - person pan40; 14.02.2018

CRAP4J — не только красивое имя, но и весьма полезное. Все остальные хорошие — все вышеперечисленное, лучший из всех (ИМХО) — FindBugs, потому что он действительно сразу находит честные ошибки в большой базе кода.

person Epaga    schedule 24.09.2008

Вы можете попробовать JavaDepend, он дополняет другие инструменты статического анализа и предоставляет язык CQL для запроса кода, такого как база данных,

JavaDepend также предоставляет множество интерактивных представлений для понимания существующей кодовой базы и более 82 показателей.

person James from CppDepend Team    schedule 08.11.2011

Все вышеперечисленное — отличные инструменты. PMD, вероятно, является наиболее распространенным.

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

person zvikico    schedule 24.09.2008

Несколько коммерческих поставщиков, предлагающих Java:

Klocwork Покрытие

Они не будут «исправлять проблемы», которые они найдут (как и, я думаю, любые другие из упомянутых выше), но все эти инструменты имеют разную силу.

person Community    schedule 24.06.2009