logo
0
0
WeChat Login

coverage

Coverage 单测覆盖率计算工具,扫描本地覆盖率报告文件,目前可识别 json(js) , json-summary , lcov , jacoco, golang 格式结果,推荐使用 json(js) 或者 lcov 格式报告。

Coding-CI 环境中,pushmerge_requestmergeable 事件支持计算增量覆盖率结果,其他事件只计算全量覆盖率。

参数

pattern

  • type: string | string[]
  • 必填: 否

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

lines

  • type: number
  • 必填: 否

指定全量覆盖率红线,判断如果全量覆盖率百分比小于该值,进程退出码将返回 1,阻断工作流。 缺省时则不进行判断。

diffLines

  • type: number
  • 必填: 否

指定增量覆盖率红线,判断如果增量覆盖率百分比小于该值,进程退出码将返回 1,阻断工作流。 缺省时则不进行判断。

diffStart

  • type: string
  • 必填: 否

git 仓库的 commit-id,用于计算增量覆盖率时,当作计算的起点。

Coding-CI 环境中,缺省取代码变更前的 commit-id,例如代码推送前的最新提交,或者合并请求目标分支的最新提交。 其他情况缺省是 HEAD~1

diffEnd

  • type: string
  • 必填: 否

git 仓库的 commit-id,用于计算增量覆盖率时,当作计算的终点。

Coding-CI 环境中,缺省取代码变更后的 commit-id,例如代码推送后的当前提交,或者合并请求源分支的最新提交。 其他情况缺省是 HEAD

allowExts

  • type: string
  • 必填: 否

参与覆盖率计算的代码文件类型白名单,逗号分隔, 如:.json,.ts,.js。 缺省时报告中的文件都会参与计算。

lang

  • type: string
  • 必填: 否

当覆盖率结果报告目标格式为 golang 时,请指定此参数 为 go,否则会出现计算误差。其他情况可忽略该参数。

breakIfNoCoverage

  • type: boolean
  • 必填: 否
  • 默认: true

没有找到覆盖率报告文件时,是否抛出错误终止计算流程。

gitRoot

  • type: string
  • 必填: 否

git 仓库的绝对路径目录。 缺省则取环境变量 CODING_BUILD_WORKSPACE,变量不存在则取当前工作目录。

输出

lines

代码行覆盖率

diff_pct

代码增量行覆盖率

branches

代码分支覆盖率。golang 不支持。

functions

函数覆盖率。golang 不支持。

在 Coding-CI 上使用

master: push: - stages: - name: 覆盖率红线 image: codingci/coverage settings: # 增量覆盖率不能低于 50% diffLines: 50

在 Docker 上使用

docker run --rm \ -e TZ=Asia/Shanghai \ -e PLUGIN_PATTERN="*/coverage-final.json" \ -e PLUGIN_LINES="90" \ -e PLUGIN_DIFFLINES="50" \ -e PLUGIN_ALLOWEXTS=".ts" \ -e PLUGIN_BREAKIFNOCOVERAGE="true" \ -e PLUGIN_DIFFSTART="HEAD~1" \ -e PLUGIN_DIFFEND="HEAD" \ -v $(pwd):$(pwd) \ -w $(pwd) \ codingci/coverage:latest

About

代码测试覆盖率

931.00 KiB
0 forks0 stars3 branches2 TagREADMEMIT license
Language
TypeScript89.5%
Go7.6%
JavaScript2.1%
Dockerfile0.6%
Others0.2%