version: "2"
linters:
  default: all
  disable:
    - cyclop
    - depguard
    - errchkjson
    - errorlint
    - exhaustruct
    - forcetypeassert
    - funlen
    - gochecknoglobals
    - gochecknoinits
    - gocognit
    - godot
    - godox
    - gosmopolitan
    - inamedparam
    - intrange # disabled while < go1.22
    - ireturn
    - lll
    - musttag
    - nestif
    - nlreturn
    - noinlineerr
    - nonamedreturns
    - paralleltest
    - recvcheck
    - testpackage
    - thelper
    - tparallel
    - unparam
    - varnamelen
    - whitespace
    - wrapcheck
    - wsl
    - wsl_v5
  settings:
    dupl:
      threshold: 200
    goconst:
      min-len: 2
      min-occurrences: 3
    gocyclo:
      min-complexity: 45
  exclusions:
    generated: lax
    presets:
      - comments
      - common-false-positives
      - legacy
      - std-error-handling
    paths:
      - third_party$
      - builtin$
      - examples$
formatters:
  enable:
    - gofmt
    - goimports
  exclusions:
    generated: lax
    paths:
      - third_party$
      - builtin$
      - examples$
issues:
  # Maximum issues count per one linter.
  # Set to 0 to disable.
  # Default: 50
  max-issues-per-linter: 0
  # Maximum count of issues with the same text.
  # Set to 0 to disable.
  # Default: 3
  max-same-issues: 0
