Gradle jacoco 多项目。如何在终端输出所有项目的代码覆盖率?
Gradle jacoco multi project. How to output the code coverage of all the project in the terminal?
我正在使用 Gradle jacoco
插件并在 gradle 多项目中进行 JUnit
测试。
我安装了 jacoco 以便向 sonarqube 报告我的代码覆盖率,我也这样做了。
Gitlab-CI也提供了代码覆盖率的徽章,我只需要在终端输出代码覆盖率并使用正则表达式来查找它。
有没有办法在终端输出所有项目的代码覆盖率?
AFAIK Gradle不支持这个,每个项目分开处理。
为了支持您的用例,可以创建一些聚合任务来解析报告并更新根项目中的某些值,最后将该值打印到标准输出。
更新解决方案的近似代码:
subprojects {
task aggregateCoverage {
// parse report from each module into ext.currentCoverage
rootProject.ext.coverage += currentCoverage
}
}
可以。可能的方式:
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) or grep
(see this post)来解析覆盖范围。
我正在使用 Gradle jacoco
插件并在 gradle 多项目中进行 JUnit
测试。
我安装了 jacoco 以便向 sonarqube 报告我的代码覆盖率,我也这样做了。
Gitlab-CI也提供了代码覆盖率的徽章,我只需要在终端输出代码覆盖率并使用正则表达式来查找它。
有没有办法在终端输出所有项目的代码覆盖率?
AFAIK Gradle不支持这个,每个项目分开处理。
为了支持您的用例,可以创建一些聚合任务来解析报告并更新根项目中的某些值,最后将该值打印到标准输出。
更新解决方案的近似代码:
subprojects {
task aggregateCoverage {
// parse report from each module into ext.currentCoverage
rootProject.ext.coverage += currentCoverage
}
}
可以。可能的方式:
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) or grep
(see this post)来解析覆盖范围。