带有Java插件3.5的SonarQube 4.5.4并不能识别特殊的Lombok注释

时间:2015-09-08 08:32:23

标签: java sonarqube lombok sonarqube-4.5

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

我们有使用@Data注释的类,但似乎规则squid:S1068无法处理此问题"特殊"注释。根据{{​​3}}和https://github.com/SonarSource/sonar-java/pull/257,版本3.4应该忽略它们。

请参阅随附的屏幕截图。我忘记配置了什么吗?

https://jira.sonarsource.com/browse/SONARJAVA-990

更新:

我想确保我们使用的Java插件3.5包含了提交enter image description here的更改,因此我反向设计.jar文件以查看规则squid:S1068 UnusedPrivateFieldCheck.java的来源。扩展的龙目岛有相应的变化,显然有效!

2 个答案:

答案 0 :(得分: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

请注意,如果没有sonar.java.binaries=target/classes,它就无法运行,至少在我们的CI系统(TeamCity)上。

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

现在CI构建日志更清晰,Lombok注释得到识别。

答案 1 :(得分:4)

同样可以直接添加到命令行:

步骤:

CD到您要运行它的路径,当您运行sonar-runner时添加以下参数:

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

注意:对我来说,它是jar的目标/ lib,而不是目标/依赖。