Gradle jacoco多项目。如何输出终端中所有项目的代码覆盖率?

时间:2017-06-04 15:03:50

标签: java gradle junit gitlab jacoco

我正在使用Gradle jacoco插件并在gradle multi项目中进行JUnit次测试。

我已经安装了jacoco,以便向sonarqube报告我的代码覆盖率,我做了。

Gitlab-CI还提供代码覆盖率的徽章,我只需要在终端输出代码覆盖率并使用正则表达式来查找它。

有没有办法输出终端中所有项目的代码覆盖率?

2 个答案:

答案 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)来分析覆盖率。