Java Sonarqube-使用Lombok@data删除此未使用的私有字段代码气味
在我的Java项目中,我有一大堆代码的味道,比如:Java Sonarqube-使用Lombok@data删除此未使用的私有字段代码气味,java,sonarqube,lombok,Java,Sonarqube,Lombok,在我的Java项目中,我有一大堆代码的味道,比如: @Data public class Foobar extends Foo { private String baz; } 我的lombok.config位于pom.xml旁边,看起来像: config.stopBubbling = true lombok.addLombokGeneratedAnnotation = true 这带来了代码覆盖率数字,没有清除代码气味 看来我不是遇到这个问题的人 就版本而言: Lombok 1.
@Data
public class Foobar extends Foo {
private String baz;
}
我的lombok.config
位于pom.xml
旁边,看起来像:
config.stopBubbling = true
lombok.addLombokGeneratedAnnotation = true
这带来了代码覆盖率数字,没有清除代码气味
看来我不是遇到这个问题的人
就版本而言:
- Lombok 1.18.8(也尝试使用1.18.10)
- Jacoco 0.8.4
- SonarQube 7.9.1.27448
- SonarQube扫描仪4.0.0.1744
我在这方面见过一些类似的问题,但都是5岁左右的问题,所以我不相信这些答案仍然有效。几个月前,我也遇到过同样的问题。我的jacoco版本是0.8.2,lombok版本是v1.16.16。我记得在我将lombok.config添加到项目的根目录下之后,问题就解决了。 请注意,如果您为一个已经标记为数据的类定义了自己的构造函数,那么覆盖率将由调用测试的构造函数的数量来计算 如果这没用的话。您可以通过在Jacoco config/SonarQube config中排除它们来找到解决方法 在jacoco中排除的示例:
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.2</version>
<configuration>
<excludes>
<exclude>**/your_class_path/**</exclude>
</excludes>
</configuration>
<executions>
<execution>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<!-- attached to Maven test phase -->
<execution>
<id>report</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
org.jacoco
jacocomaven插件
0.8.2
**/您的课程路径/**
配制剂
报告
测试
报告
对于SonarQube,在调用mvn sonar:sonar时,可以使用-Dsonar.includes参数进行包含和-Dsonar.Excludes参数这不是代码覆盖率(计算正确),而是代码气味问题。我有许多类(和项目)使用这种格式,所以我不想排除Directories。如果这样,我认为您可以通过向pom中添加sonar.issue.ignore属性来忽略代码气味,只针对这些类。在运行
mvn sonar:sonar
时发现代码气味消失了,不确定原因。。但我要这样做,而不是使用声纳扫描仪cli