Sonar +龙目岛@Data批注上的误报

时间:2019-10-07 10:37:52

标签: java sonarqube lombok

在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

它也不起作用。


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

3 个答案:

答案 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 在编译时使用,在运行时无用,因此我们避免将其添加到此目录中。