Table of Contents
To see a list of supported linters and which linters are enabled/disabled:
golangci-lint help linters
Enabled by Default
Name | Description | Presets | AutoFix | Since | |
---|---|---|---|---|---|
errcheck ⚙️ | errcheck is a program for checking for unchecked errors in Go code. These unchecked errors can be critical bugs in some cases | bugs, error | v1.0.0 | ||
gosimple ⚙️ | Linter for Go source code that specializes in simplifying code | style | v1.20.0 | ||
govet ⚙️ | Vet examines Go source code and reports suspicious constructs, such as Printf calls whose arguments do not align with the format string | bugs, metalinter | v1.0.0 | ||
ineffassign | Detects when assignments to existing variables are not used | unused | v1.0.0 | ||
staticcheck ⚙️ | It's a set of rules from staticcheck. It's not the same thing as the staticcheck binary. The author of staticcheck doesn't support or approve the use of staticcheck as a library inside golangci-lint. | bugs, metalinter | v1.0.0 | ||
typecheck | Like the front-end of a Go compiler, parses and type-checks Go code | bugs | v1.3.0 | ||
unused | Checks Go code for unused constants, variables, functions and types | unused | v1.20.0 |
Disabled by Default
Name | Description | Presets | AutoFix | Since | |
---|---|---|---|---|---|
asasalint ⚙️ | check for pass []any as any in variadic func(...any) | bugs | 1.47.0 | ||
asciicheck | Simple linter to check that your code does not contain non-ASCII identifiers | bugs, style | v1.26.0 | ||
bidichk ⚙️ | Checks for dangerous unicode character sequences | bugs | 1.43.0 | ||
bodyclose | checks whether HTTP response body is closed successfully | performance, bugs | v1.18.0 | ||
containedctx | containedctx is a linter that detects struct contained context.Context field | style | 1.44.0 | ||
contextcheck | check whether the function uses a non-inherited context | bugs | v1.43.0 | ||
cyclop ⚙️ | checks function and package cyclomatic complexity | complexity | v1.37.0 | ||
deadcode ⚠ | The owner seems to have abandoned the linter. Replaced by unused. | unused | v1.0.0 | ||
decorder ⚙️ | check declaration order and count of types, constants, variables and functions | format, style | v1.44.0 | ||
depguard ⚙️ | Go linter that checks if package imports are in a list of acceptable packages | style, import, module | v1.4.0 | ||
dogsled ⚙️ | Checks assignments with too many blank identifiers (e.g. x, , , _, := f()) | style | v1.19.0 | ||
dupl ⚙️ | Tool for code clone detection | style | v1.0.0 | ||
dupword ⚙️ | checks for duplicate words in the source code | comment | ✔ | 1.50.0 | |
durationcheck | check for two durations multiplied together | bugs | v1.37.0 | ||
errchkjson ⚙️ | Checks types passed to the json encoding functions. Reports unsupported types and optionally reports occasions, where the check for the returned error can be omitted. | bugs | 1.44.0 | ||
errname | Checks that sentinel errors are prefixed with the Err and error types are suffixed with the Error . | style | v1.42.0 | ||
errorlint ⚙️ | errorlint is a linter for that can be used to find code that will cause problems with the error wrapping scheme introduced in Go 1.13. | bugs, error | v1.32.0 | ||
execinquery | execinquery is a linter about query string checker in Query function which reads your Go src files and warning it finds | sql | v1.46.0 | ||
exhaustive ⚙️ | check exhaustiveness of enum switch statements | bugs | v1.28.0 | ||
exhaustivestruct ⚙️ ⚠ | The owner seems to have abandoned the linter. Replaced by exhaustruct. | style, test | v1.32.0 | ||
exhaustruct ⚙️ | Checks if all structure fields are initialized | style, test | v1.46.0 | ||
exportloopref | checks for pointers to enclosing loop variables | bugs | v1.28.0 | ||
forbidigo ⚙️ | Forbids identifiers | style | v1.34.0 | ||
forcetypeassert | finds forced type assertions | style | v1.38.0 | ||
funlen ⚙️ | Tool for detection of long functions | complexity | v1.18.0 | ||
gci ⚙️ | Gci controls Go package import order and makes it always deterministic. | format, import | v1.30.0 | ||
ginkgolinter ⚙️ | enforces standards of using ginkgo and gomega | style | v1.51.0 | ||
gocheckcompilerdirectives | Checks that go compiler directive comments (//go:) are valid. | bugs | v1.51.0 | ||
gochecknoglobals | check that no global variables exist This analyzer checks for global variables and errors on any found. A global variable is a variable declared in package scope and that can be read and written to by any function within the package. Global variables can cause side effects which are difficult to keep track of. A code in one function may change the variables state while another unrelated chunk of code may be effected by it. | style | v1.12.0 | ||
gochecknoinits | Checks that no init functions are present in Go code | style | v1.12.0 | ||
gocognit ⚙️ | Computes and checks the cognitive complexity of functions | complexity | v1.20.0 | ||
goconst ⚙️ | Finds repeated strings that could be replaced by a constant | style | v1.0.0 | ||
gocritic ⚙️ | Provides diagnostics that check for bugs, performance and style issues. Extensible without recompilation through dynamic rules. Dynamic rules are written declaratively with AST patterns, filters, report message and optional suggestion. | style, metalinter | v1.12.0 | ||
gocyclo ⚙️ | Computes and checks the cyclomatic complexity of functions | complexity | v1.0.0 | ||
godot ⚙️ | Check if comments end in a period | style, comment | ✔ | v1.25.0 | |
godox ⚙️ | Tool for detection of FIXME, TODO and other comment keywords | style, comment | v1.19.0 | ||
goerr113 | Go linter to check the errors handling expressions | style, error | v1.26.0 | ||
gofmt ⚙️ | Gofmt checks whether code was gofmt-ed. By default this tool runs with -s option to check for code simplification | format | ✔ | v1.0.0 | |
gofumpt ⚙️ | Gofumpt checks whether code was gofumpt-ed. | format | ✔ | v1.28.0 | |
goheader ⚙️ | Checks is file header matches to pattern | style | v1.28.0 | ||
goimports ⚙️ | Check import statements are formatted according to the 'goimport' command. Reformat imports in autofix mode. | format, import | ✔ | v1.20.0 | |
golint ⚙️ ⚠ | The repository of the linter has been archived by the owner. Replaced by revive. | style | v1.0.0 | ||
gomnd ⚙️ | An analyzer to detect magic numbers. | style | v1.22.0 | ||
gomoddirectives ⚙️ | Manage the use of 'replace', 'retract', and 'excludes' directives in go.mod. | style, module | v1.39.0 | ||
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. | style, import, module | v1.25.0 | ||
goprintffuncname | Checks that printf-like functions are named with f at the end | style | v1.23.0 | ||
gosec ⚙️ | Inspects source code for security problems | bugs | v1.0.0 | ||
gosmopolitan ⚙️ | Report certain i18n/l10n anti-patterns in your Go codebase | bugs | v1.53.0 | ||
grouper ⚙️ | An analyzer to analyze expression groups. | style | v1.44.0 | ||
ifshort ⚙️ ⚠ | The repository of the linter has been deprecated by the owner. | style | v1.36.0 | ||
importas ⚙️ | Enforces consistent import aliases | style | v1.38.0 | ||
interfacebloat ⚙️ | A linter that checks the number of methods inside an interface. | style | v1.49.0 | ||
interfacer ⚠ | The repository of the linter has been archived by the owner. | style | v1.0.0 | ||
ireturn ⚙️ | Accept Interfaces, Return Concrete Types | style | v1.43.0 | ||
lll ⚙️ | Reports long lines | style | v1.8.0 | ||
loggercheck ⚙️ | Checks key value pairs for common logger libraries (kitlog,klog,logr,zap). | style, bugs | v1.49.0 | ||
maintidx ⚙️ | maintidx measures the maintainability index of each function. | complexity | v1.44.0 | ||
makezero ⚙️ | Finds slice declarations with non-zero initial length | style, bugs | v1.34.0 | ||
maligned ⚙️ ⚠ | The repository of the linter has been archived by the owner. Replaced by govet 'fieldalignment'. | performance | v1.0.0 | ||
mirror | reports wrong mirror patterns of bytes/strings usage | style | v1.53.0 | ||
misspell ⚙️ | Finds commonly misspelled English words in comments | style, comment | ✔ | v1.8.0 | |
musttag ⚙️ | enforce field tags in (un)marshaled structs | style, bugs | v1.51.0 | ||
nakedret ⚙️ | Finds naked returns in functions greater than a specified function length | style | v1.19.0 | ||
nestif ⚙️ | Reports deeply nested if statements | complexity | v1.25.0 | ||
nilerr | Finds the code that returns nil even if it checks that the error is not nil. | bugs | v1.38.0 | ||
nilnil ⚙️ | Checks that there is no simultaneous return of nil error and an invalid value. | style | v1.43.0 | ||
nlreturn ⚙️ | nlreturn checks for a new line before return and branch statements to increase code clarity | style | v1.30.0 | ||
noctx | noctx finds sending http request without context.Context | performance, bugs | v1.28.0 | ||
nolintlint ⚙️ | Reports ill-formed or insufficient nolint directives | style | v1.26.0 | ||
nonamedreturns ⚙️ | Reports all named returns | style | v1.46.0 | ||
nosnakecase ⚠ | The repository of the linter has been deprecated by the owner. Replaced by revive(var-naming). | style | v1.47.0 | ||
nosprintfhostport | Checks for misuse of Sprintf to construct a host with port in a URL. | style | v1.46.0 | ||
paralleltest ⚙️ | paralleltest detects missing usage of t.Parallel() method in your Go test | style, test | v1.33.0 | ||
prealloc ⚙️ | Finds slice declarations that could potentially be pre-allocated | performance | v1.19.0 | ||
predeclared ⚙️ | find code that shadows one of Go's predeclared identifiers | style | v1.35.0 | ||
promlinter ⚙️ | Check Prometheus metrics naming via promlint | style | v1.40.0 | ||
reassign ⚙️ | Checks that package variables are not reassigned | bugs | 1.49.0 | ||
revive ⚙️ | Fast, configurable, extensible, flexible, and beautiful linter for Go. Drop-in replacement of golint. | style, metalinter | v1.37.0 | ||
rowserrcheck ⚙️ | checks whether Err of rows is checked successfully | bugs, sql | v1.23.0 | ||
scopelint ⚠ | The repository of the linter has been deprecated by the owner. Replaced by exportloopref. | bugs | v1.12.0 | ||
sqlclosecheck | Checks that sql.Rows and sql.Stmt are closed. | bugs, sql | v1.28.0 | ||
structcheck ⚙️ ⚠ | The owner seems to have abandoned the linter. Replaced by unused. | unused | v1.0.0 | ||
stylecheck ⚙️ | Stylecheck is a replacement for golint | style | v1.20.0 | ||
tagalign ⚙️ | check that struct tags are well aligned | style, format | ✔ | v1.53.0 | |
tagliatelle ⚙️ | Checks the struct tags. | style | v1.40.0 | ||
tenv ⚙️ | tenv is analyzer that detects using os.Setenv instead of t.Setenv since Go1.17 | style | v1.43.0 | ||
testableexamples | linter checks if examples are testable (have an expected output) | test | v1.50.0 | ||
testpackage ⚙️ | linter that makes you use a separate _test package | style, test | v1.25.0 | ||
thelper ⚙️ | thelper detects Go test helpers without t.Helper() call and checks the consistency of test helpers | style | v1.34.0 | ||
tparallel | tparallel detects inappropriate usage of t.Parallel() method in your Go test codes | style, test | v1.32.0 | ||
unconvert | Remove unnecessary type conversions | style | v1.0.0 | ||
unparam ⚙️ | Reports unused function parameters | unused | v1.9.0 | ||
usestdlibvars ⚙️ | A linter that detect the possibility to use variables/constants from the Go standard library. | style | v1.48.0 | ||
varcheck ⚙️ ⚠ | The owner seems to have abandoned the linter. Replaced by unused. | unused | v1.0.0 | ||
varnamelen ⚙️ | checks that the length of a variable's name matches its scope | style | v1.43.0 | ||
wastedassign | wastedassign finds wasted assignment statements. | style | v1.38.0 | ||
whitespace ⚙️ | Tool for detection of leading and trailing whitespace | style | ✔ | v1.19.0 | |
wrapcheck ⚙️ | Checks that errors returned from external packages are wrapped | style, error | v1.32.0 | ||
wsl ⚙️ | Whitespace Linter - Forces you to use empty lines! | style | v1.20.0 | ||
zerologlint | Detects the wrong usage of zerolog that a user forgets to dispatch with Send or Msg . | bugs | v1.53.0 |
Linters Configuration
asasalint
linters-settings:asasalint:# To specify a set of function names to exclude.# The values are merged with the builtin exclusions.# The builtin exclusions can be disabled by setting `use-builtin-exclusions` to `false`.# Default: ["^(fmt|log|logger|t|)\.(Print|Fprint|Sprint|Fatal|Panic|Error|Warn|Warning|Info|Debug|Log)(|f|ln)$"]exclude:- Append- \.Wrapf# To enable/disable the asasalint builtin exclusions of function names.# See the default value of `exclude` to get the builtin exclusions.# Default: trueuse-builtin-exclusions: false# Ignore *_test.go files.# Default: falseignore-test: true
bidichk
linters-settings:bidichk:# The following configurations check for all mentioned invisible unicode runes.# All runes are enabled by default.left-to-right-embedding: falseright-to-left-embedding: falsepop-directional-formatting: falseleft-to-right-override: falseright-to-left-override: falseleft-to-right-isolate: falseright-to-left-isolate: falsefirst-strong-isolate: falsepop-directional-isolate: false
cyclop
linters-settings:cyclop:# The maximal code complexity to report.# Default: 10max-complexity: 10# The maximal average package complexity.# If it's higher than 0.0 (float) the check is enabled# Default: 0.0package-average: 0.5# Should ignore tests.# Default: falseskip-tests: true
decorder
linters-settings:decorder:# Required order of `type`, `const`, `var` and `func` declarations inside a file.# Default: types before constants before variables before functions.dec-order:- type- const- var- func# If true, order of declarations is not checked at all.# Default: true (disabled)disable-dec-order-check: false# If true, `init` func can be anywhere in file (does not have to be declared before all other functions).# Default: true (disabled)disable-init-func-first-check: false# If true, multiple global `type`, `const` and `var` declarations are allowed.# Default: true (disabled)disable-dec-num-check: false
depguard
linters-settings:depguard:# Rules to apply.## Variables:# - File Variables# you can still use and exclamation mark ! in front of a variable to say not to use it.# Example !$test will match any file that is not a go test file.## `$all` - matches all go files# `$test` - matches all go test files## - Package Variables## `$gostd` - matches all of go's standard library (Pulled from `GOROOT`)## Default: Only allow $gostd in all files.rules:# Name of a rule.main:# List of file globs that will match this list of settings to compare against.# Default: $allfiles:- "!**/*_a _file.go"# List of allowed packages.allow:- $gostd- github.com/OpenPeeDeeP# Packages that are not allowed where the value is a suggestion.deny:- pkg: "github.com/sirupsen/logrus"desc: not allowed- pkg: "github.com/pkg/errors"desc: Should be replaced by standard lib errors package
dogsled
linters-settings:dogsled:# Checks assignments with too many blank identifiers.# Default: 2max-blank-identifiers: 3
dupl
linters-settings:dupl:# Tokens count to trigger issue.# Default: 150threshold: 100
dupword
linters-settings:dupword:# Keywords for detecting duplicate words.# If this list is not empty, only the words defined in this list will be detected.# Default: []keywords:- "the"- "and"- "a"
errcheck
linters-settings:errcheck:# Report about not checking of errors in type assertions: `a := b.(MyStruct)`.# Such cases aren't reported by default.# Default: falsecheck-type-assertions: true# report about assignment of errors to blank identifier: `num, _ := strconv.Atoi(numStr)`.# Such cases aren't reported by default.# Default: falsecheck-blank: true# DEPRECATED comma-separated list of pairs of the form pkg:regex## the regex is used to ignore names within pkg. (default "fmt:.*").# see https://github.com/kisielk/errcheck#the-deprecated-method for detailsignore: fmt:.*,io/ioutil:^Read.*# To disable the errcheck built-in exclude list.# See `-excludeonly` option in https://github.com/kisielk/errcheck#excluding-functions for details.# Default: falsedisable-default-exclusions: true# DEPRECATED use exclude-functions instead.## Path to a file containing a list of functions to exclude from checking.# See https://github.com/kisielk/errcheck#excluding-functions for details.exclude: /path/to/file.txt# List of functions to exclude from checking, where each entry is a single function to exclude.# See https://github.com/kisielk/errcheck#excluding-functions for details.exclude-functions:- io/ioutil.ReadFile- io.Copy(*bytes.Buffer)- io.Copy(os.Stdout)
errchkjson
linters-settings:errchkjson:# With check-error-free-encoding set to true, errchkjson does warn about errors# from json encoding functions that are safe to be ignored,# because they are not possible to happen.## if check-error-free-encoding is set to true and errcheck linter is enabled,# it is recommended to add the following exceptions to prevent from false positives:## linters-settings:# errcheck:# exclude-functions:# - encoding/json.Marshal# - encoding/json.MarshalIndent## Default: falsecheck-error-free-encoding: true# Issue on struct encoding that doesn't have exported fields.# Default: falsereport-no-exported: false
errorlint
linters-settings:errorlint:# Check whether fmt.Errorf uses the %w verb for formatting errors.# See the https://github.com/polyfloyd/go-errorlint for caveats.# Default: trueerrorf: false# Permit more than 1 %w verb, valid per Go 1.20 (Requires errorf:true)# Default: trueerrorf-multi: false# Check for plain type assertions and type switches.# Default: trueasserts: false# Check for plain error comparisons.# Default: truecomparison: false
exhaustive
linters-settings:exhaustive:# Program elements to check for exhaustiveness.# Default: [ switch ]check:- switch- map# Check switch statements in generated files also.# Default: falsecheck-generated: true# Presence of "default" case in switch statements satisfies exhaustiveness,# even if all enum members are not listed.# Default: falsedefault-signifies-exhaustive: true# Enum members matching the supplied regex do not have to be listed in# switch statements to satisfy exhaustiveness.# Default: ""ignore-enum-members: "Example.+"# Enum types matching the supplied regex do not have to be listed in# switch statements to satisfy exhaustiveness.# Default: ""ignore-enum-types: "Example.+"# Consider enums only in package scopes, not in inner scopes.# Default: falsepackage-scope-only: true# Only run exhaustive check on switches with "//exhaustive:enforce" comment.# Default: falseexplicit-exhaustive-switch: true# Only run exhaustive check on map literals with "//exhaustive:enforce" comment.# Default: falseexplicit-exhaustive-map: true
exhaustivestruct
linters-settings:exhaustivestruct:# Struct Patterns is list of expressions to match struct packages and names.# The struct packages have the form `example.com/package.ExampleStruct`.# The matching patterns can use matching syntax from https://pkg.go.dev/path#Match.# If this list is empty, all structs are tested.# Default: []struct-patterns:- '*.Test'- 'example.com/package.ExampleStruct'
exhaustruct
linters-settings:exhaustruct:# List of regular expressions to match struct packages and names.# If this list is empty, all structs are tested.# Default: []include:- '.*\.Test'- 'example\.com/package\.ExampleStruct[\d]{1,2}'# List of regular expressions to exclude struct packages and names from check.# Default: []exclude:- 'cobra\.Command$'
forbidigo
linters-settings:forbidigo:# Forbid the following identifiers (list of regexp).# Default: ["^(fmt\\.Print(|f|ln)|print|println)$"]forbid:# Builtin function:- ^print.*$# Optional message that gets included in error reports.- p: ^fmt\.Print.*$msg: Do not commit print statements.# Alternatively, put messages at the end of the regex, surrounded by `(# )?`# Escape any special characters. Those messages get included in error reports.- 'fmt\.Print.*(# Do not commit print statements\.)?'# Forbid spew Dump, whether it is called as function or method.# Depends on analyze-types below.- ^spew\.(ConfigState\.)?Dump$# The package name might be ambiguous.# The full import path can be used as additional criteria.# Depends on analyze-types below.- p: ^v1.Dump$pkg: ^example.com/pkg/api/v1$# Exclude godoc examples from forbidigo checks.# Default: trueexclude-godoc-examples: false# Instead of matching the literal source code,# use type information to replace expressions with strings that contain the package name# and (for methods and fields) the type name.# This makes it possible to handle import renaming and forbid struct fields and methods.# Default: falseanalyze-types: true
funlen
linters-settings:funlen:# Checks the number of lines in a function.# If lower than 0, disable the check.# Default: 60lines: -1# Checks the number of statements in a function.# If lower than 0, disable the check.# Default: 40statements: -1
gci
linters-settings:gci:# DEPRECATED: use `sections` and `prefix(github.com/org/project)` instead.local-prefixes: github.com/org/project# Section configuration to compare against.# Section names are case-insensitive and may contain parameters in ().# The default order of sections is `standard > default > custom > blank > dot`,# If `custom-order` is `true`, it follows the order of `sections` option.# Default: ["standard", "default"]sections:- standard # Standard section: captures all standard packages.- default # Default section: contains all imports that could not be matched to another section type.- prefix(github.com/org/project) # Custom section: groups all imports with the specified Prefix.- blank # Blank section: contains all blank imports. This section is not present unless explicitly enabled.- dot # Dot section: contains all dot imports. This section is not present unless explicitly enabled.# Skip generated files.# Default: trueskip-generated: false# Enable custom order of sections.# If `true`, make the section order the same as the order of `sections`.# Default: falsecustom-order: true
ginkgolinter
linters-settings:ginkgolinter:# Suppress the wrong length assertion warning.# Default: falsesuppress-len-assertion: true# Suppress the wrong nil assertion warning.# Default: falsesuppress-nil-assertion: true# Suppress the wrong error assertion warning.# Default: falsesuppress-err-assertion: true# Suppress the wrong comparison assertion warning.# Default: falsesuppress-compare-assertion: true# Suppress the function all in async assertion warning.# Default: falsesuppress-async-assertion: true# Don't trigger warnings for HaveLen(0)# Default: falseallow-havelen-zero: true
gocognit
linters-settings:gocognit:# Minimal code complexity to report.# Default: 30 (but we recommend 10-20)min-complexity: 10
goconst
linters-settings:goconst:# Minimal length of string constant.# Default: 3min-len: 2# Minimum occurrences of constant string count to trigger issue.# Default: 3min-occurrences: 2# Ignore test files.# Default: falseignore-tests: true# Look for existing constants matching the values.# Default: truematch-constant: false# Search also for duplicated numbers.# Default: falsenumbers: true# Minimum value, only works with goconst.numbers# Default: 3min: 2# Maximum value, only works with goconst.numbers# Default: 3max: 2# Ignore when constant is not used as function argument.# Default: trueignore-calls: false
gocritic
linters-settings:gocritic:# Which checks should be enabled; can't be combined with 'disabled-checks'.# See https://go-critic.github.io/overview#checks-overview.# To check which checks are enabled run `GL_DEBUG=gocritic golangci-lint run`.# By default, list of stable checks is used.enabled-checks:- nestingReduce- unnamedResult- ruleguard- truncateCmp# Which checks should be disabled; can't be combined with 'enabled-checks'.# Default: []disabled-checks:- regexpMust# Enable multiple checks by tags, run `GL_DEBUG=gocritic golangci-lint run` to see all tags and checks.# See https://github.com/go-critic/go-critic#usage -> section "Tags".# Default: []enabled-tags:- diagnostic- style- performance- experimental- opinionateddisabled-tags:- diagnostic- style- performance- experimental- opinionated# Settings passed to gocritic.# The settings key is the name of a supported gocritic checker.# The list of supported checkers can be find in https://go-critic.github.io/overview.settings:# Must be valid enabled check name.captLocal:# Whether to restrict checker to params only.# Default: trueparamsOnly: falseelseif:# Whether to skip balanced if-else pairs.# Default: trueskipBalanced: falsehugeParam:# Size in bytes that makes the warning trigger.# Default: 80sizeThreshold: 70nestingReduce:# Min number of statements inside a branch to trigger a warning.# Default: 5bodyWidth: 4rangeExprCopy:# Size in bytes that makes the warning trigger.# Default: 512sizeThreshold: 516# Whether to check test functions# Default: trueskipTestFuncs: falserangeValCopy:# Size in bytes that makes the warning trigger.# Default: 128sizeThreshold: 32# Whether to check test functions.# Default: trueskipTestFuncs: falseruleguard:# Enable debug to identify which 'Where' condition was rejected.# The value of the parameter is the name of a function in a ruleguard file.## When a rule is evaluated:# If:# The Match() clause is accepted; and# One of the conditions in the Where() clause is rejected,# Then:# ruleguard prints the specific Where() condition that was rejected.## The flag is passed to the ruleguard 'debug-group' argument.# Default: ""debug: 'emptyDecl'# Deprecated, use 'failOn' param.# If set to true, identical to failOn='all', otherwise failOn=''failOnError: false# Determines the behavior when an error occurs while parsing ruleguard files.# If flag is not set, log error and skip rule files that contain an error.# If flag is set, the value must be a comma-separated list of error conditions.# - 'all': fail on all errors.# - 'import': ruleguard rule imports a package that cannot be found.# - 'dsl': gorule file does not comply with the ruleguard DSL.# Default: ""failOn: dsl# Comma-separated list of file paths containing ruleguard rules.# If a path is relative, it is relative to the directory where the golangci-lint command is executed.# The special '${configDir}' variable is substituted with the absolute directory containing the golangci config file.# Glob patterns such as 'rules-*.go' may be specified.# Default: ""rules: '${configDir}/ruleguard/rules-*.go,${configDir}/myrule1.go'# Comma-separated list of enabled groups or skip empty to enable everything.# Tags can be defined with # character prefix.# Default: "<all>"enable: "myGroupName,#myTagName"# Comma-separated list of disabled groups or skip empty to enable everything.# Tags can be defined with # character prefix.# Default: ""disable: "myGroupName,#myTagName"tooManyResultsChecker:# Maximum number of results.# Default: 5maxResults: 10truncateCmp:# Whether to skip int/uint/uintptr types.# Default: trueskipArchDependent: falseunderef:# Whether to skip (*x).method() calls where x is a pointer receiver.# Default: trueskipRecvDeref: falseunnamedResult:# Whether to check exported functions.# Default: falsecheckExported: true
gocyclo
linters-settings:gocyclo:# Minimal code complexity to report.# Default: 30 (but we recommend 10-20)min-complexity: 10
godot
linters-settings:godot:# Comments to be checked: `declarations`, `toplevel`, or `all`.# Default: declarationsscope: toplevel# List of regexps for excluding particular comment lines from check.# Default: []exclude:# Exclude todo and fixme comments.- "^fixme:"- "^todo:"# Check that each sentence ends with a period.# Default: trueperiod: false# Check that each sentence starts with a capital letter.# Default: falsecapital: true
godox
linters-settings:godox:# Report any comments starting with keywords, this is useful for TODO or FIXME comments that# might be left in the code accidentally and should be resolved before merging.# Default: ["TODO", "BUG", "FIXME"]keywords:- NOTE- OPTIMIZE # marks code that should be optimized before merging- HACK # marks hack-around that should be removed before merging
gofmt
linters-settings:gofmt:# Simplify code: gofmt with `-s` option.# Default: truesimplify: false# Apply the rewrite rules to the source before reformatting.# https://pkg.go.dev/cmd/gofmt# Default: []rewrite-rules:- pattern: 'interface{}'replacement: 'any'- pattern: 'a[b:len(a)]'replacement: 'a[b:]'
gofumpt
linters-settings:gofumpt:# Deprecated: use the global `run.go` instead.lang-version: "1.17"# Module path which contains the source code being formatted.# Default: ""module-path: github.com/org/project# Choose whether to use the extra rules.# Default: falseextra-rules: true
goheader
linters-settings:goheader:# Supports two types 'const` and `regexp`.# Values can be used recursively.# Default: {}values:const:# Define here const type values in format k:v.# For example:COMPANY: MY COMPANYregexp:# Define here regexp type values.# for example:AUTHOR: .*@mycompany\.com# The template use for checking.# Default: ""template: |-# Put here copyright header template for source code files# For example:# Note: {{ YEAR }} is a builtin value that returns the year relative to the current machine time.## {{ AUTHOR }} {{ COMPANY }} {{ YEAR }}# SPDX-License-Identifier: Apache-2.0# Licensed under the Apache License, Version 2.0 (the "License");# you may not use this file except in compliance with the License.# You may obtain a copy of the License at:# http://www.apache.org/licenses/LICENSE-2.0# Unless required by applicable law or agreed to in writing, software# distributed under the License is distributed on an "AS IS" BASIS,# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.# See the License for the specific language governing permissions and# limitations under the License.# As alternative of directive 'template', you may put the path to file with the template source.# Useful if you need to load the template from a specific file.# Default: ""template-path: /path/to/my/template.tmpl
goimports
linters-settings:goimports:# A comma-separated list of prefixes, which, if set, checks import paths# with the given prefixes are grouped after 3rd-party packages.# Default: ""local-prefixes: github.com/org/project
golint
linters-settings:golint:# Minimal confidence for issues.# Default: 0.8min-confidence: 0.7
gomnd
linters-settings:gomnd:# List of enabled checks, see https://github.com/tommy-muehle/go-mnd/#checks for description.# Default: ["argument", "case", "condition", "operation", "return", "assign"]checks:- argument- case- condition- operation- return- assign# List of numbers to exclude from analysis.# The numbers should be written as string.# Values always ignored: "1", "1.0", "0" and "0.0"# Default: []ignored-numbers:- '0666'- '0755'- '42'# List of file patterns to exclude from analysis.# Values always ignored: `.+_test.go`# Default: []ignored-files:- 'magic1_.+\.go$'# List of function patterns to exclude from analysis.# Following functions are always ignored: `time.Date`,# `strconv.FormatInt`, `strconv.FormatUint`, `strconv.FormatFloat`,# `strconv.ParseInt`, `strconv.ParseUint`, `strconv.ParseFloat`.# Default: []ignored-functions:- '^math\.'- '^http\.StatusText$'
gomoddirectives
linters-settings:gomoddirectives:# Allow local `replace` directives.# Default: falsereplace-local: false# List of allowed `replace` directives.# Default: []replace-allow-list:- launchpad.net/gocheck# Allow to not explain why the version has been retracted in the `retract` directives.# Default: falseretract-allow-no-explanation: false# Forbid the use of the `exclude` directives.# Default: falseexclude-forbidden: false
gomodguard
linters-settings:gomodguard:allowed:# List of allowed modules.# Default: []modules:- gopkg.in/yaml.v2# List of allowed module domains.# Default: []domains:- golang.orgblocked:# List of blocked modules.# Default: []modules:# Blocked module.- github.com/uudashr/go-module:# Recommended modules that should be used instead. (Optional)recommendations:- golang.org/x/mod# Reason why the recommended module should be used. (Optional)reason: "`mod` is the official go.mod parser library."# List of blocked module version constraints.# Default: []versions:# Blocked module with version constraint.- github.com/mitchellh/go-homedir:# Version constraint, see https://github.com/Masterminds/semver#basic-comparisons.version: "< 1.1.0"# Reason why the version constraint exists. (Optional)reason: "testing if blocked version constraint works."# Set to true to raise lint issues for packages that are loaded from a local path via replace directive.# Default: falselocal_replace_directives: false