如何从go test -coverprofile = cover.out中提取代码覆盖率值?

时间:2018-03-07 20:31:17

标签: go tfs

我正在为我们的go应用程序开发CI(TFS2015),我想确保代码质量。例如,当go应用程序的代码覆盖率较低(低于60%)时,CI将无法构建进程。现在我可以使用“go test -coverprofile = cover.out”命令成功获取代码覆盖率值,但我不知道如何提取此值,以便可以在其他地方使用它,例如PowerShell脚本。我试图读取cover.out文件,但它没有覆盖结果。

1 个答案:

答案 0 :(得分:2)

我可以直接猜到的愚蠢和直截了当的方式:

  • 尝试go test -cover -json
  • 解组结果
  • 并寻找"覆盖范围:"字符串输入"操作":"输出"。

另一种方式:

使用go tool cover -func=cover.out你可以得到漂亮而简洁的文字:

fmt/format.go: init              100.0%
fmt/format.go: clearflags        100.0%
fmt/format.go: init              100.0%
fmt/format.go: computePadding     84.6%
fmt/format.go: writePadding      100.0%
fmt/format.go: pad               100.0%
...
fmt/scan.go:   advance            96.2%
fmt/scan.go:   doScanf            96.8%
total:         (statements)       91.7%

解析它很简单,例如:https://play.golang.org/p/bgYW7NZKu_S