GolangCI-Lint是一個(gè)lint聚合器,它的速度很快,平均速度是gometalinter的5倍。它易于集成和使用,具有良好的輸出并且具有最小數(shù)量的誤報(bào)。而且它還支持go modules。最重要的是免費(fèi)開(kāi)源。
一開(kāi)始想用gometalinter,結(jié)果發(fā)現(xiàn)golangci-lint更好用,而且下載也更方便.?gometalinter找了半天沒(méi)找到安裝方法,go get 下載報(bào)錯(cuò) 最后選擇用golangci-lint?
GitHub地址:https://github.com/golangci/golangci-lint/
安裝方法
# Go 1.16+
go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.42.1
# Go version < 1.16
go get -u github.com/golangci/golangci-lint/cmd/golangci-lint@v1.42.1
簡(jiǎn)單使用
-golangci-lint run [目錄](méi)/[文件]
-golangci-lint run ./...
-golangci-lint run dir1 dir2/... dir3/file1.go
支持的linterlinter詳細(xì)參數(shù)設(shè)置
可以通過(guò)命令golangci-lint help linters查看它支持的linters。你可以傳入?yún)?shù)-E/--enable來(lái)使某個(gè)linter可用,也可以使用-D/--disable參數(shù)來(lái)使某個(gè)linter不可用。
golangci-lint run --disable-all -E errcheck
golangci-lint run -v --no-config --disable-all -E goimports --fix main.go
常用的Linter介紹
typecheck 與go編譯器類(lèi)似的類(lèi)型檢查
cyclop
govet Vet檢查Go源代碼并報(bào)告可疑的結(jié)構(gòu),比如Printf調(diào)用,其參數(shù)與格式字符串不一致
ineffassign? 檢測(cè)對(duì)現(xiàn)有變量的賦值何時(shí)未被使用
staticcheck
varcheck? ? 找到未使用的全局常量或變量
deadcode? 未使用到的代碼,
errcheck 返回的error未處理
structcheck 檢測(cè)結(jié)構(gòu)體中未使用的字段
unused? 未使用的常量、變量、函數(shù)和類(lèi)型定義
gosimple 代碼中有需要優(yōu)化的地方,用于簡(jiǎn)化代碼風(fēng)格
.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


有問(wèn)題 會(huì)直接報(bào)錯(cuò) 不需要編譯,這里只是多了一個(gè)空格,就會(huì)有提示,非常方便

參考文章