Java / mvn 代码覆盖和冗余?

Java / mvn code coverage AND redundancy?

有一个单体应用程序,运行s JUnit 通过 Surefire 和 Maven 进行测试。我看到有几个选项可以告诉我有关代码覆盖率的信息,但我正在尝试寻找一些不同的东西:

具体来说,我想 运行 生成报告的 mvn 构建(或使用执行相同操作的 Eclipse 插件),这将给我一种查看几乎所有测试都在做什么的方法同样的事情,此外 应用程序中没有很好覆盖的部分。有这样的东西吗?

我没有涵盖 冗余 部分,但对于覆盖范围,您可以使用 Jacoco,使用 maven 很容易设置:

<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-site-plugin</artifactId>
                <version>3.6</version>
            </plugin>
        </plugins>
    </pluginManagement>

    <plugins>
        <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>0.7.7.201606060606</version>
            <executions>
                <execution>
                    <id>default-prepare-agent</id>
                    <goals>
                        <goal>prepare-agent</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

    </plugins>
</build>

<reporting>
    <excludeDefaults>true</excludeDefaults>
    <outputDirectory>${project.build.directory}/site</outputDirectory>
    <plugins>

        <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
        </plugin>

    </plugins>
</reporting>

要生成报告,请键入 mvn site。报告将在 target/site.

下创建

要结合@alexbt 的回答,您可以利用 Jacoco 的报告,但将该报告插入 SonarQube(您可以轻松地在本地安装),然后获取连接到本地 SonarQube 的 SonarLint Eclipse 插件实例以获得您想要的集成。

此外,您还可以进行复制和粘贴检测以及一些 冗余代码检查。我说 some 因为 public 方法永远不会被标记为冗余。

以下是有和没有重大问题的在线报告示例

一个好处是你可以为你的团队集中规则。