linters:
  enable-all: true
  disable:
    - gochecknoinits
    - paralleltest
    - wrapcheck
    - gosec
    - gochecknoglobals
    - musttag
    - varnamelen
    - wsl
    - nonamedreturns
    - tagliatelle
    - nlreturn
    - nakedret
    - gomnd
    - mnd
    - err113
    - exhaustruct
    - godox
    - depguard
    - testpackage
    - exhaustive
    - containedctx
    - prealloc
    - perfsprint
    - ireturn
    - contextcheck
    - canonicalheader
    - copyloopvar
    - intrange

    # Deprecated ones:
    - execinquery
    - structcheck
    - interfacer
    - deadcode
    - varcheck
    - ifshort
    - exhaustivestruct
    - golint
    - maligned
    - nosnakecase
    - scopelint

linters-settings:
  cyclop:
    max-complexity: 15
  gocyclo:
    min-complexity: 15
  nestif:
    min-complexity: 6
  funlen:
    lines: 120

issues:
  exclude-use-default: false

  exclude-rules:
    - path: _test.go$
      linters:
        - lll
        - funlen
        - dupword
        - goconst
        - contextcheck
        - errorlint
        - testableexamples
        - forcetypeassert

    # Generated code
    - path: lib/proto/
      linters:
        - lll
        - gocritic
        - dupword
        - forcetypeassert
    - path: lib/devices/list.go
      linters:
        - lll
    - path: lib/js/helper.go
      linters:
        - lll

    - path: /fixtures/
      linters:
        - forbidigo

    - path: lib/examples/
      linters:
        - forbidigo
        - noctx
        - gocritic

    - path: examples?_test.go$
      linters:
        - forbidigo
        - noctx
        - gocritic

    - path: main.go$
      linters:
        - forbidigo
        - noctx
        - forcetypeassert
        - lll

    - path: lib/assets/
      linters:
        - lll
