10

我的假设场景是这样的:

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

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

但我必须手动解决。

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

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

(请注意,如果您运行扫描仪并使用 JSON API 询问任务结果,我知道sonarqubeanalysis.mode=publish可以做到这一点- 我正在寻找开发人员可以在本地运行的轻量级东西。)

4

3 回答 3

4

有两个插件:

两者都建立在 JaCoCo 之上,并且能够生成类似 JaCoCo 的报告。 在此处输入图像描述

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

于 2021-05-17T19:25:25.843 回答
3

Jacoco + diff-cover

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

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
于 2020-11-24T02:31:49.093 回答
2

阅读以下内容: https ://juliangamble.com/blog/2017/09/01/commit-level-coverage-reporting/

然后使用这个项目: https ://github.com/juliangamble/commit-level-coverage-report

于 2019-02-23T05:41:13.720 回答