[run]
  deadline = "5m"
  skip-files = []

[linters-settings]

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

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

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

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

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

[linters]
  enable-all = true
  disable = [
    "maligned",
    "lll",
    "gas",
    "dupl",
    "prealloc",
    "scopelint",
    "bodyclose",
    "wsl",
    "stylecheck",
    "godox",
    "gomnd",
    "testpackage", # not relevant
    "nestif", # too many false-positive
    "goerr113", # not relevant
  ]

[issues]
  exclude-use-default = false
  max-per-linter = 0
  max-same-issues = 0
  exclude = [
    "Error return value of .((os\\.)?std(out|err)\\..*|.*Close|.*Flush|os\\.Remove(All)?|.*printf?|os\\.(Un)?Setenv). is not checked",
    "exported (type|method|function) (.+) should have comment or be unexported",
  ]
  [[issues.exclude-rules]]
    path = "(.+)_test.go"
    linters = ["funlen"]
  [[issues.exclude-rules]]
    path = "providers/dns/dns_providers.go"
    linters = ["gocyclo"]
  [[issues.exclude-rules]]
    path = "providers/dns/gcloud/googlecloud_test.go"
    text = "string `(lego\\.wtf|manhattan)` has (\\d+) occurrences, make it a constant"
  [[issues.exclude-rules]]
    path = "providers/dns/zoneee/zoneee_test.go"
    text = "string `(bar|foo)` has (\\d+) occurrences, make it a constant"
  [[issues.exclude-rules]]
    path = "certcrypto/crypto.go"
    text = "`(tlsFeatureExtensionOID|ocspMustStapleFeature)` is a global variable"
  [[issues.exclude-rules]]
    path = "challenge/dns01/nameserver.go"
    text = "`(defaultNameservers|recursiveNameservers|dnsTimeout|fqdnSoaCache|muFqdnSoaCache)` is a global variable"
  [[issues.exclude-rules]]
    path = "challenge/dns01/nameserver_test.go"
    text = "`findXByFqdnTestCases` is a global variable"
  [[issues.exclude-rules]]
    path = "challenge/http01/domain_matcher.go"
    text = "string `Host` has \\d occurrences, make it a constant"
  [[issues.exclude-rules]]
    path = "challenge/http01/domain_matcher.go"
    text = "cyclomatic complexity \\d+ of func `parseForwardedHeader` is high"
  [[issues.exclude-rules]]
    path = "challenge/http01/domain_matcher.go"
    text = "Function 'parseForwardedHeader' has too many statements"
  [[issues.exclude-rules]]
    path = "challenge/tlsalpn01/tls_alpn_challenge.go"
    text = "`idPeAcmeIdentifierV1` is a global variable"
  [[issues.exclude-rules]]
    path = "log/logger.go"
    text = "`Logger` is a global variable"
  [[issues.exclude-rules]]
    path = "cmd/lego/main.go"
    text = "`version` is a global variable"
  [[issues.exclude-rules]]
    path = "e2e/(dnschallenge/)?[\\d\\w]+_test.go"
    text = "`load` is a global variable"
  [[issues.exclude-rules]]
    path = "providers/dns/([\\d\\w]+/)*[\\d\\w]+_test.go"
    text = "`envTest` is a global variable"
  [[issues.exclude-rules]]
    path = "providers/dns/namecheap/namecheap_test.go"
    text = "`testCases` is a global variable"
  [[issues.exclude-rules]]
    path = "providers/dns/acmedns/acmedns_test.go"
    text = "`(errorClientErr|errorStorageErr|egTestAccount)` is a global variable"
  [[issues.exclude-rules]]
    path = "providers/http/memcached/memcached_test.go"
    text = "`memcachedHosts` is a global variable"
  [[issues.exclude-rules]]
    path = "providers/dns/sakuracloud/client_test.go"
    text = "cyclomatic complexity 13 of func `(TestDNSProvider_cleanupTXTRecord_concurrent|TestDNSProvider_addTXTRecord_concurrent)` is high"
  [[issues.exclude-rules]]
    path = "providers/dns/dns_providers.go"
    text = "Function 'NewDNSChallengeProviderByName' has too many statements"
  [[issues.exclude-rules]]
    path = "cmd/flags.go"
    text = "Function 'CreateFlags' is too long"
  [[issues.exclude-rules]]
    path = "certificate/certificates.go"
    text = "Function 'GetOCSP' is too long"
  [[issues.exclude-rules]]
    path = "providers/dns/otc/client.go"
    text = "Function 'loginRequest' is too long"
  [[issues.exclude-rules]]
    path = "providers/dns/gandi/gandi.go"
    text = "Function 'Present' is too long"
  [[issues.exclude-rules]]
    path = "cmd/zz_gen_cmd_dnshelp.go"
    linters = ["gocyclo", "funlen"]
  [[issues.exclude-rules]]
    path = "providers/dns/checkdomain/client.go"
    text = "`payed` is a misspelling of `paid`"
  [[issues.exclude-rules]]
    path = "providers/dns/namecheap/namecheap_test.go"
    text = "cognitive complexity (\\d+) of func `TestDNSProvider_getHosts` is high"