Является ли замена SonarQube для Checkstyle, PMD, FindBugs?

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

  • Соглашения (Checkstyle)
  • Плохая практика (PMD)
  • Потенциальные ошибки (FindBugs)

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

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

Ответ 1

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

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

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

Ответ 2

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

Ответ 3

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

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

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

Ответ 4

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

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

Ответ 5

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

Ответ 6

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

Ответ 7

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

Ответ 8

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

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