version: "2" formatters: enable: - gci - gofmt - gofumpt - goimports settings: gofumpt: extra-rules: true gofmt: rewrite-rules: - pattern: 'interface{}' replacement: 'any' linters: default: all disable: - wsl # Deprecated - bodyclose - canonicalheader - contextcheck - cyclop # duplicate of gocyclo - dupl # not relevant - err113 # not relevant - errchkjson - errname - exhaustive # not relevant - exhaustruct # not relevant - forbidigo - forcetypeassert - gosec - gosmopolitan # not relevant - ireturn # not relevant - lll - makezero # not relevant - mnd - musttag # false-positive https://github.com/junk1tm/musttag/issues/17 - nestif # too many false-positive - nilnil # not relevant - nlreturn # not relevant - noctx - noinlineerr # too strict - nonamedreturns - paralleltest # not relevant - prealloc # too many false-positive - rowserrcheck # not relevant (SQL) - sqlclosecheck # not relevant (SQL) - tagliatelle - testpackage # not relevant - tparallel # not relevant - varnamelen # not relevant - wrapcheck settings: 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 funlen: lines: -1 statements: 50 goconst: min-len: 3 min-occurrences: 3 gocritic: disabled-checks: - paramTypeCombine # already handle by gofumpt.extra-rules - whyNoLint # already handle by nonolint - unnamedResult - hugeParam - sloppyReassign - rangeValCopy - octalLiteral - ptrToRefParam - appendAssign - ruleguard - httpNoBody - exposedSyncMutex enabled-tags: - diagnostic - style - performance gocyclo: min-complexity: 12 godox: keywords: - FIXME govet: disable: - fieldalignment enable-all: true settings: printf: funcs: - Print - Printf - Warn - Warnf - Fatal - Fatalf misspell: locale: US ignore-rules: - internetbs perfsprint: err-error: true errorf: true sprintf1: true strconcat: false 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 tagalign: align: false order: - xml - json - yaml - yml - toml - mapstructure - url testifylint: disable: - require-error - go-require usetesting: os-setenv: false # we already have a test "framework" to handle env vars funcorder: struct-method: false exclusions: warn-unused: true presets: - comments - std-error-handling paths: # Those elements are related to code borrowed from the official HuaweiCloud API client. - providers/dns/huaweicloud/internal rules: - path: (.+)_test.go linters: - funlen - goconst - maintidx - path: (.+)_test.go text: Error return value of `fmt.Fprintln` is not checked linters: - errcheck - text: "var-naming: avoid meaningless package names" linters: - revive - 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/precheck.go text: defaultNameserverPort is a global variable linters: - gochecknoglobals - 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|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/namecheap/transport.go text: (envProxyOnce|envProxyFuncValue) is a global variable linters: - gochecknoglobals - path: providers/dns/acmedns/mock_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: 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: cmd/cmd_renew.go text: Function 'renewForDomains' has too many statements linters: - funlen - path: providers/dns/cpanel/cpanel.go text: cyclomatic complexity 13 of func `\(\*DNSProvider\)\.CleanUp` is high linters: - gocyclo - path: providers/dns/manual/manual.go text: 'SA1019: dns01.DNSProviderManual is deprecated' linters: - staticcheck # Those elements have been replaced by non-exposed structures. - path: providers/dns/linode/linode_test.go text: 'SA1019: linodego\.(DomainsPagedResponse|DomainRecordsPagedResponse) is deprecated' linters: - staticcheck issues: max-issues-per-linter: 0 max-same-issues: 0