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)
答案 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