首页 > 解决方案 > 如何将某些类排除在代码覆盖范围之外?(爪哇)

问题描述

我已经可以通过在我的 POM 文件的标签中添加它来排除带有声纳立方体报告的类。

 <properties>
        <java.version>1.8</java.version>
        <sonar.exclusions> 
            /src/main/java/com/example/org/test/mainpackage/message/**/*
            ,
            /src/main/java/com/example/org/test/mainpackage/security/jwt/**/*
            ,
            /src/main/java/com/example/org/test/mainpackage/security/services/**/*
            ,
            /src/main/java/com/example/org/test/mainpackage/controller/AuthRestAPIs.java
            ,
            /src/main/java/com/example/org/test/mainpackage/controller/TestRestAPIs.java
        </sonar.exclusions>
    </properties>

但是,相同的代码在本地运行以测试代码覆盖率时根本不起作用。

我在哪里可以使用 Maven 和 Spring Boot 以编程方式进行设置?

我已经可以通过

设置 > 构建、执行、部署 > 排除 > [要排除的类]

或通过

编辑配置 > 选择代码覆盖率选项卡 > 然后添加我想要排除或仅包含在代码覆盖率报告中的包或类。

我想要的是对要排除的类进行编码,即在 pom 文件中,就像我在排除声纳 qube 的代码时所做的那样。

为了使它简短。我如何以编程方式执行此操作?

我想以编程方式执行此操作的原因是,我为排除在代码覆盖范围中报告的文件而执行的上述两个步骤是,我的所有项目中都没有包含可以推送到存储库中的文件,因此我所做的更改对于排除将反映在所有将从 git 存储库中提取的人身上。在没有添加任何文件或配置的情况下,我可以推送并反映到 repo 中的所有内容。这意味着我的排除项仅适用于本地,不适用于其他人。正确的?。所以在这里我要求一种以编程方式执行的方法,例如将排除项放入 POM 文件中。

标签: javaspringmavenspring-boot

解决方案


当您使用 Maven 时,您需要在 jacoco 插件中配置排除项,该插件用于捕获覆盖率统计数据并将其传递给声纳。

<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.1</version>
<executions>
        <execution>
            <id>prepare-agent</id>
            <goals>
                <goal>prepare-agent</goal>
            </goals>
        </execution>
        <execution>
            <id>report</id>
            <phase>prepare-package</phase>
            <goals>
                <goal>report</goal>
            </goals>
            <configuration>
                <!-- Sets the path to the file which contains the execution data. -->
                <dataFile>target/jacoco.exec</dataFile>
                <!-- Sets the output directory for the code coverage report. -->
                <outputDirectory>target/jacoco-ut</outputDirectory>
            </configuration>
        </execution>
</executions>
<configuration>
    <systemPropertyVariables>
        <jacoco-agent.destfile>target/jacoco.exec</jacoco-agent.destfile>
    </systemPropertyVariables>
    <excludes>
        <exclude>snmaddula/app/domain/*.class</exclude>
        <exclude>snmaddula/app/exception/*.class</exclude>
        <exclude>snmaddula/app/filter/*.class</exclude>
        <exclude>snmaddula/app/App.class</exclude>
    </excludes>
</configuration>
</plugin>

参考:


推荐阅读