我最近将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包含了提交的更改,因此我反向设计.jar文件以查看规则squid:S1068
UnusedPrivateFieldCheck.java
的来源。扩展的龙目岛有相应的变化,显然有效!
答案 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,而不是目标/依赖。