linters:
  enable:
    - exportloopref # Checks for pointers to enclosing loop variables
    - gofmt
    - goimports
    - gosec
    - ineffassign
    - misspell
    - nolintlint
    - revive
    - staticcheck
    - tenv # Detects using os.Setenv instead of t.Setenv since Go 1.17
    - unconvert
    - unused
    - vet
  disable:
    - errcheck

issues:
  include:
    - EXC0002
  max-issues-per-linter: 0
  max-same-issues: 0

  # Only using / doesn't work due to https://github.com/golangci/golangci-lint/issues/1398.
  exclude-rules:
    - path: 'cmd[\\/]containerd[\\/]builtins[\\/]'
      text: "blank-imports:"
    - path: 'contrib[\\/]fuzz[\\/]'
      text: "exported: func name will be used as fuzz.Fuzz"

linters-settings:
  gosec:
    # The following issues surfaced when `gosec` linter
    # was enabled. They are temporarily excluded to unblock
    # the existing workflow, but still to be addressed by
    # by future works.
    excludes:
      - G204
      - G305
      - G306
      - G402
      - G404
  misspell:
    ignore-words:
      - transferer
      - transferers

run:
  timeout: 8m
  skip-dirs:
    - api
    - cluster
    - design
    - docs
    - docs/man
    - releases
    - reports
    - test # e2e scripts
