Чем коммерческие инструменты статического анализа Java сравниваются с бесплатными?

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

В приведенных ниже ответах нет сравнения бесплатных и коммерческих. Ты куда-то попал?

Jigar Shah 08.12.2010 11:03

взгляните на Кулисэ, инструмент составного статического анализа для проектов Maven, который объединяет Checkstyle, PMD, FindBugs и некоторые другие

yegor256 18.11.2012 16:27
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
34
2
20 021
5

Ответы 5

вот список инструментов коммерческого анализа: 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!

John Tobler 02.02.2012 02:34

Единственная особенность, которую вы наверняка найдете в инструменте статического анализа коммерческий (и которую нелегко найти в бесплатном инструменте анализа, по крайней мере, в 2008 году, во время OP), это
. Отчетность: измеряет тенденции качества программного обеспечения.через некоторое время

Как объясняется в этом вопрос о показателях кода, любой статический анализ кода сам по себе не всегда имеет смысл, потому что вы можете иметь:

  • слишком много "дефектов", чтобы исправить
  • сообщается о слишком большом количестве категорий дефектов

Вам нужна возможность провести некоторую сортировку, и вам нужно проверить, возникает ли конкретный дефект все реже и реже с течением времени, чтобы помочь вам определить приоритеты, которые нужно исправить.

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


Обновление: с 2012 года (4 года спустя), Sonar (теперь в 2018 году под названием «SonarQube») «Историческая информация» (также известная как «Машина времени») в сериях 4.x и 5.x..
Обратите внимание на панели управления проекта были удалены в SonarQube 6.1 (сентябрь 2016 г.): см. эта ветка.
Дашборд нужно будет воссоздать вручную. через настраиваемую страницу.
SonarQube 6.5 восстанавливает часть этих панелей мониторинга со страницей Activity, которая получает (несколько предопределенных и одну настраиваемую) диаграммы для отображения эволюции проекта.

Сонар имеет функцию «Машина времени» для отслеживания трендов.

Samarth Bhargava 26.06.2012 14:48

Я предлагаю вам попробовать СОНАР - инструмент управления качеством программного обеспечения с открытым исходным кодом, предназначенный для непрерывного анализа и измерения качества исходного кода. Это программное обеспечение берет результат от инструмента анализа кода, объединяет эти результаты и дает вам доступ к удобному интерфейсу.

отличное предложение. Фактически, мы используем его в нашем магазине. +1

VonC 16.10.2008 12:24

На самом деле это не ответ на вопрос, не так ли? Как SONAR по сравнению с коммерческими предложениями?

Michael Donohue 11.10.2009 08:03

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

По моему опыту, 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

Flash Sheridan 06.04.2009 23:28

Этот URL тоже больше не работает. Наверное, захочется найти самую последнюю в каталоге: Публикации SAMATE (в настоящее время 2009 г.). Беглый взгляд, они не охватывают Findbugs или Coverity для Java.

Cincinnati Joe 28.04.2011 22:37

У меня не было прямого опыта работы с 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 всегда следует запускать с рабочего стола.

Rudy 29.08.2012 12:23

Другие вопросы по теме