To run golangci-lint execute:
golangci-lint run
It's an equivalent of executing:
golangci-lint run ./...
You can choose which directories and files to analyze:
golangci-lint run dir1 dir2/... dir3/file1.go
Directories are NOT analyzed recursively. To analyze them recursively append /...
to their path.
GolangCI-Lint can be used with zero configuration. By default the following linters are enabled:
$ golangci-lint help lintersEnabled by default linters:deadcode: Finds unused code [fast: true, auto-fix: false]errcheck: Errcheck is a program for checking for unchecked errors in go programs. These unchecked errors can be critical bugs in some cases [fast: true, auto-fix: false]gosimple (megacheck): Linter for Go source code that specializes in simplifying a code [fast: true, auto-fix: false]govet (vet, vetshadow): Vet examines Go source code and reports suspicious constructs, such as Printf calls whose arguments do not align with the format string [fast: true, auto-fix: false]ineffassign: Detects when assignments to existing variables are not used [fast: true, auto-fix: false]staticcheck (megacheck): Staticcheck is a go vet on steroids, applying a ton of static analysis checks [fast: true, auto-fix: false]structcheck: Finds unused struct fields [fast: true, auto-fix: false]typecheck: Like the front-end of a Go compiler, parses and type-checks Go code [fast: true, auto-fix: false]unused (megacheck): Checks Go code for unused constants, variables, functions and types [fast: false, auto-fix: false]varcheck: Finds unused global variables and constants [fast: true, auto-fix: false]
and the following linters are disabled by default:
$ golangci-lint help linters...Disabled by default linters:asciicheck: Simple linter to check that your code does not contain non-ASCII identifiers [fast: true, auto-fix: false]bodyclose: checks whether HTTP response body is closed successfully [fast: true, auto-fix: false]depguard: Go linter that checks if package imports are in a list of acceptable packages [fast: true, auto-fix: false]dogsled: Checks assignments with too many blank identifiers (e.g. x, _, _, _, := f()) [fast: true, auto-fix: false]dupl: Tool for code clone detection [fast: true, auto-fix: false]errorlint: go-errorlint is a source code linter for Go software that can be used to find code that will cause problemswith the error wrapping scheme introduced in Go 1.13. [fast: true, auto-fix: false]exhaustive: check exhaustiveness of enum switch statements [fast: true, auto-fix: false]exhaustivestruct: Checks if all struct's fields are initialized [fast: true, auto-fix: false]exportloopref: checks for pointers to enclosing loop variables [fast: true, auto-fix: false]forbidigo: Forbids identifiers [fast: true, auto-fix: false]funlen: Tool for detection of long functions [fast: true, auto-fix: false]gci: Gci control golang package import order and make it always deterministic. [fast: true, auto-fix: true]gochecknoglobals: check that no global variables exist
Pass -E/--enable
to enable linter and -D/--disable
to disable:
Edit this page on GitHub
golangci-lint run --disable-all -E errcheck