java - 如何将某些类排除在代码覆盖范围之外?(爪哇)
问题描述
我已经可以通过在我的 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 文件中。
解决方案
当您使用 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>
参考:
推荐阅读
- grafana - 将 psql 数据源添加到新的 Grafana 安装
- cefsharp - CEF / CEFSharp 编译问题
- ios - class_copyPropertyList 在 Swift 5 中不起作用。原因是什么?
- html - 点击时,手机上的样式会发生变化
- android - 我的服务适用于 android 7.1.1 但不适用于 android 9
- sql - 访问:从表单中的值查询
- c++ - 如何通过链表将最大大小为 20 添加到堆栈中
- python - 如何找到两列与时间之间的差异?
- c# - 根据其他列从重复列中获取单行
- node.js - 如何使用 ssh 远程运行(shebang 前缀)节点脚本?