linters: enable-all: true disable: - gomnd # 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 - mnd - testpackage # not relevant - tparallel # not relevant - paralleltest # not relevant - nestif # too many false-positive - wrapcheck - err113 # not relevant - nlreturn # not relevant - wsl # not relevant - exhaustive # not relevant - exhaustruct # not relevant - makezero # not relevant - forbidigo - 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 - musttag # false-positive https://github.com/junk1tm/musttag/issues/17 - gosmopolitan # not relevant - exportloopref # Useless with go1.22 - canonicalheader # Can create side effects in the context of API clients - usestdlibvars # false-positive https://github.com/sashamelentyev/usestdlibvars/issues/96 linters-settings: govet: enable: - shadow gocyclo: min-complexity: 12 goconst: min-len: 3 min-occurrences: 3 funlen: lines: -1 statements: 50 misspell: locale: US ignore-words: - internetbs depguard: rules: main: deny: - pkg: "github.com/instana/testify" desc: not allowed - pkg: "github.com/pkg/errors" desc: Should be replaced by standard lib errors package tagalign: align: false order: - xml - json - yaml - yml - toml - mapstructure - url godox: keywords: - FIXME 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 revive: rules: - name: struct-tag - name: blank-imports - name: context-as-argument - name: context-keys-type - name: dot-imports - name: error-return - name: error-strings - name: error-naming - name: exported disabled: true - name: if-return - name: increment-decrement - name: var-naming - name: var-declaration - name: package-comments disabled: true - name: range - name: receiver-naming - name: time-naming - name: unexported-return - name: indent-error-flow - name: errorf - name: empty-block - name: superfluous-else - name: unused-parameter disabled: true - name: unreachable-code - name: redefines-builtin-id testifylint: disable: - require-error - go-require perfsprint: err-error: true errorf: true sprintf1: true strconcat: false run: timeout: 10m output: show-stats: true sort-results: true sort-order: - linter - file issues: exclude-generated: strict exclude-use-default: false max-issues-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' exclude-rules: - path: (.+)_test.go linters: - funlen - goconst - maintidx - path: (.+)_test.go text: 'Error return value of `fmt.Fprintln` is not checked' linters: - errcheck - path: providers/dns/dns_providers.go linters: - gocyclo - path: certcrypto/crypto.go text: '(tlsFeatureExtensionOID|ocspMustStapleFeature) is a global variable' linters: - gochecknoglobals - path: challenge/dns01/nameserver.go text: '(defaultNameservers|recursiveNameservers|fqdnSoaCache|muFqdnSoaCache) is a global variable' linters: - gochecknoglobals - path: challenge/dns01/nameserver_.+.go text: 'dnsTimeout is a global variable' linters: - gochecknoglobals - path: challenge/dns01/nameserver_test.go text: 'findXByFqdnTestCases is a global variable' linters: - gochecknoglobals - path: challenge/http01/domain_matcher.go text: 'string `Host` has \d occurrences, make it a constant' linters: - goconst - path: challenge/http01/domain_matcher.go text: 'cyclomatic complexity \d+ of func `parseForwardedHeader` is high' linters: - gocyclo - path: challenge/http01/domain_matcher.go text: "Function 'parseForwardedHeader' has too many statements" linters: - funlen - path: challenge/tlsalpn01/tls_alpn_challenge.go text: 'idPeAcmeIdentifierV1 is a global variable' linters: - gochecknoglobals - path: log/logger.go text: 'Logger is a global variable' linters: - gochecknoglobals - path: 'e2e/(dnschallenge/)?[\d\w]+_test.go' text: load is a global variable linters: - gochecknoglobals - path: 'providers/dns/([\d\w]+/)*[\d\w]+_test.go' text: 'envTest is a global variable' linters: - gochecknoglobals - path: 'providers/http/([\d\w]+/)*[\d\w]+_test.go' text: 'envTest is a global variable' linters: - gochecknoglobals - path: providers/dns/namecheap/namecheap_test.go text: 'testCases is a global variable' linters: - gochecknoglobals - path: providers/dns/acmedns/acmedns_test.go text: 'egTestAccount is a global variable' linters: - gochecknoglobals - path: providers/http/memcached/memcached_test.go text: 'memcachedHosts is a global variable' linters: - gochecknoglobals - path: cmd/zz_gen_cmd_dnshelp.go linters: - gocyclo - funlen - path: providers/dns/checkdomain/internal/types.go text: '`payed` is a misspelling of `paid`' linters: - misspell - path: platform/tester/env_test.go linters: - thelper - path: providers/dns/oraclecloud/oraclecloud_test.go text: 'SA1019: x509.EncryptPEMBlock has been deprecated since Go 1.16' linters: - staticcheck - path: providers/dns/sakuracloud/wrapper.go text: 'mu is a global variable' linters: - gochecknoglobals - path: cmd/cmd_renew.go text: 'cyclomatic complexity \d+ of func `(renewForDomains|renewForCSR)` is high' linters: - gocyclo - path: providers/dns/cpanel/cpanel.go text: 'cyclomatic complexity 13 of func `\(\*DNSProvider\)\.CleanUp` is high' linters: - gocyclo # Those elements have been replaced by non-exposed structures. - path: providers/dns/linode/linode_test.go linters: - staticcheck text: "SA1019: linodego\\.(DomainsPagedResponse|DomainRecordsPagedResponse) is deprecated"