Golang

关注公众号 jb51net

关闭
首页 > 脚本专栏 > Golang > go tool cover使用

Go工具链之go tool cover使用方法和示例详解

作者:路多辛

go tool cover是Go工具链中的一个命令,作用是分析测试用例的代码覆盖率,本文将对go tool cover 作用,使用方法和使用场景作一个简单的介绍,感兴趣的同学可以参考阅读一下

go tool cover 作用

go tool cover 是 Go 工具链中的一个命令,作用是分析测试用例的代码覆盖率。通过对测试覆盖文件进行分析,帮助开发人员和测试人员了解在测试中哪些代码执行了以及执行了多少次。

通过代码覆盖率分析可以知道测试用例执行后覆盖了多少代码行、分支和语句以及是否存在未被测试用例覆盖的代码,有助于发现代码中的潜在问题和错误,提高代码的质量和可靠性。

go tool cover 使用方法和使用示例

首先需要提供使用 go test 命令生成的代码覆盖文件(也可提供通过其他方式生成的和 go test 生成的文件格式一致的文件)。举个例子,以 github.com/luduoxin/json-validator-go 项目为例,clone 代码后,切换到项目的 validator 目录,打开终端,执行如下命令:

 $ go test -coverprofile=c.out

截取 c.out 的前两行内容如下

mode: set
github.com/luduoxin/json-validator-go/validator/scanner.go:11.30,15.2 3 

第二行每个部分代表的意思如下:

"文件:起始行.起始列,结束行.结束列 该基本块中的语句数量 该基本块被执行到的次数"

接下来看下使用go tool cover 来分析上面生成的文件 c.out 的方法,使用如下命令来查看每个方法的覆盖率和总的覆盖率

$ go tool cover -func=c.out

默认是将结果输出到标准输出,可以使用 -o 将结果输出到其他地方,例如输出到文件:

$ go tool cover -func=c.out -o coverage.out

使用如下方法生成一个 html 页面并且自动打开浏览器来展示覆盖率的详细情况:

$ go tool cover -html=c.out

这样可以非常直观地查看代码覆盖率的情况,已被覆盖的代码被标记为绿色(绿色越深,表示被覆盖的次数越多)、未被覆盖的代码被标记为红色、不需要检测的代码被标记为灰色,将鼠标移到代码块上,还会弹出对应的被覆盖次数。也可以不自动打开浏览器展示,而是将 html 内容输出到其他地方:

$ go tool cover -html=c.out -o coverage.html

要生成覆盖文件,首先需要对源代码插桩,使用 go tool cover 可以生成插桩后的代码,例如:

go tool cover -mode=set -var=CoverageVariableName scanner.go

执行后会输出插桩后的源代码到标准输出。

go tool cover 使用场景

可以用于以下场景:

到此这篇关于Go工具链之go tool cover使用方法和示例详解的文章就介绍到这了,更多相关go tool cover使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文