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"
]


分享:

扫一扫在手机阅读、分享本文