带有 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 版。
我们用 @Data
注释了 类,但规则 squid:S1068
似乎无法处理此 "special" 注释。尽管根据 https://github.com/SonarSource/sonar-java/pull/257 and 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
之前,所有 Maven 依赖项(也包括临时依赖项)都被 运行 mvn dependency:copy-dependencies
移动到文件夹 target/dependency
现在分析之前。
现在 CI 构建日志更清晰,Lombok 注释得到识别。
同样可以直接在命令行添加:
步数:
CD到你要运行的路径上,当你运行sonar-运行ner时加入如下参数:
-Dsonar.java.binaries=target/classes -Dsonar.java.libraries=target/lib/*.jar
注意:对我来说,罐子是 target/lib,而不是 target/dependency。
添加这些属性:
-Dsonar.language=java
-Dsonar.java.binaries=target/classes
-Dsonar.java.libraries=target/lib/*.jar
我最近将 SonarQube 更新到 4.5.4 版,并将 Java 插件更新到 3.5 版。
我们用 @Data
注释了 类,但规则 squid:S1068
似乎无法处理此 "special" 注释。尽管根据 https://github.com/SonarSource/sonar-java/pull/257 and https://jira.sonarsource.com/browse/SONARJAVA-990.
请参阅附件截图。我是不是忘记配置什么了?
更新:
我想确保我们使用的 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
之前,所有 Maven 依赖项(也包括临时依赖项)都被 运行 mvn dependency:copy-dependencies
移动到文件夹 target/dependency
现在分析之前。
现在 CI 构建日志更清晰,Lombok 注释得到识别。
同样可以直接在命令行添加:
步数:
CD到你要运行的路径上,当你运行sonar-运行ner时加入如下参数:
-Dsonar.java.binaries=target/classes -Dsonar.java.libraries=target/lib/*.jar
注意:对我来说,罐子是 target/lib,而不是 target/dependency。
添加这些属性:
-Dsonar.language=java
-Dsonar.java.binaries=target/classes
-Dsonar.java.libraries=target/lib/*.jar