我正在使用maven cobertura插件报告我的多模块项目中的代码覆盖率。
问题在于我不知道如何为项目中的所有模块生成一个报告。
到目前为止,我已经为每个模块生成了单独的报告,但是为整个项目提供一份报告会很好。
我的父pom配置:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.4</version>
<inherited>true</inherited>
<executions>
<execution>
<phase>test-compile</phase>
<goals>
<goal>clean</goal>
<goal>cobertura</goal>
</goals>
</execution>
</executions>
</plugin>
答案 0 :(得分:17)
插件已更新,因为此问题已被问及(最后一次回答)现在通过父POM中的aggregate
配置属性启用汇总报告。
这将生成target/site/cobertura/index.html
的聚合覆盖率报告,其中包含所有模块。
(如果有任何用途,每个模块也会生成自己的报告。)
父pom.xml
<modules>
<module>moduleA</module>
<module>moduleB</module>
<module>moduleC</module>
<modules>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.6</version>
<configuration>
<check/>
<formats>
<format>html</format>
<format>xml</format>
</formats>
<aggregate>true</aggregate>
</configuration>
</plugin>
...
</pluginManagement>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
</plugin>
</plugins>
...
</build>
答案 1 :(得分:2)
据我所知,目前不支持此功能,请参阅MCOBERTURA-65。但这个问题附有补丁,也许可以尝试一下。但我的建议是使用类似Sonar的内容来聚合指标。
答案 2 :(得分:0)
我一直在使用Hudson作为持续集成工具。 Cobertura插件允许我在检查父级时查看所有子模块的代码覆盖率。
答案 3 :(得分:0)
Jenkins Cobertura插件会自动聚合报告,但如果您对覆盖文件本身感兴趣,可以通过以下步骤进行操作:
从here
转到项目工作区 - &gt;找到所有.ser
个文件并重命名
(i=0; find . | grep cobertura.ser$ | while read line;do echo $line; cp -i $line cobertura$i.ser;i=$(($i+1));done;)
使用cobertura-merge.sh
生成全局.ser
文件
~/cobertura-2.0.3/cobertura-merge.sh --datafile cobertura.ser cobertura*.ser
使用cobertura-report.sh
生成有关全局.ser文件的报告
~/cobertura-2.0.3/cobertura-report.sh ./cobertura.ser --destination ./ --format xml
您将在当前目录中生成全局coverage.xml
。
您可以将它用于任何类型的处理。