run:
  tests: true
  max-same-issues: 50

output:
  print-issued-lines: false

linters:
  enable:
    - gocyclo
    - gocritic
    - goconst
    - dupl
    - unconvert
    - goimports
    - unused
    - govet
    - nakedret
    - errcheck
    - revive
    - ineffassign
    - goconst
    - unparam
    - gofmt

linters-settings:
  vet:
    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
  gofmt:
    rewrite-rules:
      - pattern: "interface{}"
        replacement: "any"
      - pattern: "a[b:len(a)]"
        replacement: "a[b:]"

issues:
  max-per-linter: 0
  max-same: 0
  exclude-dirs:
    - resources
    - old
  exclude-files:
    - cmd/protopkg/main.go
  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"
