---
linters:
  disable-all: true
  enable:
    - bodyclose
    - deadcode
    - errcheck
    - gochecknoglobals
    - goconst
    - gocritic
    - gofmt
    - goimports
    - goprintffuncname
    - gosec
    - gosimple
    - govet
    - ineffassign
    - misspell
    - nakedret
    - prealloc
    - staticcheck
    - structcheck
    - stylecheck
    - typecheck
    - unconvert
    - unparam
    - unused
    - varcheck
    - whitespace
    - wsl
    - godot
    - asciicheck
    - nolintlint
    - gofumpt
    - goerr113
    - tparallel
    - errorlint
    - paralleltest
    - forbidigo
    - makezero
    - thelper
    - predeclared
    - ifshort
    - revive
    - durationcheck
    - gomoddirectives
    - importas
    - nilerr
    - revive
    - wastedassign

# - wrapcheck # TODO: v3 Fix
# - testpackage # TODO: Fix testpackage
# - nestif # TODO: Fix nestif
# - noctx # TODO: Fix noctx

# don't enable:
# - depguard
# - dogsled
# - dupl
# - funlen
# - gochecknoinits
# - gocognit
# - gocyclo
# - godox
# - gomnd
# - lll
# - rowserrcheck
# - scopelint
# - gomodguard
# - exhaustive
# - nlreturn
# - gci
# - exhaustivestruct
# - cyclop
# - promlinter
# - tagliatelle

# depricated
# - maligned
# - interfacer
# - golint

issues:
  exclude-rules:
    - path: _test\.go
      linters:
        - gocyclo
        - errcheck
        - dupl
        - gosec

    - linters:
        - errcheck
      source: ".((os\\.)?std(out|err)\\..*|.*Close|.*Flush|os\\.Remove(All)?|
        .*printf?|os\\.(Un)?Setenv)."

    - linters:
        - stylecheck
      text: "ST1003:.*(Ts|ts).*TS"

  exclude-use-default: false
