在Sonar中,我从lombok生成的代码中发现了很多代码味道。 F.E。:
方法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
它也不起作用。
请不要关闭它。这不是重复。
答案 0 :(得分:0)
lombok生成的方法需要用@Generated进行注释。然后,Sonarqube将忽略它们。
只需在项目根目录中添加文件lombok.config
,内容如下:
lombok.addLombokGeneratedAnnotation=true
答案 1 :(得分:0)
我只是遇到了同样的问题。我正在使用声纳扫描仪,发现它需要使用命令行参数设置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注释有关的任何问题。
答案 2 :(得分:0)
确保 lombok.jar
位于 sonar.java.libraries
属性中引用的目录中。
我遇到了同样的问题,我添加了属性,但我引用了不包含 lombok.jar
的运行时包目录!
lombok.jar
在编译时使用,在运行时无用,因此我们避免将其添加到此目录中。