Sonar + Lombok 对 @Data 注释的误报

问题描述 投票:0回答:4

我从 Sonar 中 lombok 生成的代码中得到了很多代码味道。 F.E.:

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


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

我如何指出声纳应从分析中跳过此操作?

更新

我已经试过了。我的根目录中的

lombok.config
文件是:

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

这没有帮助

我已经尝试过了:sonarqube + lombok =误报 我已将根目录中的:

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

也不起作用。


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

java sonarqube lombok
4个回答
2
投票

我刚刚遇到了同样的问题。我正在使用声纳扫描仪,并发现它需要使用命令行参数设置 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 注释相关的问题。


1
投票

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

只需在项目根目录下添加一个文件

lombok.config
,内容如下:

lombok.addLombokGeneratedAnnotation=true

0
投票

确保

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

我遇到了同样的问题,我添加了该属性,但我引用了我的运行时包的目录,该目录不包含

lombok.jar

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


0
投票

对我来说,问题与声纳下载优化有关。

为了解决这个问题,我只需在我的

true
中将此属性从
false
更改为
build.gradle

sonar {
    properties {
        // Download optimization deve ficar desabilitado devido a um problema do Sonar com as regras do Lombok
        // https://community.sonarsource.com/t/a-lot-of-false-positive-issues-related-to-lombok-after-sonarqube-upgrade/109764
        property "sonar.plugins.downloadOnlyRequired", "false"

        // ....
    }
}

更多详细信息:https://community.sonarsource.com/t/a-lot-of-false-positive-issues-lated-to-lombok-after-sonarqube-upgrade/109764/3

© www.soinside.com 2019 - 2024. All rights reserved.