codedov文件

codedov的配置文件

codecov 背景知识

https://docs.codecov.com/docs/codecov-yaml

Codecov Yaml文件是唯一的配置点,为开发者提供了一个透明的、版本控制的文件来调整所有的Codecov设置。

参考手册:

https://docs.codecov.com/docs/codecovyml-reference

验证工具:

https://api.codecov.io/validate

kit仓库配置

https://github.com/dapr/kit/blob/main/.codecov.yaml

kit仓库的 .codecov.yaml 文件极其简单,只配置了 coverage.status 的少数属性:

coverage:
  # Commit status https://docs.codecov.io/docs/commit-status are used
  # to block PR based on coverage threshold.
  status:
    project:
      default:
        target: auto
        threshold: 0%
    patch:
      default:
        informational: true

参考 https://docs.codecov.com/docs/commit-status 中的说明, status 检查的功能是:

Useful for blocking Pull Requests that don’t meet a particular coverage threshold.

有助于阻止不符合特定覆盖率阈值的Pull Requests。

target

取值可以是 auto 或者 number

选择一个最小的覆盖率,提交必须满足该覆盖率才能被认为是成功的。

  • auto 将使用基础提交(PR请求基础或父提交)的覆盖率来进行比较。
  • number 可以指定一个精确的覆盖率目标,如75%或100%(接受字符串、int或float)。

threshold

取值为 number

允许覆盖率下降 X%,并发布成功状态。

informational

在信息模式下使用Codecov。默认为false。如果指定为 “true”,那么无论覆盖率是多少或其他设置是什么,结果都会通过。如果想在PR中向其他开发者公开codecov信息,而不一定要在这些信息上进行门禁,那么信息模式是非常好的选择。

本地执行

本地执行go test 命令,加上相关的参数之后就可以得到覆盖率信息:

$ go test ./... -coverprofile=coverage.txt -covermode=atomic
ok      github.com/dapr/kit/config      0.008s  coverage: 95.5% of statements
ok      github.com/dapr/kit/logger      0.008s  coverage: 87.0% of statements
ok      github.com/dapr/kit/retry       0.006s  coverage: 97.6% of statements

可以用工具查看更详细的输出:

go tool cover -html=coverage.txt

如果是使用IDE如 goland,可以参考:

https://www.jetbrains.com/help/go/code-coverage.html

最常见的方式是在编写单元测试案例时,右键 “More Run/Debug” -> “Run xxx.go.test with Coverage”,执行结束之后会自动打开 Coverage 视图。

CI执行

可以通过下面的地址查看:

https://app.codecov.io/gh/dapr/kit

CI执行 Coverage 检查的过程,请参见下一章 workflow 的详细说明。