res*_*a87 80 configuration maven jacoco jacoco-maven-plugin
我有一个maven多模块项目,我正在使用jacoco-maven进行代码覆盖率报告.不应该报告某些类,因为它们是Spring配置,我对它们不感兴趣.
我已经宣布了maven-jacoco插件如下:
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.2.201409121644</version>
<configuration>
<outputDirectory>${project.reporting.outputDirectory}/jacoco-ut</outputDirectory>
<exclude>some.package.*</exclude>
<exclude>**/*Config.*</exclude>
<exclude>**/*Dev.*</exclude>
<exclude>some/package/SomeClass.java</exclude>
</configuration>
<executions>
<execution>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>report</id>
<phase>prepare-package</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
<execution>
<id>post-unit-test</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
问题是,当我执行mvn clean verifyjacoco时,仍会报告应该已被排除的类,因为我的xml配置指出了.如何正确配置?
And*_*Kew 142
您的XML略有错误,您需要在排除父字段中添加任何类排除项,因此根据Jacoco文档,您的上述配置应如下所示
<configuration>
<excludes>
<exclude>**/*Config.*</exclude>
<exclude>**/*Dev.*</exclude>
</excludes>
</configuration>
Run Code Online (Sandbox Code Playgroud)
排除字段的值应该是使用标准通配符语法相对于目标target/classes /的已编译类的类路径(而不是包名)
* Match zero or more characters
** Match zero or more directories
? Match a single character
Run Code Online (Sandbox Code Playgroud)
您也可以通过这种方式排除包及其所有子包/子包:
<exclude>some/package/**/*</exclude>
Run Code Online (Sandbox Code Playgroud)
这将排除每个班级some.package以及任何孩子.例如,some.package.child也不会包括在报告中.
我已经测试过,我的报告目标报告使用上述方法减少了课程数量.
如果您正在将此报告推送到Sonar,那么您需要告诉Sonar在显示中排除这些类,这些类可以在Sonar设置中完成
设置>常规设置>排除>代码覆盖率
Sonar Docs解释了一下
在上面运行你的命令
mvn clean verify
Run Code Online (Sandbox Code Playgroud)
将显示已排除的类
没有例外
[INFO] --- jacoco-maven-plugin:0.7.4.201502262128:report (post-test) @ ** ---
[INFO] Analyzed bundle '**' with 37 classes
Run Code Online (Sandbox Code Playgroud)
有排除
[INFO] --- jacoco-maven-plugin:0.7.4.201502262128:report (post-test) @ ** ---
[INFO] Analyzed bundle '**' with 34 classes
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助
vaq*_*han 11
虽然安德鲁已经回答了有关细节的问题,但我正在给代码如何在pom中排除它
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.9</version>
<configuration>
<excludes>
<exclude>**/*com/test/vaquar/khan/HealthChecker.class</exclude>
</excludes>
</configuration>
<executions>
<!-- prepare agent for measuring integration tests -->
<execution>
<id>jacoco-initialize</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>jacoco-site</id>
<phase>package</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
小智 6
您可以在 jacoco 插件配置之外的声纳属性中配置覆盖排除:
...
<properties>
....
<sonar.exclusions>
**/generated/**/*,
**/model/**/*
</sonar.exclusions>
<sonar.test.exclusions>
src/test/**/*
</sonar.test.exclusions>
....
<sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
<sonar.jacoco.reportPath>${project.basedir}/../target/jacoco.exec</sonar.jacoco.reportPath>
<sonar.coverage.exclusions>
**/generated/**/*,
**/model/**/*
</sonar.coverage.exclusions>
<jacoco.version>0.7.5.201505241946</jacoco.version>
....
</properties>
....
Run Code Online (Sandbox Code Playgroud)
并记住从插件中删除排除设置
另一种解决方案:
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.5.201505241946</version>
<executions>
<execution>
<id>default-prepare-agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>default-report</id>
<phase>prepare-package</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
<execution>
<id>default-check</id>
<goals>
<goal>check</goal>
</goals>
<configuration>
<rules>
<rule implementation="org.jacoco.maven.RuleConfiguration">
<excludes>
<exclude>com.mypackage1</exclude
<exclude>com.mypackage2</exclude>
</excludes>
<element>PACKAGE</element>
<limits>
<limit implementation="org.jacoco.report.check.Limit">
<counter>COMPLEXITY</counter>
<value>COVEREDRATIO</value>
<minimum>0.85</minimum>
</limit>
</limits>
</rule>
</rules>
</configuration>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
请注意,我们"<element>PACKAGE</element>"在配置中使用它然后帮助我们在包级别排除。
| 归档时间: |
|
| 查看次数: |
118158 次 |
| 最近记录: |