我正在使用Gradle jacoco
插件并在gradle multi项目中进行JUnit
次测试。
我已经安装了jacoco,以便向sonarqube报告我的代码覆盖率,我做了。
Gitlab-CI还提供代码覆盖率的徽章,我只需要在终端输出代码覆盖率并使用正则表达式来查找它。
有没有办法输出终端中所有项目的代码覆盖率?
答案 0 :(得分:1)
AFAIK Gradle不支持此功能,每个项目都单独处理。
为了支持您的用例,可以创建一些聚合任务来解析报表并更新根项目中的某个值,最后将该值打印到stdout。
使用解决方案的近似代码进行更新:
subprojects {
task aggregateCoverage {
// parse report from each module into ext.currentCoverage
rootProject.ext.coverage += currentCoverage
}
}
答案 1 :(得分:1)
是的。可能的方法:
1)使用Gradle插件gradle-console-reporter将各种摘要报告给控制台。支持JUnit,JaCoCo和Cobertura报告。
在您的情况下,以下输出将打印到控制台:
...
BUILD SUCCESSFUL
Total time: 4.912 secs
Coverage summary:
project1: 72.2%
project2-with-long-name: 44.4%
然后,您可以在Gitlab的.gitlab-ci.yml
中使用带有正则表达式的coverage来解析代码覆盖率。
2)第二个选项有些棘手。您可以打印完整的JaCoCo HTML报告(例如,使用cat target/site/jacoco/index.html
),然后使用正则表达式(请参见this post)或grep
(请参见this post)来分析覆盖率。