单测覆盖率计算
testing:coverage
通过单测结果报告,计算单测覆盖率结果,并上报到 Coding-CI
。结果可在构建日志页通过徽章查看。
本地覆盖率报告文件,目前可识别 json(js)
, json-summary
, lcov
, jacoco
, golang
格式结果,推荐使用 json(js)
或者 lcov
格式报告。
# 适用事件
all
push
、merge_request
、mergeable
事件支持计算增量覆盖率结果,其他事件只计算全量覆盖率。
# 参数
# pattern
- type:
String
- required:
否
glob 格式,指定覆盖率报告文件位置,相对于当前工作目录。
缺省时,将尝试查找当前目录下的 **\/+(*coverage*.json\|jacoco*.xml|lcov.info|*.lcov)
。
# lines
- type:
Number
- required:
否
指定全量覆盖率红线,判断如果全量覆盖率百分比小于该值,阻断工作流退出流水线。
# diffLines
- type:
Number
- required:
否
指定全量覆盖率红线,判断如果全量覆盖率百分比小于该值,阻断工作流退出流水线。
push
、merge_request
、mergeable
事件支持计算增量覆盖率结果,其他事件只计算全量覆盖率。
# allowExts
- type:
String
- required:
否
参与覆盖率计算的代码文件类型白名单,逗号分隔, 如:.json,.ts,.js
。
缺省时报告中的文件都会参与计算。
# lang
- type:
String
- required:
否
当覆盖率结果报告目标格式为 golang
时,请指定此参数 为 go
,否则会出现计算误差。其他情况可忽略该参数。
# breakIfNoCoverage
- type:
Boolean
- required:
否
没有找到覆盖率报告文件时,是否抛出错误终止流程。
# 输出结果
{
// 代码行覆盖率,例如 100,计算出错时值为 NA
lines,
// 代码增量行覆盖率,例如 100,计算出错时值为 NA
diff_pct,
}
# 配置样例
#.coding-ci.yml
master:
push:
- stages:
- name: coverage
type: testing:coverage
options:
breakIfNoCoverage: false
exports:
lines: LINES
- name: result
script: echo $LINES
← go