Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

Ответ 3

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

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

  • слишком много "дефектов" для исправления
  • указано слишком много категорий дефектов

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

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

Ответ 4

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

Моя общая реакция на обратную связь была:

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

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

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

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

Ответ 5

здесь список инструментов коммерческого анализа: http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis#Java_2

у покрытия есть несколько инструментов:
http://www.coverity.com/html/coverity-readiness-manager-java.html: это должно быть наравне с findbugs и PMD, но с лучшей презентацией

предотвратить: http://www.coverity.com/html/prevent-for-java.html: low FALSE POSITIVES.

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