sonarqube + lombok =误报

oku*_*ane 20 lombok sonarqube

import lombok.Data;

@Data
public class Filter {
    private Operator operator;
    private Object value;
    private String property;
    private PropertyType propertyType;
}
Run Code Online (Sandbox Code Playgroud)

对于上面的代码,有4个squid:S1068报告有关未使用的私有字段.(即使它们被lombok生成的getter使用).我已经看到一些与"lombok.Data"注释的支持有关的修复已被推送,但仍然有这些恼人的误报.

版本:SonarQube 6.4.0.25310
SonarJava 4.13.0.11627
用于Jenkins的SonarQube扫描仪(2.6.1)

Mic*_*eam 18

这种情况应该由SonarJava完美处理.至少从版本3.14(SONARJAVA-1642)开始考虑Lombok注释.您遇到的问题是由于Java项目配置错误造成的.无需编写任何自定义规则来处理此问题,分析器本身就支持这一规则.

SonarJava读取字节码以了解使用哪个注释.因此,如果您不从依赖项提供字节码,则在您自己的代码的字节码之上,分析器将表现不正常.

特别是,设置属性sonar.java.libraries应解决您的问题.请注意,使用SonarQube maven或gradle扫描仪时,通常会自动设置此属性.

请查看文档以正确配置您的项目:https://docs.sonarqube.org/display/PLUG/Java+Plugin+and+Bytecode

  • 现在我不知道如何在 jenkins 扫描仪插件中设置 `sonar.java.libraries`。现在使用`sonar.java.libraries=$HOME/.m2/**/*.jar`。 (2认同)
  • sonar.java.libraries的实际值应该是多少?我们要设置$ {classpath}还是仅设置lombok.jar的路径? (2认同)

小智 8

我在詹金斯声纳分析属性中添加了以下属性。为我工作。

sonar.java.libraries=/jenkins/jenkins-user-home/.m2/repository/org/projectlombok/lombok/1.16.20/lombok-1.16.20.jar
Run Code Online (Sandbox Code Playgroud)

lombok v1.16.20是我的项目中的lombok版本。