8

我从 Sonar 中的 lombok 生成的代码中得到了很多代码气味。FE:

方法 Dto.hashCode() 将返回结果存储在本地,然后立即返回


Dto.equals(Object) 过于复杂,圈复杂度为58

我如何指出声纳应该从分析中跳过?

更新

我已经试过了。我lombok.config在根目录中的文件是:

config.stopBubbling = true
lombok.addLombokGeneratedAnnotation = true
lombok.equalsAndHashCode.callSuper = call

它没有帮助

我已经尝试过了:sonarqube + lombok = false positives 我已经更新:sonar-project.properties在根目录中:

sonar.sources=src/main
sonar.tests=src/test
sonar.language=java
sonar.java.binaries=build/classes
sonar.junit.reportPaths=build/test-results/test/
sonar.jacoco.reportPaths=build/jacoco/jacocoTest.exec
sonar.java.libraries=.gradle/caches/**/lombok-*.jar

它也不起作用。


请不要关闭它。这不是重复。

4

3 回答 3

1

lombok 生成的方法需要使用@Generated进行注释。Sonarqube 然后将忽略它们。

只需lombok.config在项目根目录下添加一个文件,内容如下:

lombok.addLombokGeneratedAnnotation=true
于 2019-10-07T10:48:59.320 回答
1

我只是有同样的问题。我正在使用声纳扫描仪并发现它需要使用命令行参数设置 Lombok jar 文件。

例如:

sonar-scanner -D sonar.java.libraries=/home/gitlab-runner/.gradle/caches/modules-2/files-2.1/org.projectlombok/lombok/1.18.10/625fc0055674dff70dbc76efa36d0f2c89b04a24/lombok-1.18.10.jar

现在 SonarQube 没有显示与 Lombok 注释相关的任何问题。

于 2019-10-28T07:30:04.167 回答
0

确保它lombok.jar位于sonar.java.libraries属性中引用的目录中。

我有同样的问题,我添加了属性,但我已经引用了我的运行时包的目录,它不包含lombok.jar

lombok.jar在编译时使用而在运行时无用,因此我们避免将其添加到此目录中。

于 2021-07-01T07:54:01.777 回答