有没有办法只在新代码上获得单位覆盖百分比(例如来自jacoco)?

时间:2017-01-25 12:43:30

标签: unit-testing code-coverage jacoco jacoco-maven-plugin

我的假设情景如下:

  • 我已经运行了junit测试并生成了一个jacoco文件
  • 我的git diff显示我已经更改了10行代码

现在,我的git diff和jacoco信息的交集是覆盖了10行代码中的7行。即 - 我对新代码的覆盖率为70%。

但我必须手动完成这项工作。

我想要一种自动化的方法来计算出涵盖了多少新代码行的百分比。

我的问题是:有没有办法只在新代码上获得单位覆盖百分比(例如来自jacoco)?

(注意我知道sonarqube可以执行此操作,如果您使用analysis.mode=publish运行扫描程序并使用JSON API查询任务结果 - 我正在寻找开发人员可以在本地运行的轻量级内容。)

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

Jacoco + diff-cover

对我来说这是工作。 CI Shell脚本:

export PATH="${jobPath}"/buildbox/Python-3.8.2/bin:$PATH
python --version
python -m pip install -i http://xx.xx.xx.com/artifactory/api/pypi/xx-pypi-public/simple/ --trusted-host xx.xx.xx.com diff_cover==4.0.1

mvn clean test -Dmaven.test.failure.ignore=true

diff-cover "${WORKSPACE}"/xxx-test/target/site/jacoco/jacoco.xml --compare-branch origin/"${target_branch}" --src-roots $(find . -name java -type d | grep 'src/main/java$' | egrep -v "target|test|testkit") --html-report ${WORKSPACE}/xxx-test/target/site/jacoco/index.html

答案 2 :(得分:0)

有两个插件:

两者都建立在 JaCoCo 之上,并且能够生成类似 JaCoCo 的报告。 enter image description here

此外,如果您的覆盖率低于预期,他们可能会导致构建失败(该比率由插件配置)