Sonarqube-使用Lombok @data删除此未使用的私有字段代码气味

时间:2019-10-10 08:54:45

标签: java sonarqube lombok

在我的Java项目中,我有很多类似这样的代码气味:

ThreadPoolExecutor#execute

我的Future坐在@Data public class Foobar extends Foo { private String baz; } 旁边,看起来像:

lombok.config

这显示了代码覆盖率编号,但尚未清除代码气味。

似乎我不是遇到此问题的only人。

在版本方面:

  • Lombok 1.18.8(也已在1.18.10中尝试过)
  • Jacoco 0.8.4
  • SonarQube 7.9.1.27448
  • SonarQube扫描仪4.0.0.1744

我已经看到了一些类似的问题,但是它们都是5岁左右,所以我认为答案仍然有效。

1 个答案:

答案 0 :(得分:0)

几个月前,我也遇到了同样的问题。我的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参数