goc 代码覆盖率

安装 go:https://golang.google.cn/

查看 go 版本命令:go version

 

goc 项目:https://github.com/qiniu/goc/blob/master/README_zh.md

mac 安装 goc :

curl -s -L "https://github.com/qiniu/goc/releases/latest" | sed -nE 's!.*"([^"]*-darwin-amd64.tar.gz)".*!https://github.com\1!p' | xargs -n 1 curl -L  | tar -zx && chmod +x goc && mv goc /usr/local/bin

进入 goc 目录下,执行命令: 

go build

默认安装的go 在 build的时候会出现长时间无响应,有类似如下报如下错误:
go: github.com/hyperledger/fabric-contract-api-go@v1.0.0: Get https://proxy.golang.org/github.com/hyperledger/fabric-contract-api-go/@v/v1.0.0.mod: dial tcp 172.217.27.145:443: i/o timeout
因为默认的go地址被墙了,碰到这种情况则更换地址,更换为七牛云的镜像,直接运行下面两条命令即可:

go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct

配置 goc 项目环境变量命令:

export PATH=/Users/chenjun/PycharmProjects/goc

环境变量生效命令:

source /etc/profile

查看 goc 版本命令:

goc version

进入 gocserver 目录 运行 goc server 命令启动一个服务注册中心:

goc server

运行 goc build 命令编译目标服务,然后启动插过桩的二进制。下面以 simple-go-server 工程为例:

goc build .
./simple-go-server  

运行 goc profile 命令收集刚启动的 simple server 的代码覆盖率:

➜  simple-go-server git:(master) ✗ goc profile
mode: atomic
enricofoltran/simple-go-server/main.go:30.13,48.33 13 1
enricofoltran/simple-go-server/main.go:48.33,50.3 1 0
enricofoltran/simple-go-server/main.go:52.2,65.12 5 1
enricofoltran/simple-go-server/main.go:65.12,74.46 7 1
enricofoltran/simple-go-server/main.go:74.46,76.4 1 0
...   

simple-go-server 项目目录下,将覆盖率数据输出到cov3.out文件:

goc profile > cov3.out && go tool cover -func=cov3.out

simple-go-server 项目目录下,在宿主机的cov3.out目录下,cmd执行命令行指令,生成html报告:

go tool cover -html=./cov3.out -o cov3.html

 

 

posted @ 2022-05-08 21:44  Ootori  阅读(609)  评论(0编辑  收藏  举报