Является ли SonarQube заменой для Checkstyle, PMD, FindBugs? - PullRequest
97 голосов
/ 30 марта 2011

Мы работаем над веб-проектом с нуля и рассматриваем следующие инструменты статического анализа кода.

  • Условные обозначения (Checkstyle)
  • Плохие практики (PMD)
  • Потенциальные ошибки (FindBugs)

Проект построен на Maven. Вместо того чтобы использовать несколько инструментов для этой цели, я искал одно гибкое решение и наткнулся на SonarQube.

Правда ли, что мы можем добиться результатов от Checkstyle, PMD и Findbugs с SonarQube?

Ответы [ 8 ]

92 голосов
/ 19 сентября 2011

Sonar будет запускать CheckStyle, FindBugs и PMD, а также несколько других «плагинов», таких как Cobertura (покрытие кода) по умолчанию для проектов Java.Однако главная дополнительная ценность заключается в том, что он хранит историю в базе данных.Затем вы можете увидеть тренд .Вы улучшаете кодовую базу или делаете наоборот?Только инструмент с памятью может сказать вам об этом.

Вы должны запустить Sonar в вашей системе CI, чтобы могли запускаться даже те вещи, которые требуют некоторого времени для выполнения (например, CPD - детектор вставки копии).И у тебя будет твоя история.Принимая во внимание, что, например, с помощью плагина Eclipse вы будете обнаруживать нарушения быстрее - , что здорово - но у вас будет искушение запускать его реже, если он начинает слишком долго, или запускать меньше "качественных плагинов"(например, пропуск CPD или анализ покрытия пропуска кода).И у вас не будет истории.

Кроме того, Сонар генерирует визуальные отчеты в стиле "Панель инструментов".Что делает его очень легко понять.С Sonar в Дженкинсе вы сможете показать разработчикам и вашему руководству влияние работы, выполненной на качество кодовой базы за последние несколько недель и месяцев.

44 голосов
/ 30 марта 2011

Сонар использует эти 3 инструмента в качестве плагинов и объединяет данные из всех трех, давая дополнительную ценность, показывая графики и тому подобное из этих инструментов. Таким образом, они дополняют сонар.

30 голосов
/ 06 июля 2014

Да и нет. В дополнение к другим ответам.

SonarQube в настоящее время находится на пути к устареванию PMD, Checkstyle и Findbugs и использует их собственную технологию для анализа кода Java (называемую SonarJava ). Они делают это, потому что не хотят тратить свое время на исправление, обновление (или ожидание) тех библиотек (например, для Java 8), которые, например, используют устаревшие библиотеки.

Они также получили новый набор плагинов для вашей личной IDE под названием SonarLint .

7 голосов
/ 25 февраля 2013

Сонар великолепен, но если вы хотите использовать упомянутые инструменты отдельно и при этом иметь хорошие графики, вы можете использовать плагин Analysis Collector как часть вашей сборки Jenkins CI. Небольшое преимущество этого заключается в том, что вы можете проверить свою конфигурацию PMD / Findbugs / Checkstyle в своей SCM и включить ее в свою сборку Maven, а не полагаться на отдельный сервер Sonar.

5 голосов
/ 30 марта 2011

Сонар - это намного больше, чем одни только эти инструменты. Самым большим преимуществом является графический интерфейс, который позволяет легко настраивать что угодно. Статистика, которую он предлагает, очень подробная (строки кода и т. Д.). И даже предлагает отличную поддержку для тестового покрытия и т.д .:)

Здесь вы можете посмотреть: http://nemo.sonarsource.org/

3 голосов
/ 22 мая 2017

... несколько лет спустя: нет, это не так!SonarQube предполагает возможность охватить все правила с помощью своего собственного анализатора, но все еще существуют правила из PMD или CheckStyle, не охватываемые SonarQube.См. Например: PMD ReturnFromFinallyBlock.

3 голосов
/ 22 ноября 2011

Я бы все равно использовал эти инструменты в дополнение к сонару, потому что они могут провалить сборку maven, если кто-то нарушает правило.Где, как сонар, более ретроспективно.

2 голосов
/ 26 июня 2017

Ну, по крайней мере, начиная с SonarQube 6.3+, похоже, что Findbugs (на данный момент) больше не поддерживается как плагин. Sonarsource работает над заменой правил Findbugs своим собственным Java-плагином.

У них даже есть список для статуса замены каждого правила здесь: http://dist.sonarsource.com/reports/coverage/findbugs.html

...