格式化整个项目_有赞 GO 项目单测、集成、增量覆盖率统计与分析

本文介绍了有赞PaaS团队在Go项目中的单测覆盖率、静态代码分析和增量覆盖率统计与分析的实践。包括使用golangci-lint进行静态代码检查,sonar-scanner接入SonarQube,集成测试覆盖率分析的解决方案,以及diff_cover工具进行增量覆盖率分析。
摘要由CSDN通过智能技术生成
、、 60216c76925e966cb2b14ff2b7d49f63.png

点击关注“有赞coder”

获取更多技术干货哦~

4e43a3529666d0eba04991b67ef8b4ae.png 作者:赵海强 团队:测试团队

一、引言

我是一名中间件 QA,我对应的研发团队是有赞 PaaS,目前我们团队有很多产品是使用 go 语言开发,因此我对 go 语言项目的单测覆盖率、集成以及增量测试覆盖率统计与分析做了探索。

二、单测覆盖率以及静态代码分析

2.1 单测覆盖率分析

Go 语言自身提供了单元测试工具 go test ,单元测试文件必须以 *_test.go 形式存在, go test 工具同时也提供了分析单测覆盖率的功能。因为需要将单测覆盖率上传到 sonar 平台展示,所以必须将覆盖率文件转换成能被 sonar 识别的格式,因此,还需要另外一个命令行工具 gocov 。 首先我们使用 go test 生成覆盖率输出文件 cover.out ,并通过 gocov 工具来将生成的覆盖率文件 cover.out 转换成可以被 sonar 识别的 Cobertura 格式的 xml 文件。如下所示:
go test -v ./... -coverprofile=cover.out #生成覆盖率输出
gocov convert cover.out | gocov-xml > coverage.xml #将覆盖率输出转换成xml格式的报告
将生成的单测覆盖率报告发送到 sonar 平台上来展示。

2.2 静态代码分析

Go 静态代码分析工具有两个,分别是 gometalinter 和 golangci-lint ,我们现在使用的是 golangci-lint,因为 gometalinter 已经停止维护,而且作者也推荐去使用 golangci-lint
2.2.1 golangci-lint 的安装
以下是安装 golangci-lint 推荐的两种方法:
  • 将二进制文件安装在 (go env GOPATH)/bin/golangci-lint 目录下 curl-sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | sh -s -- -b $(go env GOPATH)/bin vX.Y.Z
  • 或者将二进制文件安装在 ./bin/ 目录下 curl-sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | sh -s vX.Y.Z
安装完成之后可以通过使用 golangci-lint--version 来查看它的版本。
2.2.2 golangci-lint 的使用
在需要进行静态代码扫描的目录下执行 golangci-lint run ,此命令和 golangci-lint run./… 命令等效,表示扫描整个项目文件代码,并进行监测,也可以通过指定 go 文件或者文件目录名来对特定的代码文件或者目录进行代码扫描,例如 golangci-lint run dir1 dir2/...dir3/file1.go

ps:扫描指定目录的时候是不支持递归扫描的,如果要进行递归扫描需要在目录路径后面追加 /…

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值