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

标签 java sonarqube lombok sonarqube-4.5

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

我们有使用 @Data 注释的类,但规则 squid:S1068 似乎不处理这种“特殊”注释。尽管根据 https://github.com/SonarSource/sonar-java/pull/257 从 3.4 版开始应该忽略它们和 https://jira.sonarsource.com/browse/SONARJAVA-990 .

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

enter image description here

更新:

我想确保我们使用的 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 dependency:copy-dependencies 将所有 Maven 依赖项(也包括临时依赖项)移动到文件夹 target/dependency 现在分析之前。

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

关于java - 带有 Java 插件 3.5 的 SonarQube 4.5.4 无法识别特殊的 Lombok 注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32452931/

相关文章:

java - Lombok :构造函数未定义

java - JDBC 中 hibernate 异常

Java 将 long 转换为 currency

java - 使用正则表达式拆分简单的数学表达式

java - 编写 Sonar 插件时应该使用哪个 JDK 版本?

sonarqube + lombok = 误报

sonarqube - 将 Slather 报告发布到 SonarQube

java - 在 codhaus 和 fastexml 上使用 lombok 的 Jackson ObjectMapper 默认值

java - 如果超出特定时区,如何捕获基于 UTC 的事件?

intellij-idea - 使用 Lombok 的 @Slf4j 和 Intellij 进行构建 : Cannot find symbol log