sonarqube + lombok = 误报
sonarqube + lombok = false positives
import lombok.Data;
@Data
public class Filter {
private Operator operator;
private Object value;
private String property;
private PropertyType propertyType;
}
对于上面的代码,有 4 squid:S1068 个关于未使用的私有字段的报告。 (即使它们被 lombok 生成的吸气剂使用)。我已经看到一些与支持 "lombok.Data" 注释相关的修复已被推送,但仍然存在这些烦人的误报。
版本:
SonarQube 6.4.0.25310
SonarJava 4.13.0.11627
Jenkins 的 SonarQube 扫描仪 (2.6.1)
Sonar应该可以完美处理这种情况Java。至少从版本 3.14 (SONARJAVA-1642) 开始考虑 Lombok 注释。您遇到的问题是由于 Java 项目配置错误造成的。无需编写任何自定义规则来处理此问题,分析器本身就支持此功能。
SonarJava 读取字节码以了解使用了哪个注解。因此,如果您 不提供来自您的依赖项的字节码 ,在您自己的代码的字节码之上,分析器将表现不稳定。
特别是,设置 属性 sonar.java.libraries
应该可以解决您的问题。请注意,此 属性 通常在使用 SonarQube maven 或 gradle 扫描仪时自动设置。
请查看文档以正确配置您的项目:https://docs.sonarqube.org/display/PLUG/Java+Plugin+and+Bytecode
我在 Sonar 分析属性文件中添加了以下 属性。它对我有用。
sonar.java.libraries=${env.HOME}/.m2/repository/org/projectlombok/lombok/**/*.jar
lombok v1.16.20 是我项目中的 lombok 版本。
我正在使用 sonar-maven-plugin
3.4.0.905,lombok
1.16.18,SonarQube CE 服务器 v8.3.1。
我通过添加解决了这个问题
<sonar.java.libraries>target/classes</sonar.java.libraries>
到 POM 属性。
您可以配置忽略问题规则:
sonar.issue.ignore.multicriteria=e1
sonar.issue.ignore.multicriteria.e1.ruleKey=java:S1068
import lombok.Data;
@Data
public class Filter {
private Operator operator;
private Object value;
private String property;
private PropertyType propertyType;
}
对于上面的代码,有 4 squid:S1068 个关于未使用的私有字段的报告。 (即使它们被 lombok 生成的吸气剂使用)。我已经看到一些与支持 "lombok.Data" 注释相关的修复已被推送,但仍然存在这些烦人的误报。
版本:
SonarQube 6.4.0.25310
SonarJava 4.13.0.11627
Jenkins 的 SonarQube 扫描仪 (2.6.1)
Sonar应该可以完美处理这种情况Java。至少从版本 3.14 (SONARJAVA-1642) 开始考虑 Lombok 注释。您遇到的问题是由于 Java 项目配置错误造成的。无需编写任何自定义规则来处理此问题,分析器本身就支持此功能。
SonarJava 读取字节码以了解使用了哪个注解。因此,如果您 不提供来自您的依赖项的字节码 ,在您自己的代码的字节码之上,分析器将表现不稳定。
特别是,设置 属性 sonar.java.libraries
应该可以解决您的问题。请注意,此 属性 通常在使用 SonarQube maven 或 gradle 扫描仪时自动设置。
请查看文档以正确配置您的项目:https://docs.sonarqube.org/display/PLUG/Java+Plugin+and+Bytecode
我在 Sonar 分析属性文件中添加了以下 属性。它对我有用。
sonar.java.libraries=${env.HOME}/.m2/repository/org/projectlombok/lombok/**/*.jar
lombok v1.16.20 是我项目中的 lombok 版本。
我正在使用 sonar-maven-plugin
3.4.0.905,lombok
1.16.18,SonarQube CE 服务器 v8.3.1。
我通过添加解决了这个问题
<sonar.java.libraries>target/classes</sonar.java.libraries>
到 POM 属性。
您可以配置忽略问题规则:
sonar.issue.ignore.multicriteria=e1
sonar.issue.ignore.multicriteria.e1.ruleKey=java:S1068