Я знаком с несколькими бесплатными инструментами статического анализа, доступными для Java, такими как FindBugs и PMD. Что я хотел бы знать, так это то, как коммерческие продукты, такие как Klocwork и Coverity, сочетаются с ними. Каковы их сильные и слабые стороны?
взгляните на Кулисэ, инструмент составного статического анализа для проектов Maven, который объединяет Checkstyle, PMD, FindBugs и некоторые другие




вот список инструментов коммерческого анализа: http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis#Java_2
Coverity имеет несколько инструментов:
http://www.coverity.com/html/coverity-readiness-manager-java.html: это должно быть на одном уровне с findbugs и PMD, но с лучшим представлением
предотвратить: http://www.coverity.com/html/prevent-for-java.html: low ЛОЖНЫЕ ПОЛОЖЕНИЯ.
анализатор потоков: http://www.coverity.com/html/coverity-thread-analyzer-java.html: это то, что отсутствует в большинстве инструментов с открытым исходным кодом.
Этот, хотя на самом деле довольно серьезный, имеет забавное название: Crap4J!
Единственная особенность, которую вы наверняка найдете в инструменте статического анализа коммерческий (и которую нелегко найти в бесплатном инструменте анализа, по крайней мере, в 2008 году, во время OP), это
.
Отчетность: измеряет тенденции качества программного обеспечения.через некоторое время
Как объясняется в этом вопрос о показателях кода, любой статический анализ кода сам по себе не всегда имеет смысл, потому что вы можете иметь:
Вам нужна возможность провести некоторую сортировку, и вам нужно проверить, возникает ли конкретный дефект все реже и реже с течением времени, чтобы помочь вам определить приоритеты, которые нужно исправить.
Это особенно верно для устаревшего проекта с тысячами классов: вы не исправляете дефект во многих файлах просто так, без причины хорошо. Эту причину можно вывести из хороших отчетов и анализа тенденций, которых вы не найдете с помощью бесплатных инструментов.
Обновление: с 2012 года (4 года спустя), Sonar (теперь в 2018 году под названием «SonarQube») «Историческая информация» (также известная как «Машина времени») в сериях 4.x и 5.x..
Обратите внимание на панели управления проекта были удалены в SonarQube 6.1 (сентябрь 2016 г.): см. эта ветка.
Дашборд нужно будет воссоздать вручную. через настраиваемую страницу.
SonarQube 6.5 восстанавливает часть этих панелей мониторинга со страницей Activity, которая получает (несколько предопределенных и одну настраиваемую) диаграммы для отображения эволюции проекта.
Сонар имеет функцию «Машина времени» для отслеживания трендов.
Я предлагаю вам попробовать СОНАР - инструмент управления качеством программного обеспечения с открытым исходным кодом, предназначенный для непрерывного анализа и измерения качества исходного кода. Это программное обеспечение берет результат от инструмента анализа кода, объединяет эти результаты и дает вам доступ к удобному интерфейсу.
отличное предложение. Фактически, мы используем его в нашем магазине. +1
На самом деле это не ответ на вопрос, не так ли? Как SONAR по сравнению с коммерческими предложениями?
Мы используем набор инструментов статического анализа с открытым исходным кодом и коммерческих. Различные инструменты находят разные виды ошибок, а некоторые настроены на более низкую частоту ложных срабатываний за счет возможного упущения некоторых реальных проблем.
По моему опыту, Findbugs отлично справляется с поиском реальных проблем, особенно если вы сосредоточитесь на ошибках правильности, как предлагает их команда. Недавно разработчики Findbugs также добавили несколько базовых проверок уязвимостей. У Coverity низкий уровень ложных срабатываний, особенно если вы не включаете их экспериментальные средства проверки, а Coverity Prevent включает в себя хорошую базу данных для отслеживания тенденций / кластерного анализа. Я еще не уверен, что их средства проверки потоков (статические или динамические) работают - по крайней мере, они не нашли для нас ничего интересного. Klocwork Developer for Java возвращает больше ложных срабатываний, но мы обнаружили, что у них самая строгая проверка безопасности среди этих инструментов. Так что это зависит от того, является ли ваш приоритет проверкой качества (Findbugs, Coverity) или анализом уязвимостей безопасности (Klocwork или Fortify). Некоторые из наших разработчиков также используют PMD для поддержки проверки исходного кода, поскольку это помогает с общей очисткой кода.
В недавно проведенном совместно с NIST проекте под названием «SATE: Static Analysis Tool Exposition» был рассмотрен широкий спектр различных инструментов и лежащих в их основе подходов. https://samate.nist.gov/index.php/SATE.html и другие ссылки на этот проект, например, на OWASP. Общий вывод состоит в том, что разные инструменты имеют разные сильные и слабые стороны, поэтому используйте более одного, если хотите выполнить тщательную работу.
URL-адрес должен быть samate.nist.gov/index.php/SATE.html
Этот URL тоже больше не работает. Наверное, захочется найти самую последнюю в каталоге: Публикации SAMATE (в настоящее время 2009 г.). Беглый взгляд, они не охватывают Findbugs или Coverity для Java.
У меня не было прямого опыта работы с Findbugs или PMD, но я встречал множество людей, которые сравнивали их с Klocwork и Coverity.
Мой общий взгляд на отзывы был следующим:
Findbugs и PMD - это больше "инструментальный". То, что вы запускаете на своем рабочем столе. Он обнаруживает широкий спектр потенциальных проблем, но имеет тенденцию быть шумным, что означает ложные срабатывания и разновидности типа «мне все равно». Он действительно находит хорошие вещи. Я слышал смешанные отзывы о его долгосрочном использовании. Некоторые считают, что окупаемость бесплатного инструмента бесконечна, однако ложные срабатывания дорого обходятся.
Неудивительно, что Klocwork и Coverity, которые стоят денег, как правило, больше ориентированы на решения, которые также могут лучше масштабироваться для работы с командами, имеют более эффективный, простой в использовании пользовательский интерфейс и, как правило, менее шумны. Похоже, их анализ делает более глубокий анализ и, следовательно, дает лучшие результаты, если вы провели параллельное сравнение. При внедрении инструмента в команде у вас будут разные уровни энтузиазма по поводу использования инструмента, а фактор шума - большая проблема, которая препятствует широкому внедрению. Конечно, есть такие вещи, как поддержка и т. д.
В общем, поскольку Findbugs и PMD бесплатны, вы рассматриваете это как первый вариант. Многие компании видят ценность и выбирают Coverity или Klocwork в качестве долгосрочного решения, хотя я также вижу, что работают Findbugs и PMD. Они склонны находить разные вещи, поэтому, если ваша цель - найти и исправить как можно больше, хорошо бы сочетать и то, и другое.
Раскрытие информации: я работаю в Code Integrity Solutions (codeintegritysolutions.com), который является партнером Coverity.
Просто с моей точки зрения. Findbugs и PMD фактически содержатся в Sonar, который фактически может быть установлен как плагин для Jenkins. Сонар имеет чистый пользовательский интерфейс, и, поскольку он фактически запускается Jenkins, он также менее шумный. Так что неверно, что Findbugs и PMD всегда следует запускать с рабочего стола.
В приведенных ниже ответах нет сравнения бесплатных и коммерческих. Ты куда-то попал?