[英]SonarQube 4.5.4 with Java plugin 3.5 doesn't recognize special Lombok annotations
我最近将 SonarQube 更新到 4.5.4 版,将 Java 插件更新到 3.5 版。
我们squid:S1068
@Data
注释的类,但规则squid:S1068
似乎不处理这种“特殊”注释。 尽管根据https://github.com/SonarSource/sonar-java/pull/257和https://jira.sonarsource.com/browse/SONARJAVA-990 的版本 3.4,它们应该被忽略。
请参阅随附的屏幕截图。 我忘了配置什么吗?
更新:
我想确保我们使用的 Java 插件 3.5 已包含提交的更改https://github.com/benzonico/sonar-java/commit/5e7de16f59450061227d4103f64e351d1f93d9e9所以我对 .jar 文件进行了逆向工程以查看规则squid:S1068
UnusedPrivateFieldCheck.java
。 与 Lombok 相关的扩展更改已经存在并且显然有效!
最后,我能够在@ 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
之前mvn sonar:sonar
所有Maven依赖项(也是瞬态的)通过在分析之前运行mvn dependency:copy-dependencies
被移动到文件夹target/dependency
。
现在CI构建日志更清晰,Lombok注释得到认可。
同样,您可以直接添加到命令行:
脚步:
CD到您要运行它的路径,当您运行sonar-runner时添加以下参数:
-Dsonar.java.binaries=target/classes -Dsonar.java.libraries=target/lib/*.jar
注意:对我来说,它是jar的目标/ lib,而不是目标/依赖。
添加这些属性:
-Dsonar.language=java
-Dsonar.java.binaries=target/classes
-Dsonar.java.libraries=target/lib/*.jar
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.