Table of Contents
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
- 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
- goimports - Goimports does everything that gofmt does. Additionally it checks unused imports
- 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
- nolintlint - Reports ill-formed or insufficient nolint directives