gofmt comes under this umbrella, Go has a well defined style guide that IDEs will format to automatically on savegoimports will update / clean import lists which is also usefulgolint checks for non-format style issues, e.g. exported names having comments for godoc, panic not being used for normal error handling, error flow indented, happy path not etc.
golint come from Effective Go and Googlego vet is another standard tool that will apply certain rules to look for suspicious things, e.g. accidentally copying mutexes, possibly invalid integer shifts, struct tags, atomic assignments and unreachable code etc.
fmt.Printf("%s\n", 20)goconst for finding literals that should be declared with constgosec for finding possible security vulnerabilitiesineffassign to find assignments that are ineffective (e.g. shadowed)gocyclo to find high cyclomatic complexity in functionsdeadcode, unused, varcheck to find unused or dead codeunconvert to find redundant type conversionsineffassign Exampleerr:prices, err := r.prices(region)
regularPrices, err := r.regularPrices(region)
if err != nil {
return nil, fmt.Errorf("price not available for region %s", region)
}
ineffassign tool would point this out as a risk since the first err is never checked because it is shadowedgolangci-lint//nolint