我的 Java 项目中围绕这样的代码有很多代码味道:
@Data
public class Foobar extends Foo {
private String baz;
}
我的
lombok.config
坐在 pom.xml
旁边,看起来像:
config.stopBubbling = true
lombok.addLombokGeneratedAnnotation = true
这带来了代码覆盖率数字,但并未清除代码异味。
看来我不是唯一遇到这个问题的人。
就版本而言:
我见过一些类似的问题,但它们都是~5年前的问题,所以我不相信答案仍然有效。
几个月前我也遇到过和你同样的问题。我的jacoco版本是0.8.2,lombok是v1.16.16。我记得在项目根目录下添加lombok.config后问题就消失了。 请注意,如果您为已标记为 Data 的类定义自己的构造函数,则覆盖率将根据您的测试被调用的构造函数数量来计算。
如果这没有帮助。您可以通过在 Jacoco 配置/SonarQube 配置中排除它们来找到解决方法
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>
对于 SonarQube,您可以在调用 mvn sonar:sonar 时使用 -Dsonar.inclusions 参数进行包含,并使用 -Dsonar.exclusions 参数