186 строки
6.2 KiB
YAML
186 строки
6.2 KiB
YAML
linters:
|
|
enable:
|
|
- bodyclose
|
|
- depguard
|
|
- dogsled
|
|
- dupword # Detects duplicate words.
|
|
- durationcheck
|
|
- errchkjson
|
|
- exportloopref # Detects pointers to enclosing loop variables.
|
|
- gocritic # Metalinter; detects bugs, performance, and styling issues.
|
|
- gocyclo
|
|
- gofumpt # Detects whether code was gofumpt-ed.
|
|
- goimports
|
|
- gosec # Detects security problems.
|
|
- gosimple
|
|
- govet
|
|
- ineffassign
|
|
- lll
|
|
- megacheck
|
|
- misspell # Detects commonly misspelled English words in comments.
|
|
- nakedret
|
|
- nilerr # Detects code that returns nil even if it checks that the error is not nil.
|
|
- nolintlint # Detects ill-formed or insufficient nolint directives.
|
|
- perfsprint # Detects fmt.Sprintf uses that can be replaced with a faster alternative.
|
|
- prealloc # Detects slice declarations that could potentially be pre-allocated.
|
|
- predeclared # Detects code that shadows one of Go's predeclared identifiers
|
|
- reassign
|
|
- revive # Metalinter; drop-in replacement for golint.
|
|
- staticcheck
|
|
- stylecheck # Replacement for golint
|
|
- tenv # Detects using os.Setenv instead of t.Setenv.
|
|
- thelper # Detects test helpers without t.Helper().
|
|
- tparallel # Detects inappropriate usage of t.Parallel().
|
|
- typecheck
|
|
- unconvert # Detects unnecessary type conversions.
|
|
- unparam
|
|
- unused
|
|
- usestdlibvars
|
|
- vet
|
|
- wastedassign
|
|
|
|
disable:
|
|
- errcheck
|
|
|
|
run:
|
|
timeout: 5m
|
|
skip-files:
|
|
- cli/compose/schema/bindata.go
|
|
- .*generated.*
|
|
|
|
linters-settings:
|
|
depguard:
|
|
rules:
|
|
main:
|
|
deny:
|
|
- pkg: io/ioutil
|
|
desc: The io/ioutil package has been deprecated, see https://go.dev/doc/go1.16#ioutil
|
|
gocyclo:
|
|
min-complexity: 16
|
|
govet:
|
|
check-shadowing: true
|
|
settings:
|
|
shadow:
|
|
strict: true
|
|
lll:
|
|
line-length: 200
|
|
nakedret:
|
|
command: nakedret
|
|
pattern: ^(?P<path>.*?\\.go):(?P<line>\\d+)\\s*(?P<message>.*)$
|
|
|
|
revive:
|
|
rules:
|
|
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#import-shadowing
|
|
- name: import-shadowing
|
|
severity: warning
|
|
disabled: false
|
|
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#empty-block
|
|
- name: empty-block
|
|
severity: warning
|
|
disabled: false
|
|
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#empty-lines
|
|
- name: empty-lines
|
|
severity: warning
|
|
disabled: false
|
|
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#use-any
|
|
- name: use-any
|
|
severity: warning
|
|
disabled: false
|
|
|
|
issues:
|
|
# The default exclusion rules are a bit too permissive, so copying the relevant ones below
|
|
exclude-use-default: false
|
|
|
|
exclude:
|
|
- parameter .* always receives
|
|
|
|
exclude-rules:
|
|
# We prefer to use an "exclude-list" so that new "default" exclusions are not
|
|
# automatically inherited. We can decide whether or not to follow upstream
|
|
# defaults when updating golang-ci-lint versions.
|
|
# Unfortunately, this means we have to copy the whole exclusion pattern, as
|
|
# (unlike the "include" option), the "exclude" option does not take exclusion
|
|
# ID's.
|
|
#
|
|
# These exclusion patterns are copied from the default excluses at:
|
|
# https://github.com/golangci/golangci-lint/blob/v1.44.0/pkg/config/issues.go#L10-L104
|
|
|
|
# EXC0001
|
|
- text: "Error return value of .((os\\.)?std(out|err)\\..*|.*Close|.*Flush|os\\.Remove(All)?|.*print(f|ln)?|os\\.(Un)?Setenv). is not checked"
|
|
linters:
|
|
- errcheck
|
|
# EXC0003
|
|
- text: "func name will be used as test\\.Test.* by other packages, and that stutters; consider calling this"
|
|
linters:
|
|
- revive
|
|
# EXC0006
|
|
- text: "Use of unsafe calls should be audited"
|
|
linters:
|
|
- gosec
|
|
# EXC0007
|
|
- text: "Subprocess launch(ed with variable|ing should be audited)"
|
|
linters:
|
|
- gosec
|
|
# EXC0008
|
|
# TODO: evaluate these and fix where needed: G307: Deferring unsafe method "*os.File" on type "Close" (gosec)
|
|
- text: "G307"
|
|
linters:
|
|
- gosec
|
|
# EXC0009
|
|
- text: "(Expect directory permissions to be 0750 or less|Expect file permissions to be 0600 or less)"
|
|
linters:
|
|
- gosec
|
|
# EXC0010
|
|
- text: "Potential file inclusion via variable"
|
|
linters:
|
|
- gosec
|
|
|
|
# G113 Potential uncontrolled memory consumption in Rat.SetString (CVE-2022-23772)
|
|
# only affects gp < 1.16.14. and go < 1.17.7
|
|
- text: "G113"
|
|
linters:
|
|
- gosec
|
|
# TODO: G104: Errors unhandled. (gosec)
|
|
- text: "G104"
|
|
linters:
|
|
- gosec
|
|
# Looks like the match in "EXC0007" above doesn't catch this one
|
|
# TODO: consider upstreaming this to golangci-lint's default exclusion rules
|
|
- text: "G204: Subprocess launched with a potential tainted input or cmd arguments"
|
|
linters:
|
|
- gosec
|
|
# Looks like the match in "EXC0009" above doesn't catch this one
|
|
# TODO: consider upstreaming this to golangci-lint's default exclusion rules
|
|
- text: "G306: Expect WriteFile permissions to be 0600 or less"
|
|
linters:
|
|
- gosec
|
|
|
|
# TODO: make sure all packages have a description. Currently, there's 67 packages without.
|
|
- text: "package-comments: should have a package comment"
|
|
linters:
|
|
- revive
|
|
# FIXME temporarily suppress these (see https://github.com/gotestyourself/gotest.tools/issues/272)
|
|
- text: "SA1019: (assert|cmp|is)\\.ErrorType is deprecated"
|
|
linters:
|
|
- staticcheck
|
|
# Exclude some linters from running on tests files.
|
|
- path: _test\.go
|
|
linters:
|
|
- errcheck
|
|
- gosec
|
|
- text: "ST1000: at least one file in a package should have a package comment"
|
|
linters:
|
|
- stylecheck
|
|
|
|
# Allow "err" and "ok" vars to shadow existing declarations, otherwise we get too many false positives.
|
|
- text: '^shadow: declaration of "(err|ok)" shadows declaration'
|
|
linters:
|
|
- govet
|
|
|
|
|
|
# Maximum issues count per one linter. Set to 0 to disable. Default is 50.
|
|
max-issues-per-linter: 0
|
|
|
|
# Maximum count of issues with the same text. Set to 0 to disable. Default is 3.
|
|
max-same-issues: 0
|