# golangci-lint is used in Kubernetes with different configurations that # enable an increasing amount of checks: # - golangci.yaml is the most permissive configuration. All existing code # passed. # - golangci-strict.yaml adds checks that all new code in pull requests # must pass. # - golangci-hints.yaml adds checks for code patterns where developer # and reviewer may decide whether findings should get addressed before # merging. Beware that the golangci-lint output includes also the # issues that must be fixed and doesn't indicate how severe each issue # is (https://gophers.slack.com/archives/CS0TBRKPC/p1685721815275349). # # All three flavors are generated from golangci.yaml.in with # hack/update-golangci-lint-config.sh. run: timeout: 30m skip-files: - "^zz_generated.*" output: sort-results: true issues: max-issues-per-linter: 0 max-same-issues: 0 # Excluding configuration per-path, per-linter, per-text and per-source exclude-rules: # exclude ineffassign linter for generated files for conversion - path: conversion\.go linters: - ineffassign # SSA Extract calls are allowed in tests. - linters: - forbidigo text: should not be used because managedFields was removed path: _test.go$ # The Kubernetes naming convention for conversion functions uses underscores # and intentionally deviates from normal Go conventions to make those function # names more readable. Same for SetDefaults_*. # # https://github.com/kubernetes/kubernetes/issues/117288#issuecomment-1507028627 # https://github.com/kubernetes/kubernetes/issues/117288#issuecomment-1514201592 - linters: - stylecheck text: "ST1003: should not use underscores in Go names; func (Convert_.*_To_.*|SetDefaults_)" # This check currently has some false positives (https://github.com/nunnatsa/ginkgolinter/issues/91). - linters: - ginkgolinter text: use a function call in (Eventually|Consistently) # https://github.com/kubernetes/kubernetes/issues/117288#issuecomment-1507012435 - linters: - gocritic text: "ifElseChain: rewrite if-else to switch statement" linters: disable-all: false enable: # please keep this alphabetized - forbidigo - ginkgolinter - gocritic - govet - ineffassign - logcheck - staticcheck - stylecheck - unused linters-settings: # please keep this alphabetized custom: logcheck: # Installed there by hack/verify-golangci-lint.sh. path: ../_output/local/bin/logcheck.so description: structured logging checker original-url: k8s.io/logtools/logcheck forbidigo: analyze-types: true forbid: - p: ^managedfields\.ExtractInto$ pkg: ^k8s\.io/apimachinery/pkg/util/managedfields$ msg: should not be used because managedFields was removed - p: \.Extract pkg: ^k8s\.io/client-go/applyconfigurations/ msg: should not be used because managedFields was removed staticcheck: checks: - "all"