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: - linters:
- ginkgolinter - ginkgolinter
text: use a function call in (Eventually|Consistently) 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: linters:
disable-all: false # in contrast to golangci.yaml, the default set of linters remains enabled 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 enable: # please keep this alphabetized and in sync with golangci.yaml
- forbidigo
- ginkgolinter - ginkgolinter
- gocritic - gocritic
- govet - govet
@ -45,6 +51,15 @@ linters-settings: # please keep this alphabetized
path: ../_output/local/bin/logcheck.so path: ../_output/local/bin/logcheck.so
description: structured logging checker description: structured logging checker
original-url: k8s.io/logtools/logcheck 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: gocritic:
staticcheck: staticcheck:
checks: checks:

View File

@ -26,10 +26,16 @@ issues:
- linters: - linters:
- ginkgolinter - ginkgolinter
text: use a function call in (Eventually|Consistently) 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: linters:
disable-all: true # not disabled in golangci-strict.yaml disable-all: true # not disabled in golangci-strict.yaml
enable: # please keep this alphabetized and in sync with golangci-strict.yaml enable: # please keep this alphabetized and in sync with golangci-strict.yaml
- forbidigo
- ginkgolinter - ginkgolinter
- gocritic - gocritic
- govet - govet
@ -46,6 +52,15 @@ linters-settings: # please keep this alphabetized
path: ../_output/local/bin/logcheck.so path: ../_output/local/bin/logcheck.so
description: structured logging checker description: structured logging checker
original-url: k8s.io/logtools/logcheck 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: gocritic:
enabled-checks: # not limited in golangci-strict.yaml enabled-checks: # not limited in golangci-strict.yaml
- equalFold # 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) return nil, fmt.Errorf("failed to fetch the objectType: %v", err)
} }
result := &unstructured.Unstructured{} result := &unstructured.Unstructured{}
err = managedfields.ExtractInto(object, *objectType, fieldManager, result, subresource) err = managedfields.ExtractInto(object, *objectType, fieldManager, result, subresource) //nolint:forbidigo
if err != nil { if err != nil {
return nil, fmt.Errorf("failed calling ExtractInto for unstructured: %v", err) return nil, fmt.Errorf("failed calling ExtractInto for unstructured: %v", err)
} }