staticcheck undesirably scans code outside the immediate directory tree.
How do I get staticcheck to only scan the immediate directory tree, and to ignore internal stuff like:
/usr/local/go/src/runtime/internal/sys/?
I searched the documentation at staticcheck.io but did not find anything about this sort of behaviour.
Example:
$ 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
Many thanks.
Thanks @JimB for the clues. There appears to be an issue with the environment. On a separate Ubuntu machine, installed go and staticcheck, and staticcheck now behaves as expected:
More investigation revealed that most likely, a dirty upgrade, where previous file versions were left untouched, might have caused this error for staticcheck. Uninstalling go and staticcheck, making sure to delete the old
$GOROOT(/usr/local/goon linux), then reinstalling go and staticcheck, resolved the problem.