单测覆盖率计算

testing:coverage

通过单测结果报告,计算单测覆盖率结果,并上报到 Coding-CI。结果可在构建日志页通过徽章查看。

本地覆盖率报告文件,目前可识别 json(js) , json-summary , lcov , jacoco, golang 格式结果,推荐使用 json(js) 或者 lcov 格式报告。

# 适用事件

all

pushmerge_requestmergeable 事件支持计算增量覆盖率结果,其他事件只计算全量覆盖率。

# 参数

# pattern

  • type: String
  • required:

glob 格式,指定覆盖率报告文件位置,相对于当前工作目录。 缺省时,将尝试查找当前目录下的 **\/+(*coverage*.json\|jacoco*.xml|lcov.info|*.lcov)

# lines

  • type: Number
  • required:

指定全量覆盖率红线,判断如果全量覆盖率百分比小于该值,阻断工作流退出流水线。

# diffLines

  • type: Number
  • required:

指定全量覆盖率红线,判断如果全量覆盖率百分比小于该值,阻断工作流退出流水线。 pushmerge_requestmergeable 事件支持计算增量覆盖率结果,其他事件只计算全量覆盖率。

# 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