[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.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-settings.forbidigo] forbid = [ '^print(ln)?$', '^spew\.Print(f|ln)?$', '^spew\.Dump$', ] [linters-settings.depguard] list-type = "blacklist" include-go-root = false packages = ["github.com/pkg/errors"] [linters-settings.godox] keywords = ["FIXME"] [linters-settings.importas] corev1 = "k8s.io/api/core/v1" networkingv1beta1 = "k8s.io/api/networking/v1beta1" extensionsv1beta1 = "k8s.io/api/extensions/v1beta1" metav1 = "k8s.io/apimachinery/pkg/apis/meta/v1" kubeerror = "k8s.io/apimachinery/pkg/api/errors" composeapi = "github.com/docker/compose/v2/pkg/api" [linters-settings.revive] [[linters-settings.revive.rules]] name = "struct-tag" [[linters-settings.rules]] name = "blank-imports" [[linters-settings.rules]] name = "context-as-argument" [[linters-settings.rules]] name = "context-keys-type" [[linters-settings.rules]] name = "dot-imports" [[linters-settings.rules]] name = "error-return" [[linters-settings.rules]] name = "error-strings" [[linters-settings.rules]] name = "error-naming" [[linters-settings.rules]] name = "exported" [[linters-settings.rules]] name = "if-return" [[linters-settings.rules]] name = "increment-decrement" [[linters-settings.rules]] name = "var-naming" [[linters-settings.rules]] name = "var-declaration" [[linters-settings.rules]] name = "package-comments" [[linters-settings.rules]] name = "range" [[linters-settings.rules]] name = "receiver-naming" [[linters-settings.rules]] name = "time-naming" [[linters-settings.rules]] name = "unexported-return" [[linters-settings.rules]] name = "indent-error-flow" [[linters-settings.rules]] name = "errorf" [[linters-settings.rules]] name = "empty-block" [[linters-settings.rules]] name = "superfluous-else" [[linters-settings.rules]] name = "unused-parameter" [[linters-settings.rules]] name = "unreachable-code" [[linters-settings.rules]] name = "redefines-builtin-id" [linters-settings.gomoddirectives] replace-allow-list = [ "github.com/abbot/go-http-auth", "github.com/go-check/check", "github.com/gorilla/mux", "github.com/mailgun/minheap", "github.com/mailgun/multibuf", "github.com/jaguilar/vt100", "github.com/BurntSushi/toml", ] [linters] enable-all = true disable = [ "scopelint", # Deprecated "interfacer", # Deprecated "maligned", # Deprecated "golint", # Deprecated "exhaustivestruct",# Deprecated "nosnakecase", # Deprecated "ifshort", # Deprecated "structcheck", # Deprecated "varcheck", # Deprecated "deadcode", # Deprecated "execinquery", # Not relevant (SQL) "sqlclosecheck", # Not relevant (SQL) "rowserrcheck", # Not relevant (SQL) "lll", # Not relevant "gocyclo", # FIXME must be fixed "cyclop", # Duplicate of gocyclo "gocognit", # Too strict "nestif", # Too many false-positive. "prealloc", # Too many false-positive. "makezero", # Not relevant "dupl", # Too strict "gosec", # Too strict "gochecknoinits", "gochecknoglobals", "wsl", # Too strict "nlreturn", # Not relevant "gomnd", # Too strict "stylecheck", # skip because report issues related to some generated files. "testpackage", # Too strict "tparallel", # Not relevant "paralleltest", # Not relevant "exhaustive", # Not relevant "exhaustruct", # duplicate of exhaustivestruct "goerr113", # Too strict "wrapcheck", # Too strict "noctx", # Too strict "bodyclose", # Too many false-positive and panics. "forcetypeassert", # Too strict "tagliatelle", # Not compatible with current tags. "varnamelen", # not relevant "nilnil", # not relevant "ireturn", # not relevant "contextcheck", # too many false-positive "containedctx", # too many false-positive "maintidx", # kind of duplicate of gocyclo "nonamedreturns", # 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", "should have a package comment, unless it's in another file for this package", "SA1019: http.CloseNotifier has been deprecated", # FIXME must be fixed "SA1019: cfg.SSLRedirect is deprecated", "SA1019: cfg.SSLTemporaryRedirect is deprecated", "SA1019: cfg.SSLHost is deprecated", "SA1019: cfg.SSLForceHost is deprecated", "SA1019: cfg.FeaturePolicy is deprecated", "SA1019: c.Providers.ConsulCatalog.Namespace is deprecated", "SA1019: c.Providers.Consul.Namespace is deprecated", ] [[issues.exclude-rules]] path = "(.+)_test.go" linters = ["goconst", "funlen", "godot", "nosnakecase"] [[issues.exclude-rules]] path = "(.+)_test.go" text = " always receives " linters = [ "unparam" ] [[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/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/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]] path = "pkg/server/middleware/middlewares.go" text = "Function 'buildConstructor' has too many statements" [[issues.exclude-rules]] path = "pkg/tracing/haystack/logger.go" linters = ["goprintffuncname"] [[issues.exclude-rules]] path = "pkg/tracing/tracing.go" text = "printf-like formatting function 'SetErrorWithEvent' should be named 'SetErrorWithEventf'" [[issues.exclude-rules]] path = "pkg/log/deprecated.go" linters = ["godot"] [[issues.exclude-rules]] path = "(.+)\\.go" text = "struct-tag: unknown option 'inline' in JSON tag" [[issues.exclude-rules]] path = "pkg/server/router/tcp/manager.go" text = "Function 'buildEntryPointHandler' is too long (.+)" [[issues.exclude-rules]] path = "pkg/tls/tlsmanager_test.go" text = "SA1019: config.ClientCAs.Subjects has been deprecated since Go 1.18" [[issues.exclude-rules]] path = "pkg/types/tls_test.go" text = "SA1019: tlsConfig.RootCAs.Subjects has been deprecated since Go 1.18" [[issues.exclude-rules]] path = "pkg/provider/kubernetes/(crd|gateway)/client.go" linters = ["interfacebloat"] [[issues.exclude-rules]] path = "pkg/metrics/metrics.go" linters = ["interfacebloat"] [[issues.exclude-rules]] path = "pkg/provider/acme/provider.go" text = "\\(\\*Provider\\)\\.resolveCertificate - result 0 \\(\\*github.com/go-acme/lego/v4/certificate.Resource\\) is never used"