linters-settings:
  govet:
    check-shadowing: true
    settings:
      printf:
        funcs:
          - (github.com/golangci/golangci-lint/pkg/logutils.Log).Infof
          - (github.com/golangci/golangci-lint/pkg/logutils.Log).Errorf
          - (github.com/golangci/golangci-lint/pkg/logutils.Log).Warnf
          - (github.com/golangci/golangci-lint/pkg/logutils.Log).Fatalf
  revive:
    min-confidence: 0
  gocyclo:
    min-complexity: 10
  maligned:
    suggest-new: true
  dupl:
    threshold: 100
  goconst:
    min-len: 2
    min-occurrences: 2
  depguard:
    list-type: blacklist
    packages:
      # logging is allowed only by logutils.Log, logrus
      # is allowed to use only in logutils package
      - github.com/sirupsen/logrus
  misspell:
    locale: US
  lll:
    line-length: 140
  goimports:
    local-prefixes: github.com/golangci/golangci-lint
  gocritic:
    enabled-tags:
      - performance
      - style
      - experimental
      - diagnostic
    disabled-checks:
      - commentFormatting
      - commentedOutCode
      - evalOrder
      - hugeParam
      - octalLiteral
      - rangeValCopy
      - tooManyResultsChecker
      - unnamedResult

linters:
  disable-all: true
  enable:
    - deadcode
    - gocritic
    - gofmt
    - gosimple
    - govet
    - ineffassign
    - misspell
    - revive
    - staticcheck
    - unused

run:
  skip-dirs:
    - pkg

issues:
  exclude:
    - can't lint
    - declaration of "err" shadows declaration at line
    - should have a package comment, unless it's in another file for this package
    - error strings should not be capitalized or end with punctuation or a newline
    - Wrapf call needs 1 arg but has 2 args
    - cs.NegotiatedProtocolIsMutual is deprecated