Merge pull request #119728 from pohly/ssa-forbid-extract-calls

SSA: prevent usage of Extract calls via forbidigo
This commit is contained in:
Kubernetes Prow Robot 2023-08-17 03:25:33 -07:00 committed by GitHub
commit f563910656
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 31 additions and 1 deletions

View File

@ -25,10 +25,16 @@ issues:
- linters:
- ginkgolinter
text: use a function call in (Eventually|Consistently)
# SSA Extract calls are allowed in tests.
- linters:
- forbidigo
text: should not be used because managedFields was removed
path: _test.go$
linters:
disable-all: false # in contrast to golangci.yaml, the default set of linters remains enabled
enable: # please keep this alphabetized and in sync with golangci.yaml
- forbidigo
- ginkgolinter
- gocritic
- govet
@ -45,6 +51,15 @@ linters-settings: # please keep this alphabetized
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
gocritic:
staticcheck:
checks:

View File

@ -26,10 +26,16 @@ issues:
- linters:
- ginkgolinter
text: use a function call in (Eventually|Consistently)
# SSA Extract calls are allowed in tests.
- linters:
- forbidigo
text: should not be used because managedFields was removed
path: _test.go$
linters:
disable-all: true # not disabled in golangci-strict.yaml
enable: # please keep this alphabetized and in sync with golangci-strict.yaml
- forbidigo
- ginkgolinter
- gocritic
- govet
@ -46,6 +52,15 @@ linters-settings: # please keep this alphabetized
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
gocritic:
enabled-checks: # not limited in golangci-strict.yaml
- equalFold # not limited in golangci-strict.yaml

View File

@ -125,7 +125,7 @@ func (e *extractor) extractUnstructured(object *unstructured.Unstructured, field
return nil, fmt.Errorf("failed to fetch the objectType: %v", err)
}
result := &unstructured.Unstructured{}
err = managedfields.ExtractInto(object, *objectType, fieldManager, result, subresource)
err = managedfields.ExtractInto(object, *objectType, fieldManager, result, subresource) //nolint:forbidigo
if err != nil {
return nil, fmt.Errorf("failed calling ExtractInto for unstructured: %v", err)
}