cache/.golangci.yml

2279 lines
80 KiB
YAML
Raw Normal View History

2025-01-18 00:55:00 +01:00
# yaml-language-server: $schema=https://golangci-lint.run/jsonschema/golangci.jsonschema.json
# This file contains all available configuration options
# with their default values (in comments).
#
# This file is not a configuration example,
# it contains the exhaustive configuration with explanations of the options.
2021-11-19 13:21:46 +01:00
2025-01-18 00:55:00 +01:00
linters:
# Enable all available linters.
# Default: false
enable-all: true
# Disable specific linter
# https://golangci-lint.run/usage/linters/#disabled-by-default
disable:
- cyclop # Done by revive
- decorder # too restrictive
- depguard # gomodguard is better
- exhaustruct # Too noisy
- exportloopref # Deprecated
- funlen # Done by revive
- gocognit # Done by revive
- goconst # Done by revive
- gocyclo # Done by revive
- goheader
- goimports # done by gci with more flebibility
- lll # Done by revive with better messages
- mnd # Done by revive
- tagalign # too noisy and useless
2021-11-19 13:21:46 +01:00
2025-01-18 00:55:00 +01:00
# All available settings of specific linters.
2021-11-19 13:21:46 +01:00
linters-settings:
2025-01-18 00:55:00 +01:00
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: []
# To enable/disable the asasalint builtin exclusions of function names.
# See the default value of `exclude` to get the builtin exclusions.
# Default: true
use-builtin-exclusions: true
# Ignore *_test.go files.
# Default: false
ignore-test: false
bidichk:
# The following configurations check for all mentioned invisible Unicode runes.
# All runes are enabled by default.
left-to-right-embedding: true
right-to-left-embedding: true
pop-directional-formatting: true
left-to-right-override: true
right-to-left-override: true
left-to-right-isolate: true
right-to-left-isolate: true
first-strong-isolate: true
pop-directional-isolate: true
2021-11-19 13:21:46 +01:00
dogsled:
2025-01-18 00:55:00 +01:00
# Checks assignments with too many blank identifiers.
# Default: 2
2021-11-19 13:21:46 +01:00
max-blank-identifiers: 2
dupl:
2025-01-18 00:55:00 +01:00
# Tokens count to trigger issue.
# Default: 150
2021-11-19 13:21:46 +01:00
threshold: 100
2025-01-18 00:55:00 +01:00
dupword:
# Keywords for detecting duplicate words.
# If this list is not empty, only the words defined in this list will be detected.
# Default: []
keywords: []
# Keywords used to ignore detection.
# Default: []
ignore: []
2021-11-19 13:21:46 +01:00
errcheck:
2025-01-18 00:55:00 +01:00
# Report about not checking of errors in type assertions: `a := b.(MyStruct)`.
# Such cases aren't reported by default.
# Default: false
2021-11-19 13:21:46 +01:00
check-type-assertions: true
2025-01-18 00:55:00 +01:00
# report about assignment of errors to blank identifier: `num, _ := strconv.Atoi(numStr)`.
# Such cases aren't reported by default.
# Default: false
2021-11-19 13:21:46 +01:00
check-blank: true
2025-01-18 00:55:00 +01:00
# To disable the errcheck built-in exclude list.
# See `-excludeonly` option in https://github.com/kisielk/errcheck#excluding-functions for details.
# Default: false
#disable-default-exclusions: true
2021-11-19 13:21:46 +01:00
2025-01-18 00:55:00 +01:00
# 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.
2021-11-19 13:21:46 +01:00
exclude-functions:
- io.Copy(*bytes.Buffer)
- io.Copy(os.Stdout)
2025-01-18 00:55:00 +01:00
- encoding/json.Marshal
- encoding/json.MarshalIndent
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: false
check-error-free-encoding: true
# Issue on struct encoding that doesn't have exported fields.
# Default: false
report-no-exported: true
2021-11-19 13:21:46 +01:00
errorlint:
2025-01-18 00:55:00 +01:00
# Check whether fmt.Errorf uses the %w verb for formatting errors.
# See the https://github.com/polyfloyd/go-errorlint for caveats.
# Default: true
2021-11-19 13:21:46 +01:00
errorf: true
2025-01-18 00:55:00 +01:00
# Permit more than 1 %w verb, valid per Go 1.20 (Requires errorf:true)
# Default: true
errorf-multi: true
# Check for plain type assertions and type switches.
# Default: true
2021-11-19 13:21:46 +01:00
asserts: true
2025-01-18 00:55:00 +01:00
# Check for plain error comparisons.
# Default: true
2021-11-19 13:21:46 +01:00
comparison: true
2025-01-18 00:55:00 +01:00
# Allowed errors.
# Default: []
allowed-errors: []
# Allowed error "wildcards".
# Default: []
allowed-errors-wildcard: []
2021-11-19 13:21:46 +01:00
exhaustive:
2025-01-18 00:55:00 +01:00
# Program elements to check for exhaustiveness.
# Default: [ switch ]
check:
- switch
- map
# Check switch statements in generated files also.
# Default: false
2021-11-19 13:21:46 +01:00
check-generated: false
2025-01-18 00:55:00 +01:00
# Presence of "default" case in switch statements satisfies exhaustiveness,
# even if all enum members are not listed.
# Default: false
2021-11-19 13:21:46 +01:00
default-signifies-exhaustive: true
2025-01-18 00:55:00 +01:00
# 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: false
package-scope-only: false
# Only run exhaustive check on switches with "//exhaustive:enforce" comment.
# Default: false
explicit-exhaustive-switch: false
# Only run exhaustive check on map literals with "//exhaustive:enforce" comment.
# Default: false
explicit-exhaustive-map: false
# Switch statement requires default case even if exhaustive.
# Default: false
default-case-required: true
exhaustruct:
# List of regular expressions to match struct packages and their names.
# Regular expressions must match complete canonical struct package/name/structname.
# If this list is empty, all structs are tested.
# Default: []
include: []
# List of regular expressions to exclude struct packages and their names from checks.
# Regular expressions must match complete canonical struct package/name/structname.
# Default: []
exclude: []
2021-11-19 13:21:46 +01:00
forbidigo:
2025-01-18 00:55:00 +01:00
# Forbid the following identifiers (list of regexp).
# Default: ["^(fmt\\.Print(|f|ln)|print|println)$"]
2021-11-19 13:21:46 +01:00
forbid:
2025-01-18 00:55:00 +01:00
- p: ^(fmt\\.Print(|f|ln)|print|println)$
msg: Do not commit print statements.
# Exclude godoc examples from forbidigo checks.
# Default: true
2021-11-19 13:21:46 +01:00
exclude_godoc_examples: true
2025-01-18 00:55:00 +01:00
# 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: false
analyze-types: true
2021-11-19 13:21:46 +01:00
gci:
2025-01-18 00:55:00 +01:00
# 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 > alias > localmodule`,
# If `custom-order` is `true`, it follows the order of `sections` option.
# Default: ["standard", "default"]
sections:
- standard # Standard section: captures all standard packages.
- prefix(golang.org/x) # Custom section: groups all imports with the specified Prefix.
- default # Default section: contains all imports that could not be matched to another section type.
- 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.
- alias # Alias section: contains all alias imports. This section is not present unless explicitly enabled.
- localmodule # Local module section: contains all local packages. This section is not present unless explicitly enabled.
# Skip generated files.
# Default: true
skip-generated: true
# Enable custom order of sections.
# If `true`, make the section order the same as the order of `sections`.
# Default: false
custom-order: true
# Drops lexical ordering for custom sections.
# Default: false
no-lex-order: false
2021-11-19 13:21:46 +01:00
gocritic:
2025-01-18 00:55:00 +01:00
# Enable all checks.
# Default: false
enable-all: true
# Which checks should be disabled; can't be combined with 'enabled-checks'.
# Default: []
disabled-checks: []
2021-11-19 13:21:46 +01:00
# 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:
2025-01-18 00:55:00 +01:00
# Must be valid enabled check name.
captLocal:
# Whether to restrict checker to params only.
# Default: true
paramsOnly: false
commentedOutCode:
# Min length of the comment that triggers a warning.
# Default: 15
minLength: 10
2021-11-19 13:21:46 +01:00
elseif:
2025-01-18 00:55:00 +01:00
# Whether to skip balanced if-else pairs.
# Default: true
2021-11-19 13:21:46 +01:00
skipBalanced: true
hugeParam:
2025-01-18 00:55:00 +01:00
# Size in bytes that makes the warning trigger.
# Default: 80
sizeThreshold: 70
ifElseChain:
# Min number of if-else blocks that makes the warning trigger.
# Default: 2
minThreshold: 2
nestingReduce:
# Min number of statements inside a branch to trigger a warning.
# Default: 5
bodyWidth: 5
2021-11-19 13:21:46 +01:00
rangeExprCopy:
2025-01-18 00:55:00 +01:00
# Size in bytes that makes the warning trigger.
# Default: 512
2021-11-19 13:21:46 +01:00
sizeThreshold: 512
# whether to check test functions (default true)
skipTestFuncs: true
rangeValCopy:
# size in bytes that makes the warning trigger (default 128)
sizeThreshold: 128
# whether to check test functions (default true)
skipTestFuncs: true
# ruleguard:
# # path to a gorules file for the ruleguard checker
# rules: ''
# truncateCmp:
# # whether to skip int/uint/uintptr types (default true)
# skipArchDependent: true
underef:
2025-01-18 00:55:00 +01:00
# Whether to skip (*x).method() calls where x is a pointer receiver.
# Default: true
2021-11-19 13:21:46 +01:00
skipRecvDeref: true
2025-01-18 00:55:00 +01:00
unnamedResult:
# Whether to check exported functions.
# Default: false
checkExported: true
2021-11-19 13:21:46 +01:00
godot:
2025-01-18 00:55:00 +01:00
# Comments to be checked: `declarations`, `toplevel`, or `all`.
# Default: declarations
scope: declarations
# List of regexps for excluding particular comment lines from check.
# Default: []
2021-11-19 13:21:46 +01:00
exclude:
# example: exclude comments which contain numbers
# - '[0-9]+'
# check that each sentence starts with a capital letter
capital: true
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
keywords: # default keywords are TODO, BUG, and FIXME, these can be overwritten by this setting
- NOTE
- OPTIMIZE # marks code that should be optimized before merging
2025-01-18 00:55:00 +01:00
- HACK # marks hack-around that should be removed before merging
2021-11-19 13:21:46 +01:00
gofmt:
2025-01-18 00:55:00 +01:00
# Simplify code: gofmt with `-s` option.
# Default: true
2021-11-19 13:21:46 +01:00
simplify: true
2025-01-18 00:55:00 +01:00
# 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:]'
2021-11-19 13:21:46 +01:00
gofumpt:
2025-01-18 00:55:00 +01:00
# Module path which contains the source code being formatted.
# Default: ""
module-path: ""
# Choose whether to use the extra rules.
# Default: false
extra-rules: true
2021-11-19 13:21:46 +01:00
gomoddirectives:
2025-01-18 00:55:00 +01:00
# Allow local `replace` directives.
# Default: false
2021-11-19 13:21:46 +01:00
replace-local: false
2025-01-18 00:55:00 +01:00
# 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: false
#retract-allow-no-explanation: false
# Forbid the use of the `exclude` directives.
# Default: false
#exclude-forbidden: false
2021-11-19 13:21:46 +01:00
gomodguard:
allowed:
2025-01-18 00:55:00 +01:00
# List of allowed modules.
# Default: []
modules:
- github.com/stretchr/testify
- modernc.org/sqlite
# List of allowed module domains.
# Default: []
domains:
- golang.org
- code.bcarlin.xyz
- code.bcarlin.net
- code.waarp.fr
blocked:
# List of blocked modules.
# Default: []
modules:
# Blocked module.
- github.com/mattn/go-sqlite3:
recommendations:
- modernc.org/sqlite
reason: "sqlite is pure-go"
# 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: false
#local_replace_directives: false
2021-11-19 13:21:46 +01:00
gosec:
# To select a subset of rules to run.
# Available rules: https://github.com/securego/gosec#available-rules
2025-01-18 00:55:00 +01:00
# Default: [] - means include all rules
includes: []
2021-11-19 13:21:46 +01:00
# To specify a set of rules to explicitly exclude.
# Available rules: https://github.com/securego/gosec#available-rules
2025-01-18 00:55:00 +01:00
excludes: []
# Exclude generated files
# Default: false
exclude-generated: true
# Filter out the issues with a lower severity than the given value.
# Valid options are: low, medium, high.
# Default: low
severity: low
# Filter out the issues with a lower confidence than the given value.
# Valid options are: low, medium, high.
# Default: low
confidence: low
# Concurrency value.
# Default: the number of logical CPUs usable by the current process.
#concurrency: 12
2021-11-19 13:21:46 +01:00
# To specify the configuration of rules.
2025-01-18 00:55:00 +01:00
config:
# Globals are applicable to all rules.
global:
# If true, ignore #nosec in comments (and an alternative as well).
# Default: false
nosec: false
# Add an alternative comment prefix to #nosec (both will work at the same time).
# Default: ""
#"#nosec": "#my-custom-nosec"
# Define whether nosec issues are counted as finding or not.
# Default: false
show-ignored: false
# Audit mode enables addition checks that for normal code analysis might be too nosy.
# Default: false
audit: true
G101:
# Regexp pattern for variables and constants to find.
# Default: "(?i)passwd|pass|password|pwd|secret|token|pw|apiKey|bearer|cred"
#pattern: "(?i)passwd|pass|password|pwd|secret|token|pw|apiKey|bearer|cred"
# If true, complain about all cases (even with low entropy).
# Default: false
ignore_entropy: true
# Maximum allowed entropy of the string.
# Default: "80.0"
entropy_threshold: "80.0"
# Maximum allowed value of entropy/string length.
# Is taken into account if entropy >= entropy_threshold/2.
# Default: "3.0"
per_char_threshold: "3.0"
# Calculate entropy for first N chars of the string.
# Default: "16"
truncate: "32"
# Additional functions to ignore while checking unhandled errors.
# Following functions always ignored:
# bytes.Buffer:
# - Write
# - WriteByte
# - WriteRune
# - WriteString
# fmt:
# - Print
# - Printf
# - Println
# - Fprint
# - Fprintf
# - Fprintln
# strings.Builder:
# - Write
# - WriteByte
# - WriteRune
# - WriteString
# io.PipeWriter:
# - CloseWithError
# hash.Hash:
# - Write
# os:
# - Unsetenv
# Default: {}
G104:
json:
- Marshal
- MarshalIndent
G111:
# Regexp pattern to find potential directory traversal.
# Default: "http\\.Dir\\(\"\\/\"\\)|http\\.Dir\\('\\/'\\)"
#pattern: "custom\\.Dir\\(\\)"
# Maximum allowed permissions mode for os.Mkdir and os.MkdirAll
# Default: "0750"
G301: "0750"
# Maximum allowed permissions mode for os.OpenFile and os.Chmod
# Default: "0600"
G302: "0600"
# Maximum allowed permissions mode for os.WriteFile and ioutil.WriteFile
# Default: "0600"
G306: "0600"
2021-11-19 13:21:46 +01:00
gosimple:
2025-01-18 00:55:00 +01:00
# Sxxxx checks in https://staticcheck.dev/docs/configuration/options/#checks
# Default: ["*"]
checks: [ "*" ]
gosmopolitan:
# Allow and ignore `time.Local` usages.
#
# Default: false
allow-time-local: false
# List of fully qualified names in the `full/pkg/path.name` form, to act as "i18n escape hatches".
# String literals inside call-like expressions to, or struct literals of those names,
# are exempt from the writing system check.
#
# Default: []
escape-hatches: []
# Ignore test files.
#
# Default: true
ignore-tests: true
# List of Unicode scripts to watch for any usage in string literals.
# https://pkg.go.dev/unicode#pkg-variables
#
# Default: ["Han"]
#watch-for-scripts:
# - Devanagari
# - Han
# - Hangul
# - Hiragana
# - Katakana
2021-11-19 13:21:46 +01:00
govet:
2025-01-18 00:55:00 +01:00
# Disable all analyzers.
# Default: false
disable-all: false
# Enable analyzers by name.
# (in addition to default:
# appends, asmdecl, assign, atomic, bools, buildtag, cgocall, composites, copylocks, defers, directive, errorsas,
# framepointer, httpresponse, ifaceassert, loopclosure, lostcancel, nilfunc, printf, shift, sigchanyzer, slog,
# stdmethods, stringintconv, structtag, testinggoroutine, tests, timeformat, unmarshal, unreachable, unsafeptr,
# unusedresult
# ).
# Run `GL_DEBUG=govet golangci-lint run --enable=govet` to see default, all available analyzers, and enabled analyzers.
# Default: []
enable: []
# Enable all analyzers.
# Default: false
enable-all: true
# Disable analyzers by name.
# (in addition to default
# atomicalign, deepequalerrors, fieldalignment, findcall, nilness, reflectvaluecompare, shadow, sortslice,
# timeformat, unusedwrite
# ).
# Run `GL_DEBUG=govet golangci-lint run --enable=govet` to see default, all available analyzers, and enabled analyzers.
# Default: []
disable:
- fieldalignment
# Settings per analyzer.
settings:
# Analyzer name, run `go tool vet help` to see all analyzers.
printf: {}
# Comma-separated list of print function names to check (in addition to default, see `go tool vet help printf`).
# Default: []
#funcs:
# - (github.com/golangci/golangci-lint/pkg/logutils.Log).Infof
# - (github.com/golangci/golangci-lint/pkg/logutils.Log).Warnf
# - (github.com/golangci/golangci-lint/pkg/logutils.Log).Errorf
# - (github.com/golangci/golangci-lint/pkg/logutils.Log).Fatalf
shadow:
# Whether to be strict about shadowing; can be noisy.
# Default: false
strict: true
unusedresult:
# Comma-separated list of functions whose results must be used
# (in addition to default:
# context.WithCancel, context.WithDeadline, context.WithTimeout, context.WithValue, errors.New, fmt.Errorf,
# fmt.Sprint, fmt.Sprintf, sort.Reverse
# ).
# Default: []
funcs: []
# - pkg.MyFunc
# Comma-separated list of names of methods of type func() string whose results must be used
# (in addition to default Error,String)
# Default: []
#stringmethods:
# - MyMethod
grouper:
# Require the use of a single global 'const' declaration only.
# Default: false
const-require-single-const: true
# Require the use of grouped global 'const' declarations.
# Default: false
const-require-grouping: false
# Require the use of a single 'import' declaration only.
# Default: false
import-require-single-import: true
# Require the use of grouped 'import' declarations.
# Default: false
import-require-grouping: false
# Require the use of a single global 'type' declaration only.
# Default: false
type-require-single-type: false
# Require the use of grouped global 'type' declarations.
# Default: false
type-require-grouping: false
# Require the use of a single global 'var' declaration only.
# Default: false
var-require-single-var: false
# Require the use of grouped global 'var' declarations.
# Default: false
var-require-grouping: false
iface:
# List of analyzers.
# Default: ["identical"]
enable:
- identical # Identifies interfaces in the same package that have identical method sets.
- unused # Identifies interfaces that are not used anywhere in the same package where the interface is defined.
- opaque # Identifies functions that return interfaces, but the actual returned value is always a single concrete implementation.
settings:
unused:
# List of packages path to exclude from the check.
# Default: []
exclude:
- github.com/example/log
2021-11-19 13:21:46 +01:00
importas:
2025-01-18 00:55:00 +01:00
# Do not allow unaliased imports of aliased packages.
# Default: false
#no-unaliased: true
# Do not allow non-required aliases.
# Default: false
no-extra-aliases: true
2021-11-19 13:21:46 +01:00
# List of aliases
2025-01-18 00:55:00 +01:00
# Default: []
2021-11-19 13:21:46 +01:00
alias:
2025-01-18 00:55:00 +01:00
# Using `servingv1` alias for `knative.dev/serving/pkg/apis/serving/v1` package.
2021-11-19 13:21:46 +01:00
#- pkg: knative.dev/serving/pkg/apis/serving/v1
# alias: servingv1
2025-01-18 00:55:00 +01:00
# Using `autoscalingv1alpha1` alias for `knative.dev/serving/pkg/apis/autoscaling/v1alpha1` package.
2021-11-19 13:21:46 +01:00
#- pkg: knative.dev/serving/pkg/apis/autoscaling/v1alpha1
# alias: autoscalingv1alpha1
# You can specify the package path by regular expression,
# and alias by regular expression expansion syntax like below.
# see https://github.com/julz/importas#use-regular-expression for details
2025-01-18 00:55:00 +01:00
- pkg: knative.dev/serving/pkg/apis/(\w+)/(v[\w\d]+)
alias: $1$2
inamedparam:
# Skips check for interface methods with only a single parameter.
# Default: false
skip-single-param: false
interfacebloat:
# The maximum number of methods allowed for an interface.
# Default: 10
max: 5
ireturn:
# List of interfaces to allow.
# Lists of the keywords and regular expressions matched to interface or package names can be used.
# `allow` and `reject` settings cannot be used at the same time.
#
# Keywords:
# - `empty` for `interface{}`
# - `error` for errors
# - `stdlib` for standard library
# - `anon` for anonymous interfaces
# - `generic` for generic interfaces added in go 1.18
#
# Default: [anon, error, empty, stdlib]
2021-11-19 13:21:46 +01:00
allow:
2025-01-18 00:55:00 +01:00
- anon
2021-11-19 13:21:46 +01:00
- error
- empty
- stdlib
2025-01-18 00:55:00 +01:00
- generic
# You can specify idiomatic endings for interface
#- (or|er)$
# List of interfaces to reject.
# Lists of the keywords and regular expressions matched to interface or package names can be used.
# `allow` and `reject` settings cannot be used at the same time.
#
# Keywords:
# - `empty` for `interface{}`
# - `error` for errors
# - `stdlib` for standard library
# - `anon` for anonymous interfaces
# - `generic` for generic interfaces added in go 1.18
#
# Default: []
#reject:
# - github.com\/user\/package\/v4\.Type
loggercheck:
# Allow check for the github.com/go-kit/log library.
# Default: true
kitlog: false
# Allow check for the k8s.io/klog/v2 library.
# Default: true
klog: false
# Allow check for the github.com/go-logr/logr library.
# Default: true
logr: false
# Allow check for the "sugar logger" from go.uber.org/zap library.
# Default: true
zap: false
# Require all logging keys to be inlined constant strings.
# Default: false
require-string-key: true
# Require printf-like format specifier (%s, %d for example) not present.
# Default: false
#no-printf-like: true
# List of custom rules to check against, where each rule is a single logger pattern, useful for wrapped loggers.
# For example: https://github.com/timonwong/loggercheck/blob/7395ab86595781e33f7afba27ad7b55e6956ebcd/testdata/custom-rules.txt
# Default: empty
#rules:
# - k8s.io/klog/v2.InfoS # package level exported functions
# - (github.com/go-logr/logr.Logger).Error # "Methods"
# - (*go.uber.org/zap.SugaredLogger).With # Also "Methods", but with a pointer receiver
maintidx:
# Show functions with maintainability index lower than N.
# A high index indicates better maintainability (it's kind of the opposite of complexity).
# Default: 20
under: 20
2021-11-19 13:21:46 +01:00
makezero:
2025-01-18 00:55:00 +01:00
# Allow only slices initialized with a length of zero.
# Default: false
2021-11-19 13:21:46 +01:00
always: false
misspell:
# Correct spellings using locale preferences for US or UK.
# Setting locale to US will correct the British spelling of 'colour' to 'color'.
2025-01-18 00:55:00 +01:00
# Default is to use a neutral variety of English.
2021-11-19 13:21:46 +01:00
locale: US
2025-01-18 00:55:00 +01:00
# Typos to ignore.
# Should be in lower case.
# Default: []
ignore-words: []
#- someword
# Extra word corrections.
# `typo` and `correction` should only contain letters.
# The words are case-insensitive.
# Default: []
extra-words:
- typo: "iff"
correction: "if"
- typo: "cancelation"
correction: "cancellation"
# Mode of the analysis:
# - default: checks all the file content.
# - restricted: checks only comments.
# Default: ""
mode: restricted
musttag:
# A set of custom functions to check in addition to the builtin ones.
# Default: json, xml, gopkg.in/yaml.v3, BurntSushi/toml, mitchellh/mapstructure, jmoiron/sqlx
functions: []
# The full name of the function, including the package.
#- name: github.com/jmoiron/sqlx.Get
# # The struct tag whose presence should be ensured.
# tag: db
# # The position of the argument to check.
# arg-pos: 1
2021-11-19 13:21:46 +01:00
nakedret:
2025-01-18 00:55:00 +01:00
# Make an issue if func has more lines of code than this setting, and it has naked returns.
# Default: 30
2021-11-19 13:21:46 +01:00
max-func-lines: 30
2025-01-18 00:55:00 +01:00
nestif:
# Minimal complexity of if statements to report.
# Default: 5
min-complexity: 5
nilnil:
# In addition, detect opposite situation (simultaneous return of non-nil error and valid value).
# Default: false
detect-opposite: true
# List of return types to check.
# Default: ["chan", "func", "iface", "map", "ptr", "uintptr", "unsafeptr"]
#checked-types:
# - chan
# - func
# - iface
# - map
# - ptr
# - uintptr
# - unsafeptr
nlreturn:
# Size of the block (including return statement that is still "OK")
# so no return split required.
# Default: 1
block-size: 2
nolintlint:
# Disable to ensure that all nolint directives actually have an effect.
# Default: false
allow-unused: false
# Exclude following linters from requiring an explanation.
# Default: []
allow-no-explanation: [ ]
# Enable to require an explanation of nonzero length after each nolint directive.
# Default: false
require-explanation: true
# Enable to require nolint directives to mention the specific linter being suppressed.
# Default: false
require-specific: true
nonamedreturns:
# Report named error if it is assigned inside defer.
# Default: false
report-error-in-defer: true
paralleltest:
# Ignore missing calls to `t.Parallel()` and only report incorrect uses of it.
# Default: false
ignore-missing: false
# Ignore missing calls to `t.Parallel()` in subtests. Top-level tests are
# still required to have `t.Parallel`, but subtests are allowed to skip it.
# Default: false
ignore-missing-subtests: true
perfsprint:
# Optimizes even if it requires an int or uint type cast.
# Default: true
int-conversion: true
# Optimizes into `err.Error()` even if it is only equivalent for non-nil errors.
# Default: false
err-error: true
# Optimizes `fmt.Errorf`.
# Default: true
errorf: true
# Optimizes `fmt.Sprintf` with only one argument.
# Default: true
sprintf1: true
# Optimizes into strings concatenation.
# Default: true
strconcat: true
2021-11-19 13:21:46 +01:00
prealloc:
2025-01-18 00:55:00 +01:00
# IMPORTANT: we don't recommend using this linter before doing performance profiling.
2021-11-19 13:21:46 +01:00
# For most programs usage of prealloc will be a premature optimization.
2025-01-18 00:55:00 +01:00
# Report pre-allocation suggestions only on simple loops that have no returns/breaks/continues/gotos in them.
# Default: true
2021-11-19 13:21:46 +01:00
simple: true
2025-01-18 00:55:00 +01:00
# Report pre-allocation suggestions on range loops.
# Default: true
range-loops: true
# Report pre-allocation suggestions on for loops.
# Default: false
for-loops: true
predeclared:
# Comma-separated list of predeclared identifiers to not report on.
# Default: ""
ignore: ""
# Include method names and field names (i.e., qualified names) in checks.
# Default: false
q: true
2021-11-19 13:21:46 +01:00
promlinter:
# Promlinter cannot infer all metrics name in static analysis.
# Enable strict mode will also include the errors caused by failing to parse the args.
2025-01-18 00:55:00 +01:00
# Default: false
strict: true
2021-11-19 13:21:46 +01:00
# Please refer to https://github.com/yeya24/promlinter#usage for detailed usage.
2025-01-18 00:55:00 +01:00
# Default: []
disabled-linters: []
# Help detects issues related to the help text for a metric.
#- Help
# MetricUnits detects issues with metric unit names.
#- MetricUnits
# Counter detects issues specific to counters, as well as patterns that should only be used with counters.
#- Counter
# HistogramSummaryReserved detects when other types of metrics use names or labels reserved for use by histograms and/or summaries.
#- HistogramSummaryReserved
# MetricTypeInName detects when metric types are included in the metric name.
#- MetricTypeInName
# ReservedChars detects colons in metric names.
#- ReservedChars
# CamelCase detects metric names and label names written in camelCase.
#- CamelCase
# UnitAbbreviations detects abbreviated units in the metric name.
#- UnitAbbreviations
protogetter:
# Skip files generated by specified generators from the checking.
# Checks only the file's initial comment, which must follow the format: "// Code generated by <generator-name>".
# Files generated by protoc-gen-go, protoc-gen-go-grpc, and protoc-gen-grpc-gateway are always excluded automatically.
# Default: []
skip-generated-by: ["protoc-gen-go-my-own-generator"]
# Skip files matching the specified glob pattern from the checking.
# Default: []
skip-files:
- "*.pb.go"
- "*/vendor/*"
- "/full/path/to/file.go"
# Skip any generated files from the checking.
# Default: false
skip-any-generated: true
# Skip first argument of append function.
# Default: false
replace-first-arg-in-append: true
reassign:
# Patterns for global variable names that are checked for reassignment.
# See https://github.com/curioswitch/go-reassign#usage
# Default: ["EOF", "Err.*"]
patterns:
- ".*"
2021-11-19 13:21:46 +01:00
2025-01-18 00:55:00 +01:00
revive:
# Maximum number of open files at the same time.
# See https://github.com/mgechev/revive#command-line-flags
# Defaults to unlimited.
#max-open-files: 2048
# When set to false, ignores files with "GENERATED" header, similar to golint.
# See https://github.com/mgechev/revive#configuration for details.
# Default: false
ignore-generated-header: true
2021-11-19 13:21:46 +01:00
2025-01-18 00:55:00 +01:00
# Sets the default severity.
# See https://github.com/mgechev/revive#configuration
# Default: warning
#severity: error
# Enable all available rules.
# Default: false
enable-all-rules: true
# Sets the default failure confidence.
# This means that linting errors with less than 0.8 confidence will be ignored.
# Default: 0.8
#confidence: 0.1
rules:
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#add-constant
- name: add-constant
severity: warning
disabled: false
exclude: [""]
arguments:
- maxLitCount: "3"
allowStrs: '""'
allowInts: "0,1,2,0o600,0o700"
allowFloats: "0.0,0.,1.0,1.,2.0,2."
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#argument-limit
- name: argument-limit
severity: warning
disabled: false
exclude: [""]
arguments: [ 4 ]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#atomic
- name: atomic
severity: error
disabled: false
exclude: [""]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#banned-characters
- name: banned-characters
severity: warning
disabled: false
exclude: [""]
arguments: []
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#bare-return
- name: bare-return
severity: warning
disabled: false
exclude: [""]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#blank-imports
- name: blank-imports
severity: error
disabled: false
exclude: [""]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#bool-literal-in-expr
- name: bool-literal-in-expr
severity: warning
disabled: false
exclude: [""]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#call-to-gc
- name: call-to-gc
severity: warning
disabled: false
exclude: [""]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#cognitive-complexity
- name: cognitive-complexity
severity: warning
disabled: false
exclude: [""]
arguments: [ 7 ]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#comment-spacings
- name: comment-spacings
severity: warning
disabled: false
exclude: [""]
arguments:
- nolint
#- otherpragma
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#comments-density
- name: comments-density
severity: warning
disabled: true
exclude: [""]
arguments: [ 15 ]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#confusing-naming
- name: confusing-naming
severity: warning
disabled: false
exclude: [""]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#confusing-results
- name: confusing-results
severity: warning
disabled: false
exclude: [""]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#constant-logical-expr
- name: constant-logical-expr
severity: warning
disabled: false
exclude: [""]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#context-as-argument
- name: context-as-argument
severity: warning
disabled: false
arguments:
- allowTypesBefore: "*testing.T"
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#context-keys-type
- name: context-keys-type
severity: warning
disabled: false
exclude: [""]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#cyclomatic
- name: cyclomatic
severity: warning
disabled: false
exclude: [""]
arguments: [ 15 ]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#datarace
- name: datarace
severity: warning
disabled: false
exclude: [""]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#deep-exit
- name: deep-exit
severity: warning
disabled: false
exclude: [""]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#defer
- name: defer
severity: error
disabled: false
exclude: [""]
arguments:
- [ "call-chain", "loop" ]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#dot-imports
- name: dot-imports
severity: warning
disabled: false
exclude: [""]
arguments: [ ]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#duplicated-imports
- name: duplicated-imports
severity: error
disabled: false
exclude: [""]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#early-return
- name: early-return
severity: warning
disabled: false
exclude: [""]
arguments:
- "preserveScope"
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#empty-block
- name: empty-block
severity: warning
disabled: false
exclude: [""]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#empty-lines
- name: empty-lines
severity: warning
disabled: false
exclude: [""]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#enforce-map-style
- name: enforce-map-style
severity: warning
disabled: false
exclude: [""]
arguments:
- "make"
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#enforce-repeated-arg-type-style
- name: enforce-repeated-arg-type-style
severity: warning
disabled: false
exclude: [""]
arguments:
- "short"
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#enforce-slice-style
- name: enforce-slice-style
severity: warning
disabled: false
exclude: [""]
arguments:
- "make"
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#error-naming
- name: error-naming
severity: warning
disabled: false
exclude: [""]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#error-return
- name: error-return
severity: warning
disabled: false
exclude: [""]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#error-strings
- name: error-strings
severity: warning
disabled: false
exclude: [""]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#errorf
- name: errorf
severity: warning
disabled: false
exclude: [""]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#exported
- name: exported
severity: warning
disabled: false
exclude: [""]
arguments:
- "checkPrivateReceivers"
- "disableStutteringCheck"
- "checkPublicInterface"
- "disableChecksOnFunctions"
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#file-header
- name: file-header
severity: warning
disabled: true
exclude: [""]
arguments:
- This is the text that must appear at the top of source files.
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#file-length-limit
- name: file-length-limit
severity: warning
disabled: true
exclude: [""]
arguments:
- max: 100
skipComments: true
skipBlankLines: true
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#filename-format
- name: filename-format
severity: warning
disabled: false
exclude: [""]
arguments:
- "^[_a-z][_a-z0-9]*.go$"
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#flag-parameter
- name: flag-parameter
severity: warning
disabled: false
exclude: [""]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#function-length
- name: function-length
severity: warning
disabled: false
exclude: [""]
arguments: [20, 0]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#function-result-limit
- name: function-result-limit
severity: warning
disabled: false
exclude: [""]
arguments: [ 2 ]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#get-return
- name: get-return
severity: warning
disabled: false
exclude: [""]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#identical-branches
- name: identical-branches
severity: warning
disabled: false
exclude: [""]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#if-return
- name: if-return
severity: warning
disabled: false
exclude: [""]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#import-alias-naming
- name: import-alias-naming
severity: warning
disabled: false
exclude: [""]
arguments:
- "^[a-z][a-z0-9]{0,}$"
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#import-shadowing
- name: import-shadowing
severity: warning
disabled: false
exclude: [""]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#imports-blocklist
- name: imports-blocklist
severity: warning
disabled: false
exclude: [""]
arguments:
- "crypto/md5"
- "crypto/sha1"
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#increment-decrement
- name: increment-decrement
severity: warning
disabled: false
exclude: [""]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#indent-error-flow
- name: indent-error-flow
severity: warning
disabled: false
exclude: [""]
arguments:
- "preserveScope"
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#line-length-limit
- name: line-length-limit
severity: warning
disabled: false
exclude: [""]
arguments: [ 80 ]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#max-control-nesting
- name: max-control-nesting
severity: warning
disabled: false
exclude: [""]
arguments: [ 5 ]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#max-public-structs
- name: max-public-structs
severity: warning
disabled: true
exclude: [""]
arguments: [ 3 ]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#modifies-parameter
- name: modifies-parameter
severity: warning
disabled: false
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#modifies-value-receiver
- name: modifies-value-receiver
severity: warning
disabled: false
exclude: [""]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#nested-structs
- name: nested-structs
severity: warning
disabled: false
exclude: [""]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#optimize-operands-order
- name: optimize-operands-order
severity: warning
disabled: false
exclude: [""]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#package-comments
- name: package-comments
severity: warning
disabled: false
exclude: [""]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#range
- name: range
severity: warning
disabled: false
exclude: [""]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#range-val-address
- name: range-val-address
severity: error
disabled: false
exclude: [""]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#range-val-in-closure
- name: range-val-in-closure
severity: error
disabled: false
exclude: [""]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#receiver-naming
- name: receiver-naming
severity: warning
disabled: false
exclude: [""]
arguments:
- maxLength: 2
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#redefines-builtin-id
- name: redefines-builtin-id
severity: error
disabled: false
exclude: [""]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#redundant-import-alias
- name: redundant-import-alias
severity: warning
disabled: false
exclude: [""]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#string-format
- name: string-format
severity: warning
disabled: false
exclude: [""]
arguments:
- - 'core.WriteError[1].Message'
- '/^([^A-Z]|$)/'
- must not start with a capital letter
- - 'fmt.Errorf[0]'
- '/(^|[^\.!?])$/'
- must not end in punctuation
- - panic
- '/^[^\n]*$/'
- must not contain line breaks
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#string-of-int
- name: string-of-int
severity: error
disabled: false
exclude: [""]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#struct-tag
- name: struct-tag
severity: warning
disabled: false
exclude: [""]
arguments:
- "json,inline"
- "bson,outline,gnu"
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#superfluous-else
- name: superfluous-else
severity: warning
disabled: false
exclude: [""]
arguments:
- "preserveScope"
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#time-equal
- name: time-equal
severity: warning
disabled: false
exclude: [""]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#time-naming
- name: time-naming
severity: warning
disabled: false
exclude: [""]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#unchecked-type-assertion
- name: unchecked-type-assertion
severity: warning
disabled: false
exclude: [""]
arguments:
- acceptIgnoredAssertionResult: true
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#unconditional-recursion
- name: unconditional-recursion
severity: error
disabled: false
exclude: [""]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#unexported-naming
- name: unexported-naming
severity: warning
disabled: false
exclude: [""]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#unexported-return
- name: unexported-return
severity: warning
disabled: false
exclude: [""]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#unhandled-error
- name: unhandled-error
severity: warning
disabled: false
arguments:
- "fmt.Printf"
- "myFunction"
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#unnecessary-stmt
- name: unnecessary-stmt
severity: warning
disabled: false
exclude: [""]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#unreachable-code
- name: unreachable-code
severity: warning
disabled: false
exclude: [""]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#unused-parameter
- name: unused-parameter
severity: warning
disabled: false
exclude: [""]
arguments:
- allowRegex: "^_"
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#unused-receiver
- name: unused-receiver
severity: warning
disabled: false
exclude: [""]
arguments:
- allowRegex: "^_"
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#use-any
- name: use-any
severity: warning
disabled: false
exclude: [""]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#useless-break
- name: useless-break
severity: warning
disabled: false
exclude: [""]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#var-declaration
- name: var-declaration
severity: warning
disabled: false
exclude: [""]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#var-naming
- name: var-naming
severity: warning
disabled: false
exclude: [""]
arguments:
- [ "ID" ] # AllowList
- [ "VM" ] # DenyList
- - upperCaseConst: true # Extra parameter (upperCaseConst|skipPackageNameChecks)
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#waitgroup-by-value
- name: waitgroup-by-value
severity: error
disabled: false
exclude: [""]
2021-11-19 13:21:46 +01:00
rowserrcheck:
2025-01-18 00:55:00 +01:00
# database/sql is always checked
# Default: []
packages:
- github.com/jmoiron/sqlx
sloglint:
# Enforce not mixing key-value pairs and attributes.
# https://github.com/go-simpler/sloglint?tab=readme-ov-file#no-mixed-arguments
# Default: true
no-mixed-args: true
# Enforce using key-value pairs only (overrides no-mixed-args, incompatible with attr-only).
# https://github.com/go-simpler/sloglint?tab=readme-ov-file#key-value-pairs-only
# Default: false
kv-only: false
# Enforce using attributes only (overrides no-mixed-args, incompatible with kv-only).
# https://github.com/go-simpler/sloglint?tab=readme-ov-file#attributes-only
# Default: false
attr-only: false
# Enforce not using global loggers.
# Values:
# - "": disabled
# - "all": report all global loggers
# - "default": report only the default slog logger
# https://github.com/go-simpler/sloglint?tab=readme-ov-file#no-global
# Default: ""
no-global: "all"
# Enforce using methods that accept a context.
# Values:
# - "": disabled
# - "all": report all contextless calls
# - "scope": report only if a context exists in the scope of the outermost function
# https://github.com/go-simpler/sloglint?tab=readme-ov-file#context-only
# Default: ""
context: "all"
# Enforce using static values for log messages.
# https://github.com/go-simpler/sloglint?tab=readme-ov-file#static-messages
# Default: false
static-msg: true
# Enforce using constants instead of raw keys.
# https://github.com/go-simpler/sloglint?tab=readme-ov-file#no-raw-keys
# Default: false
no-raw-keys: true
# Enforce a single key naming convention.
# Values: snake, kebab, camel, pascal
# https://github.com/go-simpler/sloglint?tab=readme-ov-file#key-naming-convention
# Default: ""
key-naming-case: camel
# Enforce not using specific keys.
# https://github.com/go-simpler/sloglint?tab=readme-ov-file#forbidden-keys
# Default: []
forbidden-keys:
- time
- level
- msg
- source
# Enforce putting arguments on separate lines.
# https://github.com/go-simpler/sloglint?tab=readme-ov-file#arguments-on-separate-lines
# Default: false
args-on-sep-lines: false
spancheck:
# Checks to enable.
# Options include:
# - `end`: check that `span.End()` is called
# - `record-error`: check that `span.RecordError(err)` is called when an error is returned
# - `set-status`: check that `span.SetStatus(codes.Error, msg)` is called when an error is returned
# Default: ["end"]
checks:
- end
- record-error
- set-status
# A list of regexes for function signatures that silence `record-error` and `set-status` reports
# if found in the call path to a returned error.
# https://github.com/jjti/go-spancheck#ignore-check-signatures
# Default: []
ignore-check-signatures:
- "telemetry.RecordError"
# A list of regexes for additional function signatures that create spans.
# This is useful if you have a utility method to create spans.
# Each entry should be of the form `<regex>:<telemetry-type>`, where `telemetry-type` can be `opentelemetry` or `opencensus`.
# https://github.com/jjti/go-spancheck#extra-start-span-signatures
# Default: []
extra-start-span-signatures:
- "github.com/user/repo/telemetry/trace.Start:opentelemetry"
2021-11-19 13:21:46 +01:00
staticcheck:
2025-01-18 00:55:00 +01:00
# SAxxxx checks in https://staticcheck.dev/docs/configuration/options/#checks
# Example (to disable some checks): [ "all", "-SA1000", "-SA1001"]
# Default: ["*"]
checks: [ "*" ]
2021-11-19 13:21:46 +01:00
stylecheck:
2025-01-18 00:55:00 +01:00
# https://staticcheck.dev/docs/configuration/options/#dot_import_whitelist
# Default: ["github.com/mmcloughlin/avo/build", "github.com/mmcloughlin/avo/operand", "github.com/mmcloughlin/avo/reg"]
2021-11-19 13:21:46 +01:00
dot-import-whitelist:
- fmt
2025-01-18 00:55:00 +01:00
# https://staticcheck.dev/docs/configuration/options/#initialisms
# Default: ["ACL", "API", "ASCII", "CPU", "CSS", "DNS", "EOF", "GUID", "HTML", "HTTP", "HTTPS", "ID", "IP", "JSON", "QPS", "RAM", "RPC", "SLA", "SMTP", "SQL", "SSH", "TCP", "TLS", "TTL", "UDP", "UI", "GID", "UID", "UUID", "URI", "URL", "UTF8", "VM", "XML", "XMPP", "XSRF", "XSS", "SIP", "RTP", "AMQP", "DB", "TS"]
initialisms: [ "ACL", "API", "ASCII", "CPU", "CSS", "DNS", "EOF", "GUID", "HTML", "HTTP", "HTTPS", "ID", "IP", "JSON", "QPS", "RAM", "RPC", "SLA", "SMTP", "SQL", "SSH", "TCP", "TLS", "TTL", "UDP", "UI", "GID", "UID", "UUID", "URI", "URL", "UTF8", "VM", "XML", "XMPP", "XSRF", "XSS", "SIP", "RTP", "AMQP", "DB", "TS" ]
# https://staticcheck.dev/docs/configuration/options/#http_status_code_whitelist
# Default: ["200", "400", "404", "500"]
http-status-code-whitelist: []
# STxxxx checks in https://staticcheck.dev/docs/configuration/options/#checks
# Example (to disable some checks): [ "all", "-ST1000", "-ST1003", "-ST1016", "-ST1020", "-ST1021", "-ST1022" ]
# Default: ["*"]
checks: ["*", "-ST1000"]
2021-11-19 13:21:46 +01:00
tagliatelle:
2025-01-18 00:55:00 +01:00
# Check the struct tag name case.
2021-11-19 13:21:46 +01:00
case:
2025-01-18 00:55:00 +01:00
# Use the struct field name to check the name of the struct tag.
# Default: false
2021-11-19 13:21:46 +01:00
use-field-name: true
2025-01-18 00:55:00 +01:00
# `camel` is used for `json` and `yaml`, and `header` is used for `header` (can be overridden)
# Default: {}
2021-11-19 13:21:46 +01:00
rules:
2025-01-18 00:55:00 +01:00
# Any struct tag type can be used.
# Support string case: `camel`, `pascal`, `kebab`, `snake`, `upperSnake`, `goCamel`, `goPascal`, `goKebab`, `goSnake`, `upper`, `lower`, `header`
json: snake
yaml: goCamel
xml: goCamel
toml: goSnake
2021-11-19 13:21:46 +01:00
bson: camel
avro: snake
mapstructure: kebab
2025-01-18 00:55:00 +01:00
env: upperSnake
envconfig: upperSnake
tenv:
# The option `all` will run against whole test files (`_test.go`) regardless of method/function signatures.
# Otherwise, only methods that take `*testing.T`, `*testing.B`, and `testing.TB` as arguments are checked.
# Default: false
all: false
testifylint:
# Enable all checkers (https://github.com/Antonboom/testifylint#checkers).
# Default: false
enable-all: true
# Disable checkers by name
# (in addition to default
# suite-thelper
# ).
disable: []
#- blank-import
#- bool-compare
#- compares
#- contains
#- empty
#- encoded-compare
#- error-is-as
#- error-nil
#- expected-actual
#- float-compare
#- formatter
#- go-require
#- len
#- negative-positive
#- nil-compare
#- regexp
#- require-error
#- suite-broken-parallel
#- suite-dont-use-pkg
#- suite-extra-assert-call
#- suite-subtest-run
#- suite-thelper
#- useless-assert
# Disable all checkers (https://github.com/Antonboom/testifylint#checkers).
# Default: false
disable-all: false
# Enable checkers by name
# (in addition to default
# blank-import, bool-compare, compares, contains, empty, encoded-compare, error-is-as, error-nil, expected-actual,
# go-require, float-compare, formatter, len, negative-positive, nil-compare, regexp, require-error,
# suite-broken-parallel, suite-dont-use-pkg, suite-extra-assert-call, suite-subtest-run, useless-assert
# ).
enable: []
#- blank-import
#- bool-compare
#- compares
#- contains
#- empty
#- encoded-compare
#- error-is-as
#- error-nil
#- expected-actual
#- float-compare
#- formatter
#- go-require
#- len
#- negative-positive
#- nil-compare
#- regexp
#- require-error
#- suite-broken-parallel
#- suite-dont-use-pkg
#- suite-extra-assert-call
#- suite-subtest-run
#- suite-thelper
#- useless-assert
bool-compare:
# To ignore user defined types (over builtin bool).
# Default: false
ignore-custom-types: false
expected-actual:
# Regexp for expected variable name.
# Default: (^(exp(ected)?|want(ed)?)([A-Z]\w*)?$)|(^(\w*[a-z])?(Exp(ected)?|Want(ed)?)$)
pattern: (^(exp(ected)?|want(ed)?)([A-Z]\w*)?$)|(^(\w*[a-z])?(Exp(ected)?|Want(ed)?)$)
formatter:
# To enable go vet's printf checks.
# Default: true
check-format-string: true
# To require f-assertions (e.g. `assert.Equalf`) if format string is used, even if there are no variable-length
# variables, i.e. it requires `require.NoErrorf` for both these cases:
# - require.NoErrorf(t, err, "unexpected error")
# - require.NoErrorf(t, err, "unexpected error for sid: %v", sid)
# To understand this behavior, please read the
# https://github.com/Antonboom/testifylint?tab=readme-ov-file#historical-reference-of-formatter.
# Default: false
require-f-funcs: false
go-require:
# To ignore HTTP handlers (like http.HandlerFunc).
# Default: false
ignore-http-handlers: false
require-error:
# Regexp for assertions to analyze. If defined, then only matched error assertions will be reported.
# Default: ""
fn-pattern: ""
suite-extra-assert-call:
# To require or remove extra Assert() call?
# Default: remove
mode: require
2021-11-19 13:21:46 +01:00
testpackage:
2025-01-18 00:55:00 +01:00
# Regexp pattern to skip files.
# Default: "(export|internal)_test\\.go"
2021-11-19 13:21:46 +01:00
skip-regexp: (export|internal)_test\.go
2025-01-18 00:55:00 +01:00
# List of packages that don't end with _test that tests are allowed to be in.
# Default: "main"
allow-packages:
- main
2021-11-19 13:21:46 +01:00
thelper:
test:
2025-01-18 00:55:00 +01:00
# Check *testing.T is first param (or after context.Context) of helper function.
# Default: true
2021-11-19 13:21:46 +01:00
first: true
2025-01-18 00:55:00 +01:00
# Check *testing.T param has name t.
# Default: true
2021-11-19 13:21:46 +01:00
name: true
2025-01-18 00:55:00 +01:00
# Check t.Helper() begins helper function.
# Default: true
2021-11-19 13:21:46 +01:00
begin: true
benchmark:
2025-01-18 00:55:00 +01:00
# Check *testing.B is first param (or after context.Context) of helper function.
# Default: true
2021-11-19 13:21:46 +01:00
first: true
2025-01-18 00:55:00 +01:00
# Check *testing.B param has name b.
# Default: true
2021-11-19 13:21:46 +01:00
name: true
2025-01-18 00:55:00 +01:00
# Check b.Helper() begins helper function.
# Default: true
2021-11-19 13:21:46 +01:00
begin: true
tb:
2025-01-18 00:55:00 +01:00
# Check *testing.TB is first param (or after context.Context) of helper function.
# Default: true
2021-11-19 13:21:46 +01:00
first: true
2025-01-18 00:55:00 +01:00
# Check *testing.TB param has name tb.
# Default: true
2021-11-19 13:21:46 +01:00
name: true
2025-01-18 00:55:00 +01:00
# Check tb.Helper() begins helper function.
# Default: true
begin: true
fuzz:
# Check *testing.F is first param (or after context.Context) of helper function.
# Default: true
first: true
# Check *testing.F param has name f.
# Default: true
name: true
# Check f.Helper() begins helper function.
# Default: true
2021-11-19 13:21:46 +01:00
begin: true
2025-01-18 00:55:00 +01:00
usestdlibvars:
# Suggest the use of http.MethodXX.
# Default: true
http-method: true
# Suggest the use of http.StatusXX.
# Default: true
http-status-code: true
# Suggest the use of time.Weekday.String().
# Default: true
time-weekday: true
# Suggest the use of time.Month.String().
# Default: false
time-month: true
# Suggest the use of time.Layout.
# Default: false
time-layout: true
# Suggest the use of crypto.Hash.String().
# Default: false
crypto-hash: true
# Suggest the use of rpc.DefaultXXPath.
# Default: false
default-rpc-path: true
# Suggest the use of sql.LevelXX.String().
# Default: false
sql-isolation-level: true
# Suggest the use of tls.SignatureScheme.String().
# Default: false
tls-signature-scheme: true
# Suggest the use of constant.Kind.String().
# Default: false
constant-kind: true
unconvert:
# Remove conversions that force intermediate rounding.
# Default: false
fast-math: true
# Be more conservative (experimental).
# Default: false
safe: true
2021-11-19 13:21:46 +01:00
unparam:
2025-01-18 00:55:00 +01:00
# Inspect exported functions.
#
# Set to true if no external program/library imports your code.
2021-11-19 13:21:46 +01:00
# XXX: if you enable this setting, unparam will report a lot of false-positives in text editors:
# if it's called for subdir of a project it can't find external interfaces. All text editor integrations
# with golangci-lint call it on a directory with the changed file.
2025-01-18 00:55:00 +01:00
#
# Default: false
2021-11-19 13:21:46 +01:00
check-exported: false
unused:
2025-01-18 00:55:00 +01:00
# Mark all struct fields that have been written to as used.
# Default: true
field-writes-are-uses: true
# Treat IncDec statement (e.g. `i++` or `i--`) as both read and write operation instead of just write.
# Default: false
post-statements-are-reads: true
# Mark all exported fields as used.
# default: true
exported-fields-are-used: true
# Mark all function parameters as used.
# default: true
parameters-are-used: true
# Mark all local variables as used.
# default: true
local-variables-are-used: false
# Mark all identifiers inside generated files as used.
# Default: true
generated-is-used: true
2021-11-19 13:21:46 +01:00
varnamelen:
2025-01-18 00:55:00 +01:00
# The longest distance, in source lines, that is being considered a "small scope".
2021-11-19 13:21:46 +01:00
# Variables used in at most this many lines will be ignored.
2025-01-18 00:55:00 +01:00
# Default: 5
2021-11-19 13:21:46 +01:00
max-distance: 15
2025-01-18 00:55:00 +01:00
# The minimum length of a variable's name that is considered "long".
2021-11-19 13:21:46 +01:00
# Variable names that are at least this long will be ignored.
2025-01-18 00:55:00 +01:00
# Default: 3
#min-name-length: 2
# Check method receivers.
# Default: false
#check-receiver: true
# Check named return values.
# Default: false
check-return: true
# Check type parameters.
# Default: false
check-type-param: true
# Ignore "ok" variables that hold the bool return value of a type assertion.
# Default: false
ignore-type-assert-ok: true
# Ignore "ok" variables that hold the bool return value of a map index.
# Default: false
ignore-map-index-ok: true
# Ignore "ok" variables that hold the bool return value of a channel receive.
# Default: false
ignore-chan-recv-ok: true
# Optional list of variable names that should be ignored completely.
# Default: []
2021-11-19 13:21:46 +01:00
ignore-names:
- err
2025-01-18 00:55:00 +01:00
# Optional list of variable declarations that should be ignored completely.
# Entries must be in one of the following forms (see below for examples):
# - for variables, parameters, named return values, method receivers, or type parameters:
# <name> <type> (<type> can also be a pointer/slice/map/chan/...)
# - for constants: const <name>
#
# Default: []
ignore-decls:
- t *testing.T
- w http.ResponseWriter
- r *http.Request
- r io.Reader
- c convey.C
- i int
- T any
- ok bool
2021-11-19 13:21:46 +01:00
whitespace:
2025-01-18 00:55:00 +01:00
# Enforces newlines (or comments) after every multi-line if statement.
# Default: false
multi-if: false
# Enforces newlines (or comments) after every multi-line function signature.
# Default: false
multi-func: false
2021-11-19 13:21:46 +01:00
wrapcheck:
# An array of strings that specify substrings of signatures to ignore.
# If this set, it will override the default set of ignored signatures.
# See https://github.com/tomarrell/wrapcheck#configuration for more information.
2025-01-18 00:55:00 +01:00
# Default: [".Errorf(", "errors.New(", "errors.Unwrap(", "errors.Join(", ".Wrap(", ".Wrapf(", ".WithMessage(", ".WithMessagef(", ".WithStack("]
#ignoreSigs:
# - .Errorf(
# - errors.New(
# - errors.Unwrap(
# - errors.Join(
# - .Wrap(
# - .Wrapf(
# - .WithMessage(
# - .WithMessagef(
# - .WithStack(
# An array of strings that specify regular expressions of signatures to ignore.
# Default: []
ignoreSigRegexps: []
#- \.New.*Error\(
# An array of strings that specify globs of packages to ignore.
# Default: []
ignorePackageGlobs: []
#- encoding/*
#- github.com/pkg/*
# An array of strings that specify regular expressions of interfaces to ignore.
# Default: []
ignoreInterfaceRegexps: []
#- ^(?i)c(?-i)ach(ing|e)
2021-11-19 13:21:46 +01:00
wsl:
2025-01-18 00:55:00 +01:00
# Do strict checking when assigning from append (x = append(x, y)).
# If this is set to true - the append call must append either a variable
# assigned, called or used on the line above.
# https://github.com/bombsimon/wsl/blob/master/doc/configuration.md#strict-append
# Default: true
strict-append: true
# Allows assignments to be cuddled with variables used in calls on
# line above and calls to be cuddled with assignments of variables
# used in call on line above.
# https://github.com/bombsimon/wsl/blob/master/doc/configuration.md#allow-assign-and-call
# Default: true
2021-11-19 13:21:46 +01:00
allow-assign-and-call: true
2025-01-18 00:55:00 +01:00
# Allows assignments to be cuddled with anything.
# https://github.com/bombsimon/wsl/blob/master/doc/configuration.md#allow-assign-and-anything
# Default: false
allow-assign-and-anything: false
# Allows cuddling to assignments even if they span over multiple lines.
# https://github.com/bombsimon/wsl/blob/master/doc/configuration.md#allow-multiline-assign
# Default: true
2021-11-19 13:21:46 +01:00
allow-multiline-assign: true
2025-01-18 00:55:00 +01:00
# If the number of lines in a case block is equal to or lager than this
# number, the case *must* end white a newline.
# https://github.com/bombsimon/wsl/blob/master/doc/configuration.md#force-case-trailing-whitespace
# Default: 0
force-case-trailing-whitespace: 2
# Allow blocks to end with comments.
# https://github.com/bombsimon/wsl/blob/master/doc/configuration.md#allow-trailing-comment
# Default: false
2021-11-19 13:21:46 +01:00
allow-trailing-comment: false
2025-01-18 00:55:00 +01:00
# Allow multiple comments in the beginning of a block separated with newline.
# https://github.com/bombsimon/wsl/blob/master/doc/configuration.md#allow-separated-leading-comment
# Default: false
allow-separated-leading-comment: true
# Allow multiple var/declaration statements to be cuddled.
# https://github.com/bombsimon/wsl/blob/master/doc/configuration.md#allow-cuddle-declarations
# Default: false
allow-cuddle-declarations: false
# A list of call idents that everything can be cuddled with.
# Defaults: [ "Lock", "RLock" ]
allow-cuddle-with-calls: [ "Lock", "RLock", "defer" ]
# AllowCuddleWithRHS is a list of right hand side variables that is allowed
# to be cuddled with anything.
# Defaults: [ "Unlock", "RUnlock" ]
allow-cuddle-with-rhs: [ "Unlock", "RUnlock" ]
# Causes an error when an If statement that checks an error variable doesn't
# cuddle with the assignment of that variable.
# https://github.com/bombsimon/wsl/blob/master/doc/configuration.md#force-err-cuddling
# Default: false
force-err-cuddling: true
# When force-err-cuddling is enabled this is a list of names
# used for error variables to check for in the conditional.
# Default: [ "err" ]
error-variable-names: [ "err", "err2", "err3" ]
# Causes an error if a short declaration (:=) cuddles with anything other than
# another short declaration.
# This logic overrides force-err-cuddling among others.
# https://github.com/bombsimon/wsl/blob/master/doc/configuration.md#force-short-decl-cuddling
# Default: false
2021-11-19 13:21:46 +01:00
force-short-decl-cuddling: false
2025-01-18 00:55:00 +01:00
# The custom section can be used to define linter plugins to be loaded at runtime.
# See README documentation for more info.
custom: {}
# Each custom linter should have a unique name.
#example:
# The plugin type.
# It can be `goplugin` or `module`.
# Default: goplugin
#type: module
# The path to the plugin *.so. Can be absolute or local.
# Required for each custom linter.
#path: /path/to/example.so
# The description of the linter.
# Optional.
#description: This is an example usage of a plugin linter.
# Intended to point to the repo location of the linter.
# Optional.
#original-url: github.com/golangci/example-linter
# Plugins settings/configuration.
# Only work with plugin based on `linterdb.PluginConstructor`.
# Optional.
#settings:
# foo: bar
2021-11-19 13:21:46 +01:00
issues:
2025-01-18 00:55:00 +01:00
# List of regexps of issue texts to exclude.
#
# But independently of this option we use default exclude patterns,
# it can be disabled by `exclude-use-default: false`.
# To list all excluded by default patterns execute `golangci-lint run --help`
#
# Default: https://golangci-lint.run/usage/false-positives/#default-exclusions
2021-11-19 13:21:46 +01:00
exclude:
- abcdef
# Excluding configuration per-path, per-linter, per-text and per-source
exclude-rules:
# Exclude some linters from running on tests files.
- path: _test\.go
linters:
2025-01-18 00:55:00 +01:00
- cyclop
2021-11-19 13:21:46 +01:00
- dupl
- errcheck
2025-01-18 00:55:00 +01:00
- forcetypeassert
2021-11-19 13:21:46 +01:00
- funlen
- goconst
- gocognit
- gocyclo
2025-01-18 00:55:00 +01:00
- goerr113
2021-11-19 13:21:46 +01:00
- gosec
- varnamelen
2025-01-18 00:55:00 +01:00
# Exclude some linters from running on tests files.
- path: _test\.go
linters:
- revive
text: "(comments-density|line-length-limit|unchecked-type-assertion|cognitive-complexity)"
# Run some linter only for test files by excluding its issues for everything else.
- path-except: _test\.go
linters:
- forbidigo
2021-11-19 13:21:46 +01:00
# Exclude known linters from partially hard-vendored code,
2025-01-18 00:55:00 +01:00
# which is impossible to exclude via `nolint` comments.
# `/` will be replaced by current OS file path separator to properly work on Windows.
2021-11-19 13:21:46 +01:00
- path: internal/hmac/
text: "weak cryptographic primitive"
linters:
- gosec
2025-01-18 00:55:00 +01:00
# Exclude some `staticcheck` messages.
#- linters:
# - staticcheck
# text: "SA9003:"
2021-11-19 13:21:46 +01:00
- linters:
2025-01-18 00:55:00 +01:00
- revive
text: "(line-length-limit)"
source: "(//revive:disable|//nolint:)"
# Independently of option `exclude` we use default exclude patterns,
# it can be disabled by this option.
# To list all excluded by default patterns execute `golangci-lint run --help`.
# Default: true
2021-11-19 13:21:46 +01:00
exclude-use-default: false
2025-01-18 00:55:00 +01:00
# If set to true, `exclude` and `exclude-rules` regular expressions become case-sensitive.
# Default: false
2021-11-19 13:21:46 +01:00
exclude-case-sensitive: false
2025-01-18 00:55:00 +01:00
# Which dirs to exclude: issues from them won't be reported.
# Can use regexp here: `generated.*`, regexp is applied on full path,
# including the path prefix if one is set.
# Default dirs are skipped independently of this option's value (see exclude-dirs-use-default).
# "/" will be replaced by current OS file path separator to properly work on Windows.
# Default: []
exclude-dirs:
- src/external_libs
- autogenerated_by_my_lib
# Enables exclude of directories:
# - vendor$, third_party$, testdata$, examples$, Godeps$, builtin$
# Default: true
exclude-dirs-use-default: false
# Which files to exclude: they will be analyzed, but issues from them won't be reported.
# There is no need to include all autogenerated files,
# we confidently recognize autogenerated files.
# If it's not, please let us know.
# "/" will be replaced by current OS file path separator to properly work on Windows.
# Default: []
exclude-files:
- ".*\\.my\\.go$"
- lib/bad.go
# Mode of the generated files analysis.
#
# - `strict`: sources are excluded by following strictly the Go generated file convention.
# Source files that have lines matching only the following regular expression will be excluded: `^// Code generated .* DO NOT EDIT\.$`
# This line must appear before the first non-comment, non-blank text in the file.
# https://go.dev/s/generatedcode
# - `lax`: sources are excluded if they contain lines `autogenerated file`, `code generated`, `do not edit`, etc.
# - `disable`: disable the generated files exclusion.
#
# Default: lax
exclude-generated: lax
# The list of ids of default excludes to include or disable.
# https://golangci-lint.run/usage/false-positives/#default-exclusions
# Default: []
include: []
#- EXC0002 # disable excluding of issues about comments from golint.
# Maximum issues count per one linter.
# Set to 0 to disable.
# Default: 50
2021-11-19 13:21:46 +01:00
max-issues-per-linter: 0
2025-01-18 00:55:00 +01:00
# Maximum count of issues with the same text.
# Set to 0 to disable.
# Default: 3
2021-11-19 13:21:46 +01:00
max-same-issues: 0
2025-01-18 00:55:00 +01:00
# Make issues output unique by line.
# Default: true
uniq-by-line: false
2021-11-19 13:21:46 +01:00
# Show only new issues: if there are unstaged changes or untracked files,
# only those changes are analyzed, else only changes in HEAD~ are analyzed.
2025-01-18 00:55:00 +01:00
# It's a super-useful option for integration of golangci-lint into existing large codebase.
# It's not practical to fix all existing issues at the moment of integration:
# much better don't allow issues in new code.
#
# Default: false.
2021-11-19 13:21:46 +01:00
new: false
2025-01-18 00:55:00 +01:00
# Show only new issues created after git revision `REV`.
# Default: ""
#new-from-rev: HEAD
2021-11-19 13:21:46 +01:00
# Show only new issues created in git patch with set file path.
2025-01-18 00:55:00 +01:00
# Default: ""
2021-11-19 13:21:46 +01:00
#new-from-patch: path/to/patch/file
2025-01-18 00:55:00 +01:00
# Show issues in any part of update files (requires new-from-rev or new-from-patch).
# Default: false
whole-files: true
# Fix found issues (if it's supported by the linter).
# Default: false
2021-11-19 13:21:46 +01:00
fix: false
2025-01-18 00:55:00 +01:00
# output configuration options
output:
# The formats used to render issues.
# Formats:
# - `colored-line-number`
# - `line-number`
# - `json`
# - `colored-tab`
# - `tab`
# - `html`
# - `checkstyle`
# - `code-climate`
# - `junit-xml`
# - `junit-xml-extended`
# - `github-actions`
# - `teamcity`
# - `sarif`
# Output path can be either `stdout`, `stderr` or path to the file to write to.
#
# For the CLI flag (`--out-format`), multiple formats can be specified by separating them by comma.
# The output can be specified for each of them by separating format name and path by colon symbol.
# Example: "--out-format=checkstyle:report.xml,json:stdout,colored-line-number"
# The CLI flag (`--out-format`) override the configuration file.
#
# Default:
# formats:
# - format: colored-line-number
# path: stdout
formats:
- format: colored-line-number
path: stdout
# Print lines of code with issue.
# Default: true
print-issued-lines: true
# Print linter name in the end of issue text.
# Default: true
print-linter-name: true
# Add a prefix to the output file references.
# Default: ""
path-prefix: ""
# Sort results by the order defined in `sort-order`.
# Default: false
sort-results: true
# Order to use when sorting results.
# Require `sort-results` to `true`.
# Possible values: `file`, `linter`, and `severity`.
#
# If the severity values are inside the following list, they are ordered in this order:
# 1. error
# 2. warning
# 3. high
# 4. medium
# 5. low
# Either they are sorted alphabetically.
#
# Default: ["file"]
sort-order:
- file # filepath, line, and column.
- severity
- linter
# Show statistics per linter.
# Default: false
show-stats: false
# Options for analysis running.
run:
# Timeout for analysis, e.g. 30s, 5m.
# Default: 1m
timeout: 5m
# Exit code when at least one issue was found.
# Default: 1
issues-exit-code: 1
# Include test files or not.
# Default: true
tests: true
# List of build tags, all linters use it.
# Default: []
build-tags: []
#- mytag
# If set, we pass it to "go list -mod={option}". From "go help modules":
# If invoked with -mod=readonly, the go command is disallowed from the implicit
# automatic updating of go.mod described above. Instead, it fails when any changes
# to go.mod are needed. This setting is most useful to check that go.mod does
# not need updates, such as in a continuous integration and testing system.
# If invoked with -mod=vendor, the go command assumes that the vendor
# directory holds the correct copies of dependencies and ignores
# the dependency descriptions in go.mod.
#
# Allowed values: readonly|vendor|mod
# Default: ""
#modules-download-mode: readonly
# Allow multiple parallel golangci-lint instances running.
# If false, golangci-lint acquires file lock on start.
# Default: false
allow-parallel-runners: true
# Allow multiple golangci-lint instances running, but serialize them around a lock.
# If false, golangci-lint exits with an error if it fails to acquire file lock on start.
# Default: false
allow-serial-runners: true
# Define the Go version limit.
# Mainly related to generics support since go1.18.
# Default: use Go version from the go.mod file, fallback on the env var `GOVERSION`, fallback on 1.17
#go: '1.19'
# Number of operating system threads (`GOMAXPROCS`) that can execute golangci-lint simultaneously.
# If it is explicitly set to 0 (i.e. not the default) then golangci-lint will automatically set the value to match Linux container CPU quota.
# Default: the number of logical CPUs in the machine
#concurrency: 4
2021-11-19 13:21:46 +01:00
severity:
2025-01-18 00:55:00 +01:00
# Set the default severity for issues.
#
# If severity rules are defined and the issues do not match or no severity is provided to the rule
# this will be the default severity applied.
# Severities should match the supported severity names of the selected out format.
2021-11-19 13:21:46 +01:00
# - Code climate: https://docs.codeclimate.com/docs/issues#issue-severity
2025-01-18 00:55:00 +01:00
# - Checkstyle: https://checkstyle.sourceforge.io/property_types.html#SeverityLevel
# - GitHub: https://help.github.com/en/actions/reference/workflow-commands-for-github-actions#setting-an-error-message
# - TeamCity: https://www.jetbrains.com/help/teamcity/service-messages.html#Inspection+Instance
#
# `@linter` can be used as severity value to keep the severity from linters (e.g. revive, gosec, ...)
#
# Default: ""
default-severity: "@linter"
# If set to true `severity-rules` regular expressions become case-sensitive.
# Default: false
#case-sensitive: true
# When a list of severity rules are provided, severity information will be added to lint issues.
# Severity rules have the same filtering capability as exclude rules
# except you are allowed to specify one matcher per severity rule.
#
# `@linter` can be used as severity value to keep the severity from linters (e.g. revive, gosec, ...)
#
2021-11-19 13:21:46 +01:00
# Only affects out formats that support setting severity information.
2025-01-18 00:55:00 +01:00
#
# Default: []
2021-11-19 13:21:46 +01:00
rules:
- linters:
2025-01-18 00:55:00 +01:00
- dupl
2021-11-19 13:21:46 +01:00
severity: info
2025-01-18 00:55:00 +01:00
- linters:
- gosec
severity: error