sonarqube + lombok =误报

时间:2017-09-22 10:49:58

标签: sonarqube lombok

import lombok.Data;

@Data
public class Filter {
    private Operator operator;
    private Object value;
    private String property;
    private PropertyType propertyType;
}

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

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

4 个答案:

答案 0 :(得分:16)

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

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

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

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

答案 1 :(得分:4)

我将以下属性添加到jenkins Sonar分析属性中。并为我工作。

sonar.java.libraries=/jenkins/jenkins-user-home/.m2/repository/org/projectlombok/lombok/1.16.20/lombok-1.16.20.jar

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

答案 2 :(得分:1)

我使用的是 sonar-maven-plugin 3.4.0.905、lombok 1.16.18,以及 SonarQube CE Server v8.3.1。

我通过添加解决了这个问题 <sonar.java.libraries>target/classes</sonar.java.libraries> 到 POM 属性。

答案 3 :(得分:0)

您可以配置忽略问题规则:

sonar.issue.ignore.multicriteria=e1
sonar.issue.ignore.multicriteria.e1.ruleKey=java:S1068