SonarQube 4.5.4 with Java plugin 3.5无法识别特殊的Lombok注释

aga*_*ner 5 java lombok sonarqube sonarqube-4.5

我最近将SonarQube更新到4.5.4版,将Java插件更新到3.5版.

我们有使用注释的类@Data,但似乎规则squid:S1068不处理这种"特殊"注释.根据https://github.com/SonarSource/sonar-java/pull/257https://jira.sonarsource.com/browse/SONARJAVA-990,自版本3.4以来应该忽略它们.

请参阅附件截图.我忘记配置了什么吗?

在此输入图像描述

更新:

我想确保我们使用的Java插件3.5包含提交https://github.com/benzonico/sonar-java/commit/5e7de16f59450061227d4103f64e351d1f93d9e9的更改,因此我反向设计了.jar文件以查看规则的来源squid:S1068 UnusedPrivateFieldCheck.java.扩展的龙目岛有相关的变化,显然有效!

aga*_*ner 7

最后,我能够在@ benzonico的评论的帮助下回答我自己的问题.

在我们的CI系统的Sonar构建日志中,我发现了许多警告消息: [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
Run Code Online (Sandbox Code Playgroud)

请注意,如果没有sonar.java.binaries=target/classes它不起作用,至少在我们的CI系统(TeamCity)上.

在运行之前,mvn sonar:sonar所有Maven依赖项(也是瞬态的)都会target/dependency通过mvn dependency:copy-dependencies在分析之前运行来移动到该文件夹.

现在CI构建日志更清晰,Lombok注释得到认可.

  • 请注意,这些键(sonar.java.binaries 等)随不同版本的 java 插件而变化,请参阅 http://docs.sonarqube.org/display/PLUG/Java+Plugin+and+Bytecode (2认同)