Интеграция Eclipse / SonarQube: как обрабатывать Checkstyle / PMD / FindBugs

Если я работаю с Eclipse и хочу использовать SonarQube как единый источник правил кода, я понимаю, что мне нужно использовать плагин SonarLint. Однако SonarLint будет проверять только правила Squid, а не правила Checkstyle / PMD / Findbugs (хотя их можно использовать в SonarQube).

Мой вопрос: если в проекте используется набор правил Checkstyle / PMD / Findbugs, как следует обрабатывать эти правила, чтобы разработчики Eclipse также могли их видеть?

Пожалуйста, примите во внимание следующие моменты:

  • Я не хочу вручную экспортировать правила из SonarQube и устанавливать плагины Eclipse для Checkstyle / PMD / Findbugs и настраивать их с помощью экспортированных правил. Это слишком громоздко.
  • Я вижу, что некоторые ошибки Checkstyle / PMD / Findbug помечены как устаревшие и есть замены для squid. Это нормально. Но что мне делать со всеми правилами, которые не устарели?

person Jörn    schedule 14.06.2017    source источник
comment
Вопрос в том, каковы ваши настройки? например. у нас есть скрипт gradle, который устанавливает все конфигурации checkstyle / firebug, и крючок фиксации для git, который это проверяет. Вдобавок к этому, в зависимости от вашего рабочего процесса, или если вы используете запросы на вытягивание, существуют плагины для отображения этих проблем в запросах на вытягивание. - насколько я знаю, это единственные варианты, которые у вас есть.   -  person Simon Schrottner    schedule 15.06.2017
comment
Вы либо устанавливаете отдельные плагины, либо используете SonarLint. Нет третьего варианта афаик. SonarLint использует все, что настроено в профиле качества на сервере. Если ваш профиль качества SonarQube включает в себя Checkstyle, FindBugs и т. Д., SonarLint также проверит их.   -  person barfuin    schedule 16.06.2017
comment
@Thomas Jensen: SonarLint не проверяет правила Checkstyle / Findbugs / PMD, даже если они успешно проверены в SonarQube (см. sonarlint.org/eclipse, часто задаваемый вопрос № 4). Заявление от SonarLint: SonarLint поддерживает анализаторы SonarSource (SonarJava, SonarJS, ...), а также настраиваемые правила, расширяющие эти анализаторы SonarSource. Мы не планируем поддерживать плагины, запускающие сторонние анализаторы (например, PMD, Android Lint, JSLint ...). В большинстве случаев эти анализаторы уже имеют специальную интеграцию с IDE.   -  person Jörn    schedule 19.06.2017
comment
Чёрт возьми, это так раздражает, что в каждом отдельном выпуске они упускают новые возможности. Извините, я пропустил, что эта функция тоже исчезла. Итак, ваш единственный вариант - установить отдельные плагины, как ни печально это звучит.   -  person barfuin    schedule 19.06.2017


Ответы (2)


Вот как мы решили эту проблему (решение 90%):

  1. Заменены все устаревшие правила Checkstyle / PMD / FindBugs на рекомендованные правила squid. -> Это оставило более 80 правил Checkstyle, 16 PMD и 0 правил FindBugs (и 60 правил squid), устраняя FindBugs.
  2. Используйте плагины SonarLint + Checkstyle в Eclipse. Для Checkstyle мы экспортируем XML-правила правил из SonarQube, помещаем их в систему контроля версий и настраиваем плагин Checkstyle для его использования.
  3. Игнорируйте PMD в Eclipse и используйте прямой доступ браузера к SonarQube, чтобы увидеть нарушения правил PMD при проверке кода. Это избавляет нас от установки / настройки PMD для «всего 16 правил».

Решение делает около 90% наших правил видимыми в Eclipse. Цена, которую мы платим:

  • Установите и настройте 2 плагина для проверки правил вместо 1.
  • Вручную обновляйте XML правил Checkstyle каждый раз, когда обновления SonarQube приводят к изменениям.
  • Нарушения правил squid видны только для открытых классов и в отдельном представлении «SonarLint On-the-fly».
  • Только 90% правил видны непосредственно в Eclipse.

Мы были бы очень рады, если бы однажды SonarLint отобразил все нарушения правил SonarQube в стандартном представлении Eclipse «Проблемы», охватывая рабочую область и области выбора. Тогда нам понадобится только один плагин Eclipse, и SonarQube будет единственным хранилищем правил.

person Jörn    schedule 19.07.2017

Это предложение разработчикам SonarLint предоставить решение: SonarLint должен иметь возможность извлекать все нарушения из SonarQube и отображать их в стандартном представлении «Проблемы» в Eclipse. Таким образом, SonarLint не должен выполнять правила Checkstyle / Findbugs / PMD локально, поэтому проблем с совместимостью / поддержкой не возникнет. В то же время разработчик Eclipse видит все нарушения, не выходя из Eclipse.

person Jörn    schedule 21.06.2017
comment
На самом деле это было возможно и в более ранних версиях. % - / Однако у него есть недостаток в том, что он часто устаревает. Разработчики обычно хотят немедленно получить отзывы о коде, который они пишут. - person barfuin; 22.06.2017
comment
Я понимаю. Однако, ИМХО, иметь возможно устаревшую информацию лучше, чем ее не иметь. Для разработчика было бы важно увидеть время, когда было обнаружено конкретное нарушение правила. И должна быть возможность запустить SonarLint для обновления самого себя из SonarQube. - person Jörn; 23.06.2017