run:
  tests: true
  max-same-issues: 50
  skip-dirs:
    - resources
    - old
  skip-files:
    - cmd/protopkg/main.go

output:
  print-issued-lines: false

linters:
  enable-all: true
  disable:
    - maligned
    - megacheck
    - lll
    - typecheck # `go build` catches this, and it doesn't currently work with Go 1.11 modules
    - goimports # horrendously slow with go modules :(
    - dupl # has never been actually useful
    - gochecknoglobals
    - gochecknoinits
    - interfacer # author deprecated it because it provides bad suggestions
    - funlen
    - whitespace
    - godox
    - wsl
    - dogsled
    - gomnd
    - gocognit
    - gocyclo
    - scopelint
    - godot
    - nestif
    - testpackage
    - goerr113
    - gci
    - gofumpt
    - exhaustivestruct
    - nlreturn
    - forbidigo
    - cyclop
    - paralleltest
    - ifshort # so annoying
    - golint
    - tagliatelle
    - forcetypeassert
    - wrapcheck
    - revive
    - structcheck
    - stylecheck
    - exhaustive

linters-settings:
  govet:
    check-shadowing: true
    use-installed-packages: true
  dupl:
    threshold: 100
  goconst:
    min-len: 8
    min-occurrences: 3
  gocyclo:
    min-complexity: 20
  gocritic:
    disabled-checks:
      - ifElseChain


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)?|.*Print(f|ln|)|os\.(Un)?Setenv). is not checked'
    # Weird error only seen on Kochiku...
    - 'internal error: no range for'
    - 'exported method `.*\.(MarshalJSON|UnmarshalJSON|URN|Payload|GoString|Close|Provides|Requires|ExcludeFromHash|MarshalText|UnmarshalText|Description|Check|Poll|Severity)` should have comment or be unexported'
    - 'composite literal uses unkeyed fields'
    - 'declaration of "err" shadows declaration'
    - 'by other packages, and that stutters'
    - 'Potential file inclusion via variable'
    - 'at least one file in a package should have a package comment'
    - 'bad syntax for struct tag pair'
