run:
  tests: false
  timeout: 5m

linters-settings:
  cyclop:
    max-complexity: 12
    skip-tests: true
  errcheck:
    exclude-functions:
      - (*go.etcd.io/etcd/client/v3/concurrency.Mutex).Unlock
      - (*go.etcd.io/etcd/client/v3/concurrency.Session).Close
  gofumpt:
    extra-rules: true

linters:
  enable-all: true
  disable:
    - perfsprint # new
    - testifylint # new
    - spancheck # new
    - rowserrcheck # new
    - mnd # new
    - intrange # new
    - depguard # new
    - revive # new
    - errcheck # new
    - errchkjson
    - exhaustive
    - exhaustruct
    - execinquery # deprecated
    - exportloopref # deprecated
    - forcetypeassert
    - funlen
    - gochecknoglobals
    - gochecknoinits
    - goconst
    - godox
    - err113
    - gomnd
    - ireturn
    - lll
    - musttag
    - nilnil
    - nlreturn
    - nonamedreturns
    - tagliatelle
    - varnamelen
    - wrapcheck
    - wsl
    - cyclop # TODO: turn this back on later
    - gocognit # TODO: turn this back on later
    - forbidigo # TODO: turn this back on later

issues:
  exclude-use-default: false
  exclude:
    - "package-comments: should have a package comment"
    - "ST1000: at least one file in a package should have a package comment"
    - "G204: Subprocess launched with a potential tainted input or cmd arguments"
    - "G204: Subprocess launched with variable"
    - "G402: TLS MinVersion too low."
    - "const `op` is unused"
    - "G115: integer overflow conversion int -> int32"
  exclude-rules:
    - path: cmd/proxy/main.go
      text: "G108: Profiling endpoint is automatically exposed on /debug/pprof"
    - path: pkg/stash/stasher.go
      linters:
        - contextcheck
    - path: pkg/stash/with_azureblob.go # False positive
      linters:
        - bodyclose
    - path: pkg/storage/azureblob/azureblob.go # False positive
      linters:
        - bodyclose
    - path: pkg/storage/compliance/*
      linters:
        - thelper
        - gosec
        - errcheck
    - path: pkg/index/compliance/*
      linters:
        - thelper
        - gosec
        - errcheck
