繁体   English   中英

带有 Java 插件 3.5 的 SonarQube 4.5.4 无法识别特殊的 Lombok 注释

[英]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/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 与 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM