[run] timeout = "7m" 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.funlen] lines = -1 statements = 50 [linters-settings.misspell] locale = "US" ignore-words = ["internetbs"] [linters-settings.depguard] list-type = "denylist" include-go-root = false packages = ["github.com/pkg/errors"] [linters-settings.godox] keywords = ["FIXME"] [linters-settings.gocritic] enabled-tags = ["diagnostic", "style", "performance"] disabled-checks= [ "paramTypeCombine", # already handle by gofumpt.extra-rules "whyNoLint", # already handle by nonolint "unnamedResult", "hugeParam", "sloppyReassign", "rangeValCopy", "octalLiteral", "ptrToRefParam", "appendAssign", "ruleguard", "httpNoBody", "exposedSyncMutex", ] [linters] enable-all = true disable = [ "deadcode", # deprecated "exhaustivestruct", # deprecated "golint", # deprecated "ifshort", # deprecated "interfacer", # deprecated "maligned", # deprecated "nosnakecase", # deprecated "scopelint", # deprecated "structcheck", # deprecated "varcheck", # deprecated "cyclop", # duplicate of gocyclo "sqlclosecheck", # not relevant (SQL) "rowserrcheck", # not relevant (SQL) "execinquery", # not relevant (SQL) "lll", "gosec", "dupl", # not relevant "prealloc", # too many false-positive "bodyclose", # too many false-positive "gomnd", "testpackage", # not relevant "tparallel", # not relevant "paralleltest", # not relevant "nestif", # too many false-positive "wrapcheck", "goerr113", # not relevant "nlreturn", # not relevant "wsl", # not relevant "exhaustive", # not relevant "exhaustruct", # not relevant "makezero", # not relevant "forbidigo", # not relevant "varnamelen", # not relevant "nilnil", # not relevant "ireturn", # not relevant "contextcheck", # too many false-positive "tenv", # we already have a test "framework" to handle env vars "noctx", "forcetypeassert", "tagliatelle", "errname", "errchkjson", "nonamedreturns", ] [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", "ST1000: at least one file in a package should have a package comment", "package-comments: should have a package comment", ] [[issues.exclude-rules]] path = "(.+)_test.go" linters = ["funlen", "goconst", "maintidx"] [[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|fqdnSoaCache|muFqdnSoaCache) is a global variable" [[issues.exclude-rules]] path = "challenge/dns01/nameserver_.+.go" text = "dnsTimeout 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 = "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 = "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" [[issues.exclude-rules]] path = "platform/tester/env_test.go" linters = ["thelper"] [[issues.exclude-rules]] path = "providers/dns/oraclecloud/oraclecloud_test.go" text = "SA1019: x509.EncryptPEMBlock has been deprecated since Go 1.16" [[issues.exclude-rules]] path = "challenge/http01/domain_matcher.go" text = "yodaStyleExpr" [[issues.exclude-rules]] path = "providers/dns/dns_providers.go" text = "Function name: NewDNSChallengeProviderByName," [[issues.exclude-rules]] path = "providers/dns/sakuracloud/client.go" text = "mu is a global variable"