[run]
  timeout = "10m"
  skip-files = []
  skip-dirs = [
    "pkg/provider/kubernetes/crd/generated/",
  ]

[linters-settings]

  [linters-settings.govet]
    check-shadowing = false

  [linters-settings.golint]
    min-confidence = 0.0

  [linters-settings.gocyclo]
    min-complexity = 14.0

  [linters-settings.maligned]
    suggest-new = true

  [linters-settings.goconst]
    min-len = 3.0
    min-occurrences = 4.0

  [linters-settings.misspell]
    locale = "US"

  [linters-settings.funlen]
    lines = 230 # default 60
    statements = 120 # default 40

[linters]
  enable-all = true
  disable = [
    "gocyclo", # FIXME must be fixed
    "gosec",
    "dupl",
    "maligned",
    "lll",
    "unparam",
    "prealloc",
    "scopelint",
    "gochecknoinits",
    "gochecknoglobals",
    "godox",
    "gocognit",
    "bodyclose", # Too many false-positive and panics.
    "wsl", # Too strict
    "stylecheck", # skip because report issues related to some generated files.
  ]

[issues]
  exclude-use-default = false
  max-per-linter = 0
  max-same-issues = 0
  exclude = [
    "SA1019: http.CloseNotifier is deprecated: the CloseNotifier interface predates Go's context package. New code should use Request.Context instead.", # FIXME must be fixed
    "Error return value of .((os\\.)?std(out|err)\\..*|.*Close|.*Flush|os\\.Remove(All)?|.*printf?|os\\.(Un)?Setenv). is not checked",
    "should have a package comment, unless it's in another file for this package",
  ]
 [[issues.exclude-rules]]
    path = "(.+)_test.go"
    linters = ["goconst", "funlen"]
 [[issues.exclude-rules]]
    path = "integration/.+_test.go"
    text = "Error return value of `cmd\\.Process\\.Kill` is not checked"
 [[issues.exclude-rules]]
    path = "integration/(consul_catalog_test|constraint_test).go"
    text = "Error return value of `(s.deregisterService|s.deregisterAgentService)` is not checked"
 [[issues.exclude-rules]]
    path = "integration/grpc_test.go"
    text = "Error return value of `closer` is not checked"
 [[issues.exclude-rules]]
    path = "pkg/h2c/h2c.go"
    text = "Error return value of `rw.Write` is not checked"
 [[issues.exclude-rules]]
    path = "pkg/middlewares/recovery/recovery.go"
    text = "`logger` can be `github.com/stretchr/testify/assert.TestingT`"
 [[issues.exclude-rules]]
    path = "pkg/provider/docker/builder_test.go"
    text = "(U1000: func )?`(.+)` is unused"
 [[issues.exclude-rules]]
    path = "pkg/provider/kubernetes/builder_(endpoint|service)_test.go"
    text = "(U1000: func )?`(.+)` is unused"
 [[issues.exclude-rules]]
    path = "pkg/config/parser/.+_test.go"
    text = "U1000: field `(foo|fuu)` is unused"
 [[issues.exclude-rules]]
    path = "pkg/server/service/bufferpool.go"
    text = "SA6002: argument should be pointer-like to avoid allocations"
 [[issues.exclude-rules]]
    path = "cmd/configuration.go"
    text = "string `traefik` has (\\d) occurrences, make it a constant"
 [[issues.exclude-rules]] # FIXME must be fixed
    path = "cmd/context.go"
    text = "S1000: should use a simple channel send/receive instead of `select` with a single case"
