如何将某些类排除在代码覆盖范围之外? (爪哇)

新手上路,请多包涵

我已经可以通过将其添加到我的 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 的代码一样。

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

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

原文由 iamjoshua 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 619
2 个回答

当您使用 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>

参考:

原文由 snmaddula 发布,翻译遵循 CC BY-SA 4.0 许可协议

这不是我真正想要的答案。但就目前而言,这对我有用。仍在寻找一种通过 pom 文件、java 或 beans 执行此操作的方法。谢谢

解决方案:

因此,如果您在项目的运行配置中进行了排除。那就是通过我在问题中提到的第二步

编辑配置 > 代码覆盖率。 在此处输入图像描述


然后实际添加您的排除项。您只需勾选共享文本框并单击应用。您所做的排除将在您的项目目录下提供

.idea/runConfigurations/[您所做的排除和其他运行配置的 xml 文件]。 在此处输入图像描述

为了能够推动这个,只需删除

.idea 在你的 .gitignore 文件中。 在此处输入图像描述


然后您就可以将运行配置文件推送到您的存储库中供其他人使用。或导出以便不必在 intellij 的编辑配置中手动配置。

PS:这可能会影响 Sonarqube 中的覆盖率报告。您必须撤消此操作并从您的存储库中取消推送本地运行配置才能使用您的声纳 qubes 类排除项。由于我的某种原因,它跳过了我在执行此操作之前所做的所有排除。

原文由 iamjoshua 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题