run:
  tests: true
  skip-dirs:
    - _examples

output:
  print-issued-lines: false

linters:
  enable-all: true
  disable:
    - maligned
    - megacheck
    - lll
    - gocyclo
    - dupl
    - gochecknoglobals
    - funlen
    - godox
    - wsl
    - gomnd
    - gocognit
    - goerr113
    - nolintlint
    - testpackage
    - godot
    - nestif
    - paralleltest
    - nlreturn
    - cyclop
    - exhaustivestruct
    - gci
    - gofumpt
    - errorlint
    - exhaustive
    - ifshort
    - wrapcheck
    - stylecheck
    - thelper
    - nonamedreturns
    - revive
    - dupword
    - exhaustruct
    - varnamelen
    - forcetypeassert
    - ireturn
    - maintidx
    - govet
    - nosnakecase
    - testableexamples
    - musttag
    - depguard
    - goconst

linters-settings:
  govet:
    check-shadowing: true
  gocyclo:
    min-complexity: 10
  dupl:
    threshold: 100
  goconst:
    min-len: 8
    min-occurrences: 3
  forbidigo:
    #forbid:
    #  - (Must)?NewLexer$
    exclude_godoc_examples: false


issues:
  max-per-linter: 0
  max-same: 0
  exclude-use-default: false
  exclude:
    # Captured by errcheck.
    - '^(G104|G204):'
    # Very commonly not checked.
    - 'Error return value of .(.*\.Help|.*\.MarkFlagRequired|(os\.)?std(out|err)\..*|.*Close|.*Flush|os\.Remove(All)?|.*printf?|os\.(Un)?Setenv). is not checked'
    - 'exported method (.*\.MarshalJSON|.*\.UnmarshalJSON|.*\.EntityURN|.*\.GoString|.*\.Pos) should have comment or be unexported'
    - 'composite literal uses unkeyed fields'
    - 'declaration of "err" shadows declaration'
    - 'should not use dot imports'
    - 'Potential file inclusion via variable'
    - 'should have comment or be unexported'
    - 'comment on exported var .* should be of the form'
    - 'at least one file in a package should have a package comment'
    - 'string literal contains the Unicode'
    - 'methods on the same type should have the same receiver name'
    - '_TokenType_name should be _TokenTypeName'
    - '`_TokenType_map` should be `_TokenTypeMap`'
    - 'rewrite if-else to switch statement'
