Sonarqube - 使用 Lombok @data 删除此未使用的私有字段 Code Smell

问题描述 投票:0回答:1

我的 Java 项目中围绕这样的代码有很多代码味道:

@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)
  • 雅可可0.8.4
  • SonarQube 7.9.1.27448
  • SonarQube 扫描仪 4.0.0.1744

我见过一些类似的问题,但它们都是~5年前的问题,所以我不相信答案仍然有效。

java sonarqube lombok
1个回答
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 参数

© www.soinside.com 2019 - 2024. All rights reserved.