GolangCI-Lint是一个lint聚合器,它的速度很快,平均速度是gometalinter的5倍。它易于集成和使用,具有良好的输出并且具有最小数量的误报。而且它还支持go modules。最重要的是免费开源。
安装方法(注意与golang的版本对应)
方式一:使用命令: go get -u github.com/golangci/golangci-lint/cmd/golangci-lint
方式二:离线安装:https://github.com/golangci/golangci-lint/releases
简单使用
- golangci-lint run [目录]/[文件]
- golangci-lint run ./...
- golangci-lint run dir1 dir2/... dir3/file1.go
支持的linter linter详细参数设置
可以通过命令golangci-lint help linters查看它支持的linters。你可以传入参数-E/--enable来使某个linter可用,也可以使用-D/--disable参数来使某个linter不可用。
golangci-lint run --disable-all -E errcheck
golangci-lint run -v --no-config --disable-all -E goimports --fix main.go
常用的Linter介绍
typecheck 与go编译器类似的类型检查
cyclop
govet Vet检查Go源代码并报告可疑的结构,比如Printf调用,其参数与格式字符串不一致
ineffassign 检测对现有变量的赋值何时未被使用
staticcheck
varcheck 找到未使用的全局常量或变量
deadcode 未使用到的代码,
未使用且未导出的函数(比如:首字母小写且未被调用的方法)
errcheck 返回的error未处理
structcheck 检测结构体中未使用的字段
unused 未使用的常量、变量、函数和类型定义
gosimple 代码中有需要优化的地方,用于简化代码风格
.golangci.yml配置 golangci-lint run -c .golangci.yaml
run:
skip-dirs:
- pkg/analyzer/testdata
linters-settings:
golint:
min-confidence: 0
goconst:
min-len: 2
min-occurrences: 3
misspell:
locale: US
linters:
enable-all: true
disable:
- lll
- prealloc
- dupl
- wsl
- nlreturn
- goerr113
- exhaustivestruct
- paralleltest
- testpackage
- gomnd
- gocognit
- nestif
- interfacer