Go代码静态检查工具golangci-lint
为什么要做代码静态检查
为了保证线上服务稳定性,提升代码质量,我们需要做代码入库准入检查,同时也可以提前发现一些潜在的风险,这个时候代码静态检查工具就派上用场了,代码静态检查工具可以帮助我们发现如下问题:
不符合规范的代码风格
未处理的错误返回值
未释放的资源(内存泄露)
未初始化的变量
空指针引用
数组越界
无效的代码行
....
这些问题都是我们日常查bug经常会遇到的一些问题,如果能在写代码的时候就提前发现这些风险,那么一定程度上是可以降低因为这些问题引起的bug数的。
golangci-lint介绍
在Golang里推荐的代码静态检查工具是golangci-lint,github地址为:https://github.com/golangci/golangci-lint golangci-lint是一个代码静态检查工具的合集,它的前身是gometalinter,但比gometalinter检查速度快5倍以上,安装方法简单,而且支持自定义开启关闭各种检查规则。
golangci-lint安装
二进制安装方法:
# binary will be $(go env GOPATH)/bin/golangci-lint curl -sfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh| sh -s -- -b $(go env GOPATH)/bin vX.Y.Z # or install it into ./bin/ curl -sfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh| sh -s vX.Y.Z # In alpine linux (as it does not come with curl by default) wget -O - -q https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh| sh -s vX.Y.Z golangci-lint --version
将上面的vX.Y.Z换为要安装的版本号即可,可安装的版本可以在https://github.com/golangci/golangci-lint/releases里找。
源码的安装方法:
go get -u github.com/golangci/golangci-lint/cmd/golangci-lint
golangci-lint使用方法
默认的linters检查:
golangci-lint run ./...
参数支持传递多个目录的
查看支持的linters:
golangci-lint help linters
开启或关闭linters:
golangci-lint run --disable-all -E errcheck
-E/--enable:开启
-D/--disable:关闭
同时也支持通过配置文件的加载linters的方式,可参考:https://github.com/golangci/golangci-lint#config-file
VS Code配置方法:
"go.lintTool":"golangci-lint", "go.lintFlags": [ "--fast" ]