123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282 |
- ## This file contains all available configuration options
- ## with their default values.
- # See https://github.com/golangci/golangci-lint#config-file
- # See https://golangci-lint.run/usage/configuration/
- # Options for analysis running.
- run:
- # Exit code when at least one issue was found.
- # Default: 1
- issues-exit-code: 2
- # Include test files or not.
- # Default: true
- tests: false
- # Which dirs to skip: issues from them won't be reported.
- # Can use regexp here: `generated.*`, regexp is applied on full path.
- # Default value is empty list,
- # but default dirs are skipped independently of this option's value (see skip-dirs-use-default).
- # "/" will be replaced by current OS file path separator to properly work on Windows.
- skip-dirs: []
- # Which files to skip: they will be analyzed, but issues from them won't be reported.
- # Default value is empty list,
- # but 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.
- skip-files: []
- # Main linters configurations.
- # See https://golangci-lint.run/usage/linters
- linters:
- # Disable all default enabled linters.
- disable-all: true
- # Custom enable linters we want to use.
- enable:
- - errcheck # Errcheck is a program for checking for unchecked errors in go programs.
- - 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.
- - funlen # Tool for detection of long functions
- - goconst # Finds repeated strings that could be replaced by a constant
- - gocritic # Provides diagnostics that check for bugs, performance and style issues.
- - gofmt # Gofmt checks whether code was gofmt-ed. By default this tool runs with -s option to check for code simplification
- - gosimple # Linter for Go source code that specializes in simplifying code
- - govet # Vet examines Go source code and reports suspicious constructs, such as Printf calls whose arguments do not align with the format string
- - misspell # Finds commonly misspelled English words in comments
- - nolintlint # Reports ill-formed or insufficient nolint directives
- - revive # Fast, configurable, extensible, flexible, and beautiful linter for Go. Drop-in replacement of golint.
- - staticcheck # It's a set of rules from staticcheck. It's not the same thing as the staticcheck binary.
- - typecheck # Like the front-end of a Go compiler, parses and type-checks Go code
- - usestdlibvars # A linter that detect the possibility to use variables/constants from the Go standard library.
- - whitespace # Tool for detection of leading and trailing whitespace
- issues:
- exclude-rules:
- # helpers in tests often (rightfully) pass a *testing.T as their first argument
- - path: _test\.go
- text: "context.Context should be the first parameter of a function"
- linters:
- - revive
- # Yes, they are, but it's okay in a test
- - path: _test\.go
- text: "exported func.*returns unexported type.*which can be annoying to use"
- linters:
- - revive
- # https://github.com/go-critic/go-critic/issues/926
- - linters:
- - gocritic
- text: "unnecessaryDefer:"
- # https://golangci-lint.run/usage/linters
- linters-settings:
- # https://golangci-lint.run/usage/linters/#misspell
- misspell:
- locale: US
- ignore-words:
- - cancelled
- # https://golangci-lint.run/usage/linters/#revive
- # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md
- revive:
- ignore-generated-header: true
- severity: error
- rules:
- - name: atomic
- - name: line-length-limit
- severity: error
- arguments: [ 380 ]
- - name: unhandled-error
- severity: warning
- disabled: true
- arguments: []
- - name: var-naming
- severity: warning
- disabled: true
- arguments:
- # AllowList
- - [ "ID","URL","IP","HTTP","JSON","API","UID","Id","Api","Uid","Http","Json","Ip","Url" ]
- # DenyList
- - [ "VM" ]
- - name: string-format
- severity: warning
- disabled: false
- 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
- - name: function-result-limit
- severity: warning
- disabled: false
- arguments: [ 4 ]
- # https://golangci-lint.run/usage/linters/#funlen
- funlen:
- # Checks the number of lines in a function.
- # If lower than 0, disable the check.
- # Default: 60
- lines: 330
- # Checks the number of statements in a function.
- # If lower than 0, disable the check.
- # Default: 40
- statements: -1
- # https://golangci-lint.run/usage/linters/#goconst
- goconst:
- # Minimal length of string constant.
- # Default: 3
- min-len: 4
- # Minimum occurrences of constant string count to trigger issue.
- # Default: 3
- # For subsequent optimization, the value is reduced.
- min-occurrences: 30
- # Ignore test files.
- # Default: false
- ignore-tests: true
- # Look for existing constants matching the values.
- # Default: true
- match-constant: false
- # Search also for duplicated numbers.
- # Default: false
- numbers: true
- # Minimum value, only works with goconst.numbers
- # Default: 3
- min: 5
- # Maximum value, only works with goconst.numbers
- # Default: 3
- max: 20
- # Ignore when constant is not used as function argument.
- # Default: true
- ignore-calls: false
- # https://golangci-lint.run/usage/linters/#gocritic
- gocritic:
- disabled-checks:
- - ifElseChain
- - assignOp
- - appendAssign
- - singleCaseSwitch
- - regexpMust
- - typeSwitchVar
- - elseif
- # https://golangci-lint.run/usage/linters/#gosimple
- gosimple:
- # Select the Go version to target.
- # Default: 1.13
- # Deprecated: use the global `run.go` instead.
- go: "1.15"
- # Sxxxx checks in https://staticcheck.io/docs/configuration/options/#checks
- # Default: ["*"]
- checks: [
- "all", "-S1000", "-S1001", "-S1002", "-S1008", "-S1009", "-S1016", "-S1023", "-S1025", "-S1029", "-S1034", "-S1040"
- ]
- # https://golangci-lint.run/usage/linters/#govet
- govet:
- # Report about shadowed variables.
- # Default: false
- check-shadowing: true
- # 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: false
- unusedresult:
- # Comma-separated list of functions whose results must be used
- # (in addition to defaults context.WithCancel,context.WithDeadline,context.WithTimeout,context.WithValue,
- # errors.New,fmt.Errorf,fmt.Sprint,fmt.Sprintf,sort.Reverse)
- # Default []
- funcs:
- - pkg.MyFunc
- - context.WithCancel
- # 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
- # Enable all analyzers.
- # Default: false
- enable-all: true
- # Disable analyzers by name.
- # Run `go tool vet help` to see all analyzers.
- # Default: []
- disable:
- - asmdecl
- - assign
- - atomic
- - atomicalign
- - bools
- - buildtag
- - cgocall
- - composites
- - copylocks
- - deepequalerrors
- - errorsas
- - fieldalignment
- - findcall
- - framepointer
- - httpresponse
- - ifaceassert
- - loopclosure
- - lostcancel
- - nilfunc
- - nilness
- - reflectvaluecompare
- - shift
- - shadow
- - sigchanyzer
- - sortslice
- - stdmethods
- - stringintconv
- - structtag
- - testinggoroutine
- - tests
- - unmarshal
- - unreachable
- - unsafeptr
- - unusedwrite
- # https://golangci-lint.run/usage/linters/#staticcheck
- staticcheck:
- # Select the Go version to target.
- # Default: "1.13"
- # Deprecated: use the global `run.go` instead.
- go: "1.15"
- # SAxxxx checks in https://staticcheck.io/docs/configuration/options/#checks
- # Default: ["*"]
- checks: [ "all","-SA1019","-SA4015","-SA1029","-SA1016","-SA9003","-SA4006","-SA6003" ]
- # https://golangci-lint.run/usage/linters/#gofmt
- gofmt:
- # Simplify code: gofmt with `-s` option.
- # Default: true
- simplify: true
- # 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:]'
|