staticcheck不希望地掃描直接目錄樹之外的代碼。
如何讓 staticcheck 僅掃描直接目錄樹,并忽略內部內容,例如:
/usr/local/go/src/runtime/internal/sys/?
我在staticcheck.io上搜索了檔案,但沒有找到任何關于這種行為的資訊。
例子:
$ find . -name "*.go"
./main.go
./exporter/gather.go
./exporter/metrics.go
./exporter/structs.go
./exporter/http.go
./exporter/prometheus.go
./config/config.go
./bitbucket-exporter_test.go
$ staticcheck ./...
/usr/local/go/src/runtime/internal/sys/arch.go:24:7: other declaration of PtrSize (compile)
/usr/local/go/src/runtime/internal/sys/arch.go:27:7: other declaration of StackGuardMultiplier (compile)
/usr/local/go/src/runtime/internal/sys/stubs.go:9:7: PtrSize redeclared in this block (compile)
/usr/local/go/src/runtime/internal/sys/stubs.go:10:24: undeclared name: Uintreg (compile)
/usr/local/go/src/runtime/internal/sys/stubs.go:16:7: StackGuardMultiplier redeclared in this block (compile)
$ staticcheck -version
staticcheck 2021.1 (v0.2.0)
$ go version
go version go1.17.4 linux/amd64
非常感謝。
uj5u.com熱心網友回復:
感謝@JimB 提供線索。環境好像有問題。在單獨的 Ubuntu 機器上,安裝了 go 和 staticcheck,staticcheck 現在按預期運行:
$ staticcheck ./...
config/config.go:114:6: func getAuth is unused (U1000)
exporter/http.go:38:2: should use for range instead of for { select {} } (S1000)
exporter/http.go:55:6: func getEarlierDaysMs is unused (U1000)
exporter/http.go:70:10: error strings should not be capitalized (ST1005)
exporter/http.go:79:10: error strings should not be capitalized (ST1005)
exporter/http.go:84:10: error strings should not be capitalized (ST1005)
exporter/http.go:84:10: error strings should not end with punctuation or a newline (ST1005)
exporter/http.go:88:10: error strings should not be capitalized (ST1005)
exporter/http.go:88:10: error strings should not end with punctuation or a newline (ST1005)
exporter/http.go:92:10: error strings should not be capitalized (ST1005)
exporter/http.go:92:10: error strings should not end with punctuation or a newline (ST1005)
exporter/structs.go:101:12: unknown JSON option "int64" (SA5008)
$ go version
go version go1.17.4 linux/amd64
$ staticcheck --version
staticcheck 2021.1.2 (v0.2.2)
更多調查顯示,最有可能的是,以前的檔案版本保持不變的臟升級可能導致 staticcheck 出現此錯誤。卸載 go 和 staticcheck,確保洗掉舊的$GOROOT(/usr/local/go在 linux 上),然后重新安裝 go 和 staticcheck,解決了問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/414544.html
標籤:
