SonarQube 4.5.4 с плагином Java 3.5 не распознает специальные аннотации Lombok

Недавно я обновил SonarQube до версии 4.5.4 и подключаемый модуль Java до версии 3.5.

У нас есть классы с аннотацией @Data, но кажется, что правило squid:S1068 не обрабатывает эти "специальные" аннотации. Хотя их следует игнорировать, начиная с версии 3.4, согласно https://github.com/SonarSource/sonar-java/pull/257 и https://jira.sonarsource.com/browse/SONARJAVA-990.

Пожалуйста, смотрите прикрепленный скриншот. Я забыл что-то настроить?

введите описание изображения здесь

ОБНОВИТЬ:

Я хотел убедиться, что наш используемый плагин Java 3.5 включает изменения коммита https://github.com/benzonico/sonar-java/commit/5e7de16f59450061227d4103f64e351d1f93d9e9, поэтому я реконструировал файл .jar, чтобы увидеть источник правила squid:S1068 UnusedPrivateFieldCheck.java. Расширенные изменения, выпущенные Lombok, есть и, по-видимому, работают!


person agassner    schedule 08.09.2015    source источник
comment
Как вы проводите анализ (maven или sonar-runner)? как вы предоставляете байт-код (и особенно байт-код аннотации @Data) анализатору? если байт-код не указан, тип не будет разрешен, и возникнет проблема.   -  person benzonico    schedule 08.09.2015
comment
Для анализа используем плагин Sonar Maven: mvn sonar:sonar -Dsonar.branch=some_branch_name. Я думаю, что в настоящее время мы не предоставляем байт-код. @benzonico Это очень полезное утверждение, сейчас я попробую ваше предложение.   -  person agassner    schedule 08.09.2015
comment
С maven это обычно делается автоматически плагином maven.   -  person benzonico    schedule 08.09.2015
comment
Работал на меня. stackoverflow.com/questions/46362965/   -  person Barış Özdemir    schedule 29.05.2018


Ответы (2)


Наконец-то я могу ответить на свой вопрос с помощью комментария @benzonico.

В журнале сборки Sonar нашей системы CI я нашел много предупреждающих сообщений: [WARN] [16:51:48.435] Class 'com/bla/bla/Application' is not accessible through the ClassLoader.

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

sonar.java.binaries=target/classes
sonar.java.libraries=target/dependency/*.jar

Обратите внимание, что без sonar.java.binaries=target/classes это не работает, по крайней мере, в нашей системе CI (TeamCity).

Перед запуском mvn sonar:sonar все зависимости Maven (в том числе временные) перемещаются в папку target/dependency, запустив mvn dependency:copy-dependencies перед анализом сейчас.

Теперь журнал сборки CI стал чище, аннотации Lombok распознаются.

person agassner    schedule 08.09.2015
comment
обратите внимание, что эти ключи (sonar.java.binaries и т. д.) меняются в разных версиях подключаемого модуля Java, см. docs.sonarqube.org/display/PLUG/Java+Plugin+and+Bytecode - person evandor; 06.11.2015
comment
mvn dependency:copy-dependencies помог мне, спасибо! - person Clans; 12.04.2021

аналогично вы можете добавить в командную строку напрямую:

Шаги:

CD в ​​путь, по которому вы хотите его запустить, и при запуске sonar-runner добавьте следующие параметры:

-Dsonar.java.binaries=target/classes -Dsonar.java.libraries=target/lib/*.jar

Примечание. Для меня это была цель/библиотека для банок, а не цель/зависимость.

person Bojan Petkovic    schedule 19.10.2015