GolangCI-Lint是一个lint聚合器,它的速度很快,平均速度是gometalinter的5倍。它易于集成和使用,具有良好的输出并且具有最小数量的误报。而且它还支持go modules。最重要的是免费开源。
在MacOS上面,你还可以使用brew进行安装。
brew install golangci/tap/golangci-lint
brew upgrade golangci/tap/golangci-lint
本地安装完成后,你使用golangci-lint --version
是看不到它的版本信息的。
使用
golangci-lint run [目录]/[文件名]
,例如检测下面的go文件。
package main
import (
"fmt"
"unsafe"
)
type Book struct {
Age int
Title string
}
func main() {
b := Book{}
fmt.Println("book size:", unsafe.Sizeof(b))
}
执行命令golangci-lint run main.go
,可以在命令行看到下面提示:
main.go:14:2: SA4006: this value of `b` is never used (staticcheck)
b := Book{}
^
正确使用方式
官网推荐三种使用方式:
golangci-lint run
等价于:
golangci-lint run ./...
这里...代表的就是检测目录下所有的文件
可以指定要检查的文件和文件夹:
golangci-lint run dir1 dir2/... dir3/file1.go
支持的linter
可以通过命令golangci-lint help linters
查看它支持的linters。你可以传入参数-E/--enable
来使某个linter可用,也可以使用-D/--disable
参数来使某个linter不可用。例如:
golangci-lint run --disable-all -E errcheck