# This file contains all available configuration options # with their default values. # options for analysis running run: # default concurrency is a available CPU number concurrency: 4 # timeout for analysis, e.g. 30s, 5m, default is 0 timeout: 20m # exit code when at least one issue was found, default is 1 issues-exit-code: 1 # 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: readonly|release|vendor modules-download-mode: readonly # Allow multiple parallel golangci-lint instances running. # If false (default) - golangci-lint acquires file lock on start. allow-parallel-runners: false # output configuration options output: formats: text: path: stdout # 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 # Show statistics per linter. show-stats: false linters: # all available settings of specific linters settings: depguard: rules: main: deny: # specify an error message to output when a denylisted package is used - pkg: github.com/sirupsen/logrus desc: "logging is allowed only by logutils.Log" dogsled: # checks assignments with too many blank identifiers; default is 2 max-blank-identifiers: 2 dupl: # tokens count to trigger issue, 150 by default threshold: 100 errcheck: # report about not checking of errors in type assertions: `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 exhaustive: # indicates that switch statements are to be considered exhaustive if a # 'default' case is present, even if all enum members aren't listed in the # switch default-signifies-exhaustive: false funlen: lines: 60 statements: 40 gocognit: # minimal code complexity to report, 30 by default (but we recommend 10-20) min-complexity: 10 nestif: # minimal complexity of if statements to report, 5 by default min-complexity: 4 goconst: # minimal length of string constant, 3 by default min-len: 3 # minimal occurrences count to trigger, 3 by default min-occurrences: 5 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. settings: # settings passed to gocritic captLocal: # must be valid enabled check name paramsOnly: true gocyclo: # minimal code complexity to report, 30 by default (but we recommend 10-20) min-complexity: 10 godot: # check all top-level comments, not only declarations check-all: false 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 gosec: excludes: - G115 govet: # enable or disable analyzers by name enable: - atomicalign enable-all: false disable: - shadow disable-all: false importas: alias: - alias: appsv1api pkg: k8s.io/api/apps/v1 - alias: corev1api pkg: k8s.io/api/core/v1 - alias: rbacv1 pkg: k8s.io/api/rbac/v1 - alias: apierrors pkg: k8s.io/apimachinery/pkg/api/errors - alias: apiextv1 pkg: k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1 - alias: metav1 pkg: k8s.io/apimachinery/pkg/apis/meta/v1 - alias: storagev1api pkg: k8s.io/api/storage/v1 - alias: batchv1api pkg: k8s.io/api/batch/v1 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 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: US ignore-rules: - someword 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 nolintlint: # Enable to ensure that nolint directives are all used. Default is true. allow-unused: false # Exclude following linters from requiring an explanation. Default is []. allow-no-explanation: [] # Enable to require an explanation of nonzero length after each nolint directive. Default is false. require-explanation: true # Enable to require nolint directives to mention the specific linter being suppressed. Default is false. require-specific: true perfsprint: strconcat: false sprintf1: false errorf: false int-conversion: true revive: rules: - name: blank-imports disabled: true - name: context-as-argument disabled: true - name: context-keys-type - name: dot-imports disabled: true - name: early-return disabled: true arguments: - "preserveScope" - name: empty-block disabled: true - name: error-naming disabled: true - name: error-return disabled: true - name: error-strings disabled: true - name: errorf disabled: true - name: increment-decrement - name: indent-error-flow disabled: true - name: range - name: receiver-naming disabled: true - name: redefines-builtin-id disabled: true - name: superfluous-else disabled: true arguments: - "preserveScope" - name: time-naming - name: unexported-return disabled: true - name: unnecessary-stmt - name: unreachable-code - name: unused-parameter disabled: true - name: use-any - name: var-declaration - name: var-naming disabled: true rowserrcheck: packages: - github.com/jmoiron/sqlx staticcheck: checks: - all - -QF1001 # FIXME - -QF1003 # FIXME - -QF1004 # FIXME - -QF1007 # FIXME - -QF1008 # FIXME - -QF1009 # FIXME - -QF1012 # FIXME testifylint: # TODO: enable them all disable: - float-compare - go-require enable-all: true testpackage: # regexp pattern to skip files skip-regexp: (export|internal)_test\.go unparam: # Inspect exported functions, default is false. Set to true if no external program/library imports your code. # XXX: if you enable this setting, unparam will report a lot of false-positives in text editors: # if it's called for subdir of a project it can't find external interfaces. All text editor integrations # with golangci-lint call it on a directory with the changed file. check-exported: false usetesting: os-setenv: false 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 # Allow trailing comments in ending of blocks allow-trailing-comment: false # Force newlines in end of case at this limit (0 = never). force-case-trailing-whitespace: 0 # Force cuddling of err checks with err var assignment force-err-cuddling: false # Allow leading comments to be separated with empty lines allow-separated-leading-comment: false default: none enable: - asasalint - asciicheck - bidichk - bodyclose - copyloopvar - dogsled - dupword - durationcheck - errcheck - errchkjson - exptostd - ginkgolinter - goconst - goheader - goprintffuncname - gosec - govet - importas - ineffassign - misspell - nakedret - nilerr - noctx - nolintlint - nosprintfhostport - perfsprint - revive - staticcheck - testifylint - thelper - unconvert - unparam - unused - usestdlibvars - usetesting - whitespace exclusions: # 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). # "/" will be replaced by current OS file path separator to properly work # on Windows. paths: - pkg/plugin/generated/* - third_party rules: - linters: - staticcheck text: "DefaultVolumesToRestic" # No need to report deprecate for DefaultVolumesToRestic. - path: ".*_test.go$" linters: - errcheck - goconst - gosec - govet - staticcheck - unparam - unused - path: test/ linters: - errcheck - goconst - gosec - nilerr - staticcheck - unparam - unused - path: ".*data_upload_controller_test.go$" linters: - dupword text: "type" - path: ".*config_test.go$" linters: - dupword text: "bucket" generated: lax presets: - comments - common-false-positives - legacy - std-error-handling issues: # 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 # make issues output unique by line, default is true uniq-by-line: true # This file contains all available configuration options # with their default values. formatters: enable: - gofmt - goimports exclusions: generated: lax paths: - pkg/plugin/generated/* - third_party settings: gofmt: # simplify code: gofmt with `-s` option, true by default simplify: true goimports: local-prefixes: - github.com/vmware-tanzu/velero severity: default: error # Default value is empty list. # When a list of severity rules are provided, severity information will be added to lint # issues. Severity rules have the same filtering capability as exclude rules except you # are allowed to specify one matcher per severity rule. # Only affects out formats that support setting severity information. rules: - linters: - dupl severity: info version: "2"