2019-04-02 11:27:12 -04:00
|
|
|
linters:
|
|
|
|
enable:
|
|
|
|
- bodyclose
|
2022-02-25 10:05:15 -05:00
|
|
|
- depguard
|
2019-04-02 11:27:12 -04:00
|
|
|
- dogsled
|
|
|
|
- gocyclo
|
Use gofumpt if available, and enable gofumpt linter
gofumpt provides a supserset of gofmt / go fmt, but not every developer may have
it installed, so for situations where it's not available, fall back to gofmt.
As our code has been formatted with gofumpt already, in most cases contributions
will follow those formatting rules, but in some cases there may be a difference,
which would already be flagged by manual code review, but let's also enable the
gofumpt linter.
With this change, `make fmt` will use gofumpt is available; gofumpt has been
added to the dev-container, so `make -f docker.Makefile fmt` will always use it.
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-09-30 07:10:53 -04:00
|
|
|
- gofumpt
|
2019-04-02 11:27:12 -04:00
|
|
|
- goimports
|
|
|
|
- gosec
|
|
|
|
- gosimple
|
|
|
|
- govet
|
|
|
|
- ineffassign
|
|
|
|
- lll
|
|
|
|
- megacheck
|
|
|
|
- misspell
|
|
|
|
- nakedret
|
2022-09-02 15:24:26 -04:00
|
|
|
- revive
|
2019-04-02 11:27:12 -04:00
|
|
|
- staticcheck
|
|
|
|
- typecheck
|
|
|
|
- unconvert
|
|
|
|
- unparam
|
|
|
|
- unused
|
|
|
|
|
|
|
|
disable:
|
|
|
|
- errcheck
|
|
|
|
|
|
|
|
run:
|
|
|
|
timeout: 5m
|
|
|
|
skip-files:
|
|
|
|
- cli/compose/schema/bindata.go
|
|
|
|
- .*generated.*
|
|
|
|
|
|
|
|
linters-settings:
|
2022-02-25 10:05:15 -05:00
|
|
|
depguard:
|
2023-08-28 17:21:03 -04:00
|
|
|
rules:
|
|
|
|
main:
|
|
|
|
deny:
|
|
|
|
- pkg: io/ioutil
|
|
|
|
desc: The io/ioutil package has been deprecated, see https://go.dev/doc/go1.16#ioutil
|
2019-04-02 11:27:12 -04:00
|
|
|
gocyclo:
|
|
|
|
min-complexity: 16
|
|
|
|
govet:
|
|
|
|
check-shadowing: false
|
|
|
|
lll:
|
|
|
|
line-length: 200
|
|
|
|
nakedret:
|
|
|
|
command: nakedret
|
|
|
|
pattern: ^(?P<path>.*?\\.go):(?P<line>\\d+)\\s*(?P<message>.*)$
|
|
|
|
|
|
|
|
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:
|
2022-03-27 13:24:19 -04:00
|
|
|
# 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"
|
2019-04-02 11:27:12 -04:00
|
|
|
linters:
|
|
|
|
- errcheck
|
2022-03-27 13:24:19 -04:00
|
|
|
# EXC0003
|
2019-04-02 11:27:12 -04:00
|
|
|
- text: "func name will be used as test\\.Test.* by other packages, and that stutters; consider calling this"
|
|
|
|
linters:
|
2022-03-27 13:24:19 -04:00
|
|
|
- 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: "(G104|G307)"
|
2019-04-02 11:27:12 -04:00
|
|
|
linters:
|
|
|
|
- gosec
|
2022-03-27 13:24:19 -04:00
|
|
|
# EXC0009
|
|
|
|
- text: "(Expect directory permissions to be 0750 or less|Expect file permissions to be 0600 or less)"
|
2019-04-02 11:27:12 -04:00
|
|
|
linters:
|
|
|
|
- gosec
|
2022-03-27 13:24:19 -04:00
|
|
|
# EXC0010
|
|
|
|
- text: "Potential file inclusion via variable"
|
2019-04-02 11:27:12 -04:00
|
|
|
linters:
|
|
|
|
- gosec
|
2022-03-27 13:24:19 -04:00
|
|
|
|
2022-09-02 15:24:26 -04:00
|
|
|
# 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
|
|
|
|
|
2022-03-27 13:24:19 -04:00
|
|
|
# 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"
|
2019-04-02 11:27:12 -04:00
|
|
|
linters:
|
|
|
|
- gosec
|
2022-03-27 13:24:19 -04:00
|
|
|
# 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"
|
2019-04-02 11:27:12 -04:00
|
|
|
linters:
|
|
|
|
- gosec
|
2022-03-27 13:24:19 -04:00
|
|
|
|
2022-09-02 15:24:26 -04:00
|
|
|
# TODO: make sure all packages have a description. Currently, there's 67 packages without.
|
|
|
|
- text: "package-comments: should have a package comment"
|
|
|
|
linters:
|
|
|
|
- revive
|
2023-07-29 15:01:34 -04:00
|
|
|
# FIXME temporarily suppress these (see https://github.com/gotestyourself/gotest.tools/issues/272)
|
|
|
|
- text: "SA1019: (assert|cmp|is)\\.ErrorType is deprecated"
|
|
|
|
linters:
|
|
|
|
- staticcheck
|
2022-03-27 13:24:19 -04:00
|
|
|
# Exclude some linters from running on tests files.
|
|
|
|
- path: _test\.go
|
2019-04-02 11:27:12 -04:00
|
|
|
linters:
|
2022-03-27 13:24:19 -04:00
|
|
|
- errcheck
|
2019-04-02 11:27:12 -04:00
|
|
|
- gosec
|
2022-03-27 13:24:19 -04:00
|
|
|
|
|
|
|
# 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
|