# options for analysis running run: # default concurrency is a available CPU number concurrency: 4 # timeout for analysis, e.g. 30s, 5m, default is 1m timeout: 15m # exit code when at least one issue was found, default is 1 issues-exit-code: 1 # include test files or not, default is true tests: true # list of build tags, all linters use it. Default is empty list. build-tags: - unit - allcomponents - subtlecrypto # 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: # - ".*\\.my\\.go$" # - lib/bad.go issues: # which dirs to skip: they won't be analyzed; # can use regexp here: generated.*, regexp is applied on full path; # default value is empty list, but next dirs are always skipped independently # from this option's value: # third_party$, testdata$, examples$, Godeps$, builtin$ exclude-dirs: - ^pkg.*client.*clientset.*versioned.* - ^pkg.*client.*informers.*externalversions.* - ^pkg.*proto.* # output configuration options output: # colored-line-number|line-number|json|tab|checkstyle, default is "colored-line-number" formats: - format: tab # 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 # all available settings of specific linters linters-settings: errcheck: # report about not checking of errors in type assetions: `a := b.(MyStruct)`; # default is false: such cases aren't reported by default. check-type-assertions: false # report about assignment of errors to blank identifier: `num, _ := strconv.Atoi(numStr)`; # default is false: such cases aren't reported by default. check-blank: false exclude-functions: - fmt:.* - io/ioutil:^Read.* # path to a file containing a list of functions to exclude from checking # see https://github.com/kisielk/errcheck#excluding-functions for details # exclude: funlen: lines: 60 statements: 40 govet: # settings per analyzer settings: printf: # analyzer name, run `go tool vet help` to see all analyzers funcs: # run `go tool vet help printf` to see available settings for `printf` analyzer - (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 # enable or disable analyzers by name enable: - atomicalign - shadow enable-all: false disable-all: false revive: # minimal confidence for issues, default is 0.8 confidence: 0.8 gofmt: # simplify code: gofmt with `-s` option, true by default simplify: true goimports: # put imports beginning with prefix after 3rd-party packages; # it's a comma-separated list of prefixes local-prefixes: github.com/dapr/ gocyclo: # minimal code complexity to report, 30 by default (but we recommend 10-20) min-complexity: 10 gocognit: # minimal code complexity to report, 30 by default (but we recommend 10-20) min-complexity: 10 dupl: # tokens count to trigger issue, 150 by default threshold: 100 goconst: # minimal length of string constant, 3 by default min-len: 3 # minimal occurrences count to trigger, 3 by default min-occurrences: 5 depguard: rules: main: deny: - pkg: "github.com/Sirupsen/logrus" desc: "you must use github.com/dapr/kit/logger" - pkg: "github.com/agrea/ptr" desc: "you must use github.com/dapr/kit/ptr" - pkg: "go.uber.org/atomic" desc: "you must use sync/atomic" - pkg: "github.com/pkg/errors" desc: "you must use the standard library (errors package and/or fmt.Errorf)" - pkg: "github.com/cenkalti/backoff" desc: "you must use github.com/cenkalti/backoff/v4" - pkg: "github.com/cenkalti/backoff/v2" desc: "you must use github.com/cenkalti/backoff/v4" - pkg: "github.com/cenkalti/backoff/v3" desc: "you must use github.com/cenkalti/backoff/v4" misspell: # Correct spellings using locale preferences for US or UK. # Default is to use a neutral variety of English. # Setting locale to US will correct the British spelling of 'colour' to 'color'. # locale: default ignore-words: - someword lll: # max line length, lines longer will be reported. Default is 120. # '\t' is counted as 1 character by default, and can be changed with the tab-width option line-length: 120 # tab width in spaces. Default to 1. tab-width: 1 nakedret: # make an issue if func has more lines of code than this setting and it has naked returns; default is 30 max-func-lines: 30 prealloc: # XXX: we don't recommend using this linter before doing performance profiling. # For most programs usage of prealloc will be a premature optimization. # Report preallocation suggestions only on simple loops that have no returns/breaks/continues/gotos in them. # True by default. simple: true range-loops: true # Report preallocation suggestions on range loops, true by default for-loops: false # Report preallocation suggestions on for loops, false by default gocritic: # Which checks should be enabled; can't be combined with 'disabled-checks'; # See https://go-critic.github.io/overview#checks-overview # To check which checks are enabled run `GL_DEBUG=gocritic golangci-lint run` # By default list of stable checks is used. # enabled-checks: # Which checks should be disabled; can't be combined with 'enabled-checks'; default is empty disabled-checks: - regexpMust - rangeValCopy - hugeParam - ifElseChain - singleCaseSwitch - exitAfterDefer # Enable multiple checks by tags, run `GL_DEBUG=gocritic golangci-lint run` to see all tags and checks. # Empty list by default. See https://github.com/go-critic/go-critic#usage -> section "Tags". enabled-tags: - performance settings: # settings passed to gocritic captLocal: # must be valid enabled check name paramsOnly: 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 - HACK # marks hack-arounds that should be removed before merging godot: exclude: - 'nosec' capital: false scope: all dogsled: # checks assignments with too many blank identifiers; default is 2 max-blank-identifiers: 2 whitespace: multi-if: false # Enforces newlines (or comments) after every multi-line if statement multi-func: false # Enforces newlines (or comments) after every multi-line function signature wsl: # If true append is only allowed to be cuddled if appending value is # matching variables, fields or types on line above. Default is true. strict-append: true # Allow calls and assignments to be cuddled as long as the lines have any # matching variables, fields or types. Default is true. allow-assign-and-call: true # Allow multiline assignments to be cuddled. Default is true. allow-multiline-assign: true # Allow declarations (var) to be cuddled. allow-cuddle-declarations: false # 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: 1 linters: fast: false enable-all: true disable: # TODO Enforce the below linters later - musttag - dupl - errcheck - funlen - gochecknoglobals - gochecknoinits - gocyclo - gocognit - godox - lll - unparam - wsl - testpackage - nestif - nlreturn - exhaustive - exhaustruct - noctx - gci - tparallel - paralleltest - wrapcheck - tagliatelle - ireturn - errchkjson - contextcheck - gomoddirectives - godot - cyclop - varnamelen - errorlint - forcetypeassert - maintidx - nilnil - predeclared - tenv - thelper - wastedassign - containedctx - gosimple - nonamedreturns - asasalint - rowserrcheck - sqlclosecheck - inamedparam - tagalign - mnd - canonicalheader - err113 - fatcontext - forbidigo # TODO: Re-enable and remove fmt.println