【问题标题】:Sonar + Lombok false positives on @Data annotationSonar + Lombok 对 @Data 注释的误报
【发布时间】:2020-02-04 15:36:26
【问题描述】:

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

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


Dto.equals(对象) 过于复杂,圈复杂度为 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

它也不起作用。


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

【问题讨论】:

标签: java sonarqube lombok


【解决方案1】:

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

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

lombok.addLombokGeneratedAnnotation=true

【讨论】:

  • 很抱歉已经这样做了。我会更新问题。仅对代码测试覆盖率有帮助:(
【解决方案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 注释相关的任何问题。

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2017-03-15
      • 2016-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-12
      • 2014-03-12
      相关资源
      最近更新 更多