Improving Go code: An introduction to the static analysis tool Staticcheck
superhighway.dev
superhighway.dev
This and also gosec are invaluable!
Something I looked recently and should adopt soon: https://github.com/golangci/golangci-lint
So far, this is what my 'de facto' lint list looks like:
echo "Checking for unchecked errors." errcheck $(go list ./...) echo "Linting code." test -z "$(golint `go list ./...` | tee /dev/stderr)" echo "Examining source code against code defect." go vet $(go list ./...) go vet -vettool=$(which shadow) echo "Running staticcheck toolset https://staticcheck.io" staticcheck ./... echo "Checking if code contains security issues." # TODO(henvic) fix/update gosec when available: # G104: Doesn't understand _ assignments #270 # https://github.com/securego/gosec/issues/270 # Ignoring G104: Audit errors not checked for now. gosec -quiet -exclude G104 --quiet ./...
Also, it is now available as a choice of Go linter in Visual Studio Code.
* github.com/kisielk/errcheck[1]: Find cases where you (accidentally?) ignore errors.
* github.com/gordonklaus/ineffassign[2]: Find ineffectial assignments; sounds simple, almost unneeded, but in my practice it's actually one of the most effective analyses to find actual bugs.
* mvdan.cc/unparam[3]: Find functions that always consume or return one value; great for refactorings.
[1] https://github.com/kisielk/errcheck
I remember trying to integrate it with code climate's tooling but for some reason or another I didn't manage to.