2008-10-16 2 views
33

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

+0

Ответы ниже не имеют никакого сравнения бесплатно с коммерческим. Ты где-то ушел? – 2010-12-08 08:03:49

+0

взгляните на [qulice] (http://www.qulice.com/index.html), составной инструмент статического анализа для проектов Maven, который объединяет Checkstyle, PMD, FindBugs и некоторые другие. – yegor256 2012-11-18 12:27:56

ответ

0

вот список коммерческих инструментов анализа: 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: низкую ЛОЖЬ Положительные.

анализатор нитей: http://www.coverity.com/html/coverity-thread-analyzer-java.html: это то, что отсутствует в большинстве инструментов с открытым исходным кодом.

+1

Этот, хотя и фактически довольно серьезное, имеет забавное имя: [Crap4J] (http://www.crap4j.org/)! – 2012-02-01 22:34:12

3

Одна особенности, вы наверняка найдете в коммерческого статического анализа (и что вы не легко найти в бесплатном инструменте анализа, по крайней мере, в 2008 году, во время ФПА) является
отчетность: Меры тенденция качества программного обеспечениясо временем

Как объяснен в этом question about code metrics, статический анализ кода в себя в не всегда имеет смысл, потому что вы могли бы:

  • слишком много «дефектов», чтобы исправить
  • слишком много категорий дефектов отчётных

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

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


Обновление: от 2012 (4 года спустя), Sonar (сейчас в 2018 году назвал "SonarQube") "Historical Information" (aka "Time Machine") in its 4.x and 5.x series.
Обратите внимание на то, что project dashboards were dropped в SonarQube 6.1 (сентябрь 2016 года): см. this thread.
Эти приборные панели необходимо будет заново создать вручную through a custom page.
SonarQube 6.5 восстанавливает часть этих панелей с помощью страницы активности, которая получает (несколько предопределенных и настраиваемых) диаграмм для отображения эволюции проекта.

+2

У Sonar есть функция Time Machine для трендов. – 2012-06-26 10:48:53

6

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

+0

отличное предложение. Мы используем его в нашем магазине. +1 – VonC 2008-10-16 08:24:53

+4

Это не отвечает на вопрос, не так ли? Как SONAR сравнивается с коммерческими предложениями? – 2009-10-11 04:03:17

18

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

По моему опыту, Findbugs хорошо справляется с поиском реальных проблем, особенно если сосредоточиться на ошибках корректности, как их предлагает команда. Недавно разработчики Findbugs также добавили некоторые базовые проверки безопасности. Coverity имеет низкий коэффициент ложной срабатывания, особенно если вы не включаете свои экспериментальные шашки, а Coverity Prevent включает хорошую базу данных отслеживания для анализа тенденций/кластеров. Я еще не убежден в том, что их прототипы (статические или динамические) работают - по крайней мере, они не нашли для нас ничего интересного. Разработчик Klocwork для Java возвращает более высокие ложные срабатывания, но мы обнаруживаем, что они имеют самую сильную проверку безопасности этих инструментов. Это зависит от того, является ли ваш приоритет проверкой качества (Findbugs, Coverity) или анализом уязвимости безопасности (Klocwork или Fortify). Некоторые из наших разработчиков также используют PMD для поддержки обзоров исходного кода, поскольку это помогает с общей очисткой кода.

Недавний проект, проведенный с NIST под названием «SATE: Экспозиция инструмента статического анализа», рассмотрел широкий спектр различных инструментов и их подходов. https://samate.nist.gov/index.php/SATE.html и другие ссылки на этот проект, например, в OWASP. Общий вывод состоит в том, что разные инструменты имеют разные сильные и слабые стороны, поэтому используйте более одного, если вы хотите выполнить тщательную работу.

4

У меня не было прямого опыта работы с Findbugs или PMD, но они встретили много людей, которые сравнили их с Klocwork и Coverity.

Мой общий взгляд на обратную связь была:

FindBugs и PMD более «инструмент-иш». Тип вещи, которую вы могли бы запустить на рабочем столе. Он находит широкий спектр потенциальных проблем, но имеет тенденцию быть шумным, что означает ложные срабатывания и варианты «Мне все равно». Он находит хорошие вещи. Я слышал смешанные отзывы о его долгосрочном использовании. Некоторые считают, что ROI на бесплатном инструменте бесконечен, но существует истинная стоимость ложных срабатываний.

Неудивительно, что Klocwork и Coverity, которые стоят денег, имеют тенденцию быть более ориентированными на решение, которые также могут лучше масштабироваться для работы с командами, имеют более эффективный, простой в использовании интерфейс и имеют тенденцию быть менее шумными. Похоже, их анализ делает более глубокую проверку и, следовательно, приносит лучшие результаты, если вы проводили сравнение бок о бок. При использовании инструмента в команде вы будете иметь различные уровни энтузиазма в использовании инструмента, а фактор шума - большая проблема, которая предотвращает широкое внедрение. Конечно, есть такие вещи, как поддержка поддержки вас и т. Д.

В общем, поскольку Findbugs и PMD являются бесплатными, вы видите это как первый вариант. Многие компании видят ценность и выбирают Coverity или Klocwork для долгосрочного решения, хотя я также вижу, что работает Findbugs и PMD. Они склонны находить разные вещи, поэтому, если ваша цель - найти и исправить как можно больше, хорошо иметь комбинацию обоих.

Раскрытие информации: Я работаю для решения целостности кода (codeintegritysolutions.com), который является партнером Coverity.

Смежные вопросы