To see a list of supported linters and which linters are enabled/disabled:

golangci-lint help linters

Enabled By Default Linters

  • govet - Vet examines Go source code and reports suspicious constructs, such as Printf calls whose arguments do not align with the format string
  • errcheck - Errcheck is a program for checking for unchecked errors in go programs. These unchecked errors can be critical bugs in some cases
  • staticcheck - Staticcheck is a go vet on steroids, applying a ton of static analysis checks
  • unused - Checks Go code for unused constants, variables, functions and types
  • gosimple - Linter for Go source code that specializes in simplifying a code
  • structcheck - Finds unused struct fields
  • varcheck - Finds unused global variables and constants
  • ineffassign - Detects when assignments to existing variables are not used
  • deadcode - Finds unused code
  • typecheck - Like the front-end of a Go compiler, parses and type-checks Go code

Disabled By Default Linters (-E/--enable)

  • bodyclose - checks whether HTTP response body is closed successfully
  • noctx - noctx finds sending http request without context.Context
  • golint - Golint differs from gofmt. Gofmt reformats Go source code, whereas golint prints out style mistakes
  • rowserrcheck - checks whether Err of rows is checked successfully
  • stylecheck - Stylecheck is a replacement for golint
  • gosec - Inspects source code for security problems
  • interfacer - Linter that suggests narrower interface types
  • unconvert - Remove unnecessary type conversions
  • dupl - Tool for code clone detection
  • goconst - Finds repeated strings that could be replaced by a constant
  • gocyclo - Computes and checks the cyclomatic complexity of functions
  • gocognit - Computes and checks the cognitive complexity of functions
  • asciicheck - Simple linter to check that your code does not contain non-ASCII identifiers
  • gofmt - Gofmt checks whether code was gofmt-ed. By default this tool runs with -s option to check for code simplification
  • gofumpt - Gofumpt checks whether code was gofumpt-ed.
  • goimports - Goimports does everything that gofmt does. Additionally it checks unused imports
  • goheader - Checks is file header matches to pattern
  • gci - Gci control golang package import order and make it always deterministic.
  • maligned - Tool to detect Go structs that would take less memory if their fields were sorted
  • depguard - Go linter that checks if package imports are in a list of acceptable packages
  • misspell - Finds commonly misspelled English words in comments
  • lll - Reports long lines
  • unparam - Reports unused function parameters
  • dogsled - Checks assignments with too many blank identifiers (e.g. x, , , _, := f())
  • nakedret - Finds naked returns in functions greater than a specified function length
  • prealloc - Finds slice declarations that could potentially be preallocated
  • scopelint - Scopelint checks for unpinned variables in go programs
  • gocritic - The most opinionated Go source code linter
  • gochecknoinits - Checks that no init functions are present in Go code
  • gochecknoglobals - Checks that no globals are present in Go code
  • godox - Tool for detection of FIXME, TODO and other comment keywords
  • funlen - Tool for detection of long functions
  • whitespace - Tool for detection of leading and trailing whitespace
  • wsl - Whitespace Linter - Forces you to use empty lines!
  • goprintffuncname - Checks that printf-like functions are named with f at the end
  • gomnd - An analyzer to detect magic numbers.
  • goerr113 - Golang linter to check the errors handling expressions
  • gomodguard - Allow and block list linter for direct Go module dependencies. This is different from depguard where there are different block types for example version constraints and module recommendations.
  • godot - Check if comments end in a period
  • testpackage - linter that makes you use a separate _test package
  • nestif - Reports deeply nested if statements
  • exportloopref - checks for pointers to enclosing loop variables
  • exhaustive - check exhaustiveness of enum switch statements
  • sqlclosecheck - Checks that sql.Rows and sql.Stmt are closed.
  • nlreturn - nlreturn checks for a new line before return and branch statements to increase code clarity
  • nolintlint - Reports ill-formed or insufficient nolint directives
Edit this page on GitHub