run:
  timeout: 2m
  skip-files:
    - ^unsecured/

linters-settings:
  govet:
    check-shadowing: true
    enable-all: true
    disable:
      - fieldalignment
      - reflectvaluecompare # can be enabled in the future
  gocyclo:
    min-complexity: 40 # 30 by default (but we recommend 10-20)
  goconst:
    min-len: 3
    min-occurrences: 3
  misspell:
    locale: US
  funlen:
    lines: -1
    statements: 80 # default 40
  gocognit:
    min-complexity: 65 # default 30
  gofumpt:
    extra-rules: true
  godox:
    keywords:
      - FIXME

linters:
  enable-all: true
  disable:
    - maligned # Deprecated
    - scopelint # Deprecated
    - golint # Deprecated
    - interfacer # Deprecated
    - exhaustivestruct # Deprecated
    - ifshort # Deprecated
    - varcheck # Deprecated
    - deadcode # Deprecated
    - structcheck # Deprecated
    - nosnakecase # Deprecated
    - cyclop # duplicate of gocyclo
    - rowserrcheck # SQL
    - sqlclosecheck # SQL
    - dupl
    - lll
    - nestif
    - gomnd
    - goerr113
    - wrapcheck
    - nlreturn
    - wsl
    - exhaustive
    - exhaustruct
    - tparallel
    - testpackage
    - paralleltest
    - forcetypeassert
    - varnamelen

issues:
  exclude-use-default: false
  max-per-linter: 0
  max-same-issues: 0
  exclude:
    - 'ST1000: at least one file in a package should have a package comment'
    - 'package-comments: should have a package comment'
  exclude-rules:
    - path: (.+)_test.go
      linters:
        - funlen
        - goconst
        - gosec
        - maintidx
