--- run: concurrency: 12 timeout: 1m issues-exit-code: 1 tests: true # list of build tags, all linters use it. Default is empty list. build-tags: testing # 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 # from this option's value (see skip-dirs-use-default). skip-dirs: [] # default is true. Enables skipping of directories: # vendor$, third_party$, testdata$, examples$, Godeps$, builtin$ skip-dirs-use-default: true # 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. skip-files: [] # by default isn't set. 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. modules-download-mode: vendor # output configuration options output: # colored-line-number|line-number|json|tab|checkstyle|code-climate, default is "colored-line-number" format: colored-line-number # print lines of code with issue, default is true print-issued-lines: true # print linter name in the end of issue text, default is true print-linter-name: true # make issues output unique by line, default is true uniq-by-line: true #It's a .golangci.yml config file of this repo: we enable more linters than the default and have more strict settings: linters-settings: depguard: list-type: blacklist packages: # logging is allowed only by logutils.Log, logrus # is allowed to use only in logutils package - github.com/sirupsen/logrus packages-with-error-message: - github.com/sirupsen/logrus: "logging is allowed only by logutils.Log" dupl: threshold: 100 funlen: lines: 100 statements: 50 goconst: min-len: 2 min-occurrences: 2 gocritic: enabled-tags: - diagnostic - experimental - opinionated - performance - style disabled-checks: - ifElseChain - octalLiteral - unnamedResult - whyNoLint - wrapperFunc gocyclo: min-complexity: 15 goimports: local-prefixes: github.com/golangci/golangci-lint gomnd: settings: mnd: # don't include the "operation" and "assign" checks: argument,case,condition,return govet: check-shadowing: true settings: printf: 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 lll: line-length: 140 misspell: locale: US linters: # please, do not use `enable-all`: it's deprecated and will be removed soon. # inverted configuration with `enable-all` and `disable` is not scalable during updates of golangci-lint #disable-all: true enable: - asasalint - asciicheck - bidichk - bodyclose - containedctx - contextcheck - cyclop - decorder - depguard - dogsled - dupl - dupword - durationcheck - errcheck - errchkjson - errname - errorlint - execinquery - exhaustive - exportloopref - funlen - gci - gocognit - goconst - gocritic - gocyclo # - godox - goerr113 - gofmt - goheader - goimports - gomnd - gomoddirectives - gomodguard - goprintffuncname - gosec - gosimple - govet - grouper - importas - ineffassign - interfacebloat #- ireturn - lll - loggercheck - maintidx - makezero - misspell - nakedret - nestif - nilerr - nilnil - noctx - nosprintfhostport - prealloc - predeclared - promlinter - reassign - revive - rowserrcheck - sqlclosecheck - staticcheck - stylecheck - tenv - testableexamples #- testpackage - thelper - unconvert - unparam - unused - usestdlibvars - wastedassign - whitespace - wrapcheck # don't enable: issues: exclude: - 'shadow: declaration of "err" shadows declaration at' # Excluding configuration per-path, per-linter, per-text and per-source exclude-rules: - path: _test\.go linters: - funlen - cyclop # golangci.com configuration # https://github.com/golangci/golangci/wiki/Configuration service: golangci-lint-version: 1.51.x # use the fixed version to not introduce new linters unexpectedly