代码覆盖率
使用代码覆盖率提供有关测试套件正在验证哪些源代码的信息。代码覆盖率是可以确定软件性能和质量的众多测试指标之一。
查看代码覆盖率结果
代码覆盖率结果显示在:
- 合并请求部件
- 项目仓库分析
- 群组仓库分析
- 仓库徽章
更多关于合并请求文件差异中测试覆盖率可视化的信息,请参见测试覆盖率可视化。
在合并请求中查看代码覆盖率结果
如果您在代码中使用测试覆盖率,则可以使用正则表达式在作业日志中查找覆盖率结果。然后,您可以将这些结果包含在极狐GitLab 的合并请求中。
如果流水线成功,覆盖将显示在合并请求部件和作业表中。如果流水线中的多个作业都有覆盖率报告,则对它们进行平均。
将代码覆盖率结果添加到合并请求中
您可以通过将 coverage
关键字添加到项目的 .gitlab-ci.yml
文件中,将测试覆盖率结果添加到合并请求中。
要聚合多个测试覆盖率值:
- 对于您要包含在整体覆盖率值中的每个作业,添加
coverage
关键字,后跟一个正则表达式。
使用 coverage
关键字添加测试覆盖率结果
要使用项目的 .gitlab-ci.yml
文件将测试覆盖率结果添加到合并请求,请使用 coverage
关键字提供正则表达式。
测试覆盖率示例
将此正则表达式用于常用的测试工具。
名称 | 语言 | 命令 | 示例 |
---|---|---|---|
Simplecov | Ruby | None | /\(\d+.\d+\%\) covered/ |
pytest-cov | Python | None | /TOTAL.*? (100(?:\.0+)?\%\|[1-9]?\d(?:\.\d+)?\%)$/ |
Scoverage | Scala | None | /(?i)total.*? (100(?:\.0+)?\%\|[1-9]?\d(?:\.\d+)?\%)$/ |
pest | PHP | pest --coverage --colors=never |
/Statement coverage[A-Za-z\.*]\s*:\s*([^%]+)/ |
phpunit | PHP | phpunit --coverage-text --colors=never |
/^\s*Lines:\s*\d+.\d+\%/ |
gcovr | C/C++ | None | /^TOTAL.*\s+(\d+\%)$/ |
tap | NodeJs | tap --coverage-report=text-summary |
/^Statements\s*:\s*([^%]+)/ |
nyc | NodeJs | nyc npm test |
/All files[^\|]*\|[^\|]*\s+([\d\.]+)/ |
jest | NodeJs | jest --ci --coverage |
/All files[^\|]*\|[^\|]*\s+([\d\.]+)/ |
excoveralls | Elixir | None | /\[TOTAL\]\s+(\d+\.\d+)%/ |
mix | Elixir | mix test --cover |
/\d+.\d+\%\s+\|\s+Total/ |
JaCoCo | Java/Kotlin | None | /Total.*?([0-9]{1,3})%/ |
go test (single package) | Go | go test -cover |
/coverage: \d+.\d+% of statements/ |
go test (whole project) | Go | go test -coverprofile=cover.profile && go tool cover -func cover.profile |
/total:\s+\(statements\)\s+\d+.\d+%/ |
OpenCover | .NET | None | /(Visited Points).*\((.*)\)/ |
dotnet test (MSBuild) | .NET | dotnet test |
/Total\s*\|\s*(\d+(?:\.\d+)?)/ |
tarpaulin | Rust | None | /^\d+.\d+% coverage/ |
Pester | PowerShell | None | /Covered (\d+\.\d+%)/ |
查看项目代码覆盖率的历史记录
您可以始终对项目或群组进行代码覆盖了追踪。
对于项目
要查看项目的代码覆盖率历史:
- 在左侧导航栏,选择 搜索或前往 并找到您的项目。
- 选择 分析 > 仓库分析。
- 从下拉列表中选择您要查看历史数据的作业。
- 可选。要查看数据的 CSV 文件,请选择 下载原始数据 (.csv)。
对于群组
要查看群组中所有项目的代码质量历史:
- 在左侧导航栏,选择 搜索或前往 并找到您的群组。
- 选择 分析 > 仓库分析。
- 可选。要查看数据的 CSV 文件,请选择 下载历史测试覆盖率数据 (.csv)。
流水线徽章
您可以使用流水线徽章来指示项目的流水线状态和测试覆盖率。这些徽章由最新成功的流水线决定。
覆盖率检查批准规则
You can require specific users or a group to approve merge requests that reduce the project’s test coverage. 您可以要求特定用户或群组批准减少项目测试覆盖率的合并请求。
先决条件:
- 确保您已经添加了代码覆盖率结果到您的合并请求中。
要添加 Coverage-Check
批准规则:
- 前往您的项目并选择 设置 > 合并请求。
- 在 合并请求批准 下,执行以下操作之一:
- 在
Coverage-Check
批准规则旁边,选择 启用。 - 对于手动设置,选择 添加批准规则,然后输入 规则名称。例如:
覆盖检查
。
- 在
- 选择 目标分支。
- 设置 所需批准数。
- 选择要提供批准的 用户 或 群组。
- 选择 保存更改。
故障排除
使用代码覆盖率时删除代码颜色
某些测试覆盖工具输出的 ANSI 颜色代码未被正则表达式正确解析。这会导致覆盖解析失败。
一些覆盖工具不提供在输出中禁用颜色代码的选项。如果是这样,请通过去除颜色代码的单行脚本来传输覆盖工具的输出。
例如:
lein cloverage | perl -pe 's/\e\[?.*?[\@-~]//g'