Skip to content

Commit 5dd5df4

Browse files
authored
Merge pull request #3208 from xrstf/bump-golangci-lint
🌱 Bump golangci-lint, remove staticcheck
2 parents 2306236 + 06d6934 commit 5dd5df4

File tree

40 files changed

+118
-123
lines changed

40 files changed

+118
-123
lines changed

.golangci.yaml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@ linters:
1010
- bidichk
1111
- bodyclose
1212
- containedctx
13+
- copyloopvar
1314
- dupword
1415
- durationcheck
1516
- errcheck
1617
- errchkjson
17-
- exportloopref
1818
- gocritic
1919
- godot
2020
- gofmt
@@ -51,9 +51,11 @@ linters-settings:
5151
allow-leading-space: false
5252
require-specific: true
5353
revive:
54-
revive:
54+
# make sure error-strings issues actually surface (default confidence is 0.8)
55+
confidence: 0.6
5556
rules:
5657
- name: context-keys-type
58+
- name: duplicated-imports
5759
- name: error-return
5860
- name: error-strings
5961
- name: error-naming

Makefile

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -55,14 +55,10 @@ OPENSHIFT_GOIMPORTS_BIN := openshift-goimports
5555
OPENSHIFT_GOIMPORTS := $(TOOLS_DIR)/$(OPENSHIFT_GOIMPORTS_BIN)-$(OPENSHIFT_GOIMPORTS_VER)
5656
export OPENSHIFT_GOIMPORTS # so hack scripts can use it
5757

58-
GOLANGCI_LINT_VER := v1.58.1
58+
GOLANGCI_LINT_VER := v1.62.2
5959
GOLANGCI_LINT_BIN := golangci-lint
6060
GOLANGCI_LINT := $(TOOLS_GOBIN_DIR)/$(GOLANGCI_LINT_BIN)-$(GOLANGCI_LINT_VER)
6161

62-
STATICCHECK_VER := 2023.1.7
63-
STATICCHECK_BIN := staticcheck
64-
STATICCHECK := $(TOOLS_GOBIN_DIR)/$(STATICCHECK_BIN)-$(STATICCHECK_VER)
65-
6662
GOTESTSUM_VER := v1.8.1
6763
GOTESTSUM_BIN := gotestsum
6864
GOTESTSUM := $(abspath $(TOOLS_DIR))/$(GOTESTSUM_BIN)-$(GOTESTSUM_VER)
@@ -140,9 +136,6 @@ install: require-jq require-go require-git verify-go-versions ## Install the pro
140136
$(GOLANGCI_LINT):
141137
GOBIN=$(TOOLS_GOBIN_DIR) $(GO_INSTALL) github.com/golangci/golangci-lint/cmd/golangci-lint $(GOLANGCI_LINT_BIN) $(GOLANGCI_LINT_VER)
142138

143-
$(STATICCHECK):
144-
GOBIN=$(TOOLS_GOBIN_DIR) $(GO_INSTALL) honnef.co/go/tools/cmd/staticcheck $(STATICCHECK_BIN) $(STATICCHECK_VER)
145-
146139
$(LOGCHECK):
147140
GOBIN=$(TOOLS_GOBIN_DIR) $(GO_INSTALL) sigs.k8s.io/logtools/logcheck $(LOGCHECK_BIN) $(LOGCHECK_VER)
148141

@@ -152,9 +145,8 @@ $(CODE_GENERATOR):
152145
$(KCP_APIGEN_GEN):
153146
pushd . && cd sdk && GOBIN=$(TOOLS_GOBIN_DIR) go install ./cmd/apigen && popd
154147

155-
lint: $(GOLANGCI_LINT) $(STATICCHECK) $(LOGCHECK) ## Verify lint
148+
lint: $(GOLANGCI_LINT) $(LOGCHECK) ## Verify lint
156149
$(GOLANGCI_LINT) run --timeout 20m ./...
157-
$(STATICCHECK) -checks ST1019,ST1005 ./...
158150
./hack/verify-contextual-logging.sh
159151
.PHONY: lint
160152

cmd/virtual-workspaces/options/options.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@ func (o *Options) Validate() error {
118118
errs = append(errs, fmt.Errorf("--kubeconfig is required for this command"))
119119
}
120120
if !strings.HasPrefix(o.RootPathPrefix, "/") {
121+
//nolint:revive
121122
errs = append(errs, fmt.Errorf("RootPathPrefix %q must start with /", o.RootPathPrefix))
122123
}
123124

pkg/admission/kubequota/kubequota_clusterworkspace_monitor.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ func (m *LogicalClusterDeletionMonitor) processNextWorkItem() bool {
106106
defer m.queue.Done(key)
107107

108108
if err := m.process(key); err != nil {
109+
//nolint:revive
109110
runtime.HandleError(fmt.Errorf("LogicalClusterDeletionMonitor failed to sync %q, err: %w", key, err))
110111

111112
m.queue.AddRateLimited(key)

pkg/admission/logicalcluster/admission.go

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ package logicalcluster
1818

1919
import (
2020
"context"
21+
"errors"
2122
"fmt"
2223
"io"
2324

@@ -157,25 +158,25 @@ func (o *plugin) Validate(ctx context.Context, a admission.Attributes, _ admissi
157158
newStatus := toSet(logicalCluster.Status.Initializers)
158159

159160
if !oldSpec.Equal(newSpec) {
160-
return admission.NewForbidden(a, fmt.Errorf("spec.initializers is immutable"))
161+
return admission.NewForbidden(a, errors.New("spec.initializers is immutable"))
161162
}
162163

163164
transitioningToInitializing := old.Status.Phase != corev1alpha1.LogicalClusterPhaseInitializing && logicalCluster.Status.Phase == corev1alpha1.LogicalClusterPhaseInitializing
164165
if transitioningToInitializing && !newSpec.Equal(newStatus) {
165-
return admission.NewForbidden(a, fmt.Errorf("status.initializers do not equal spec.initializers"))
166+
return admission.NewForbidden(a, errors.New("status.initializers do not equal spec.initializers"))
166167
}
167168

168169
if !transitioningToInitializing && logicalCluster.Status.Phase == corev1alpha1.LogicalClusterPhaseInitializing && !oldStatus.IsSuperset(newStatus) {
169-
return admission.NewForbidden(a, fmt.Errorf("status.initializers must not grow"))
170+
return admission.NewForbidden(a, errors.New("status.initializers must not grow"))
170171
}
171172

172173
if logicalCluster.Status.Phase != corev1alpha1.LogicalClusterPhaseInitializing && !oldStatus.Equal(newStatus) {
173-
return admission.NewForbidden(a, fmt.Errorf("status.initializers is immutable after initialization"))
174+
return admission.NewForbidden(a, errors.New("status.initializers is immutable after initialization"))
174175
}
175176

176177
if old.Status.Phase == corev1alpha1.LogicalClusterPhaseInitializing && logicalCluster.Status.Phase != corev1alpha1.LogicalClusterPhaseInitializing {
177178
if len(logicalCluster.Status.Initializers) > 0 {
178-
return admission.NewForbidden(a, fmt.Errorf("status.initializers is not empty"))
179+
return admission.NewForbidden(a, errors.New("status.initializers is not empty"))
179180
}
180181
}
181182

@@ -188,22 +189,23 @@ func (o *plugin) Validate(ctx context.Context, a admission.Attributes, _ admissi
188189
case admission.Delete:
189190
logicalCluster, err := o.logicalClusterLister.Cluster(clusterName).Get(corev1alpha1.LogicalClusterName)
190191
if err != nil {
192+
//nolint:revive
191193
return fmt.Errorf("LogicalCluster cannot be deleted: %w", err)
192194
}
193195
if !logicalCluster.Spec.DirectlyDeletable {
194-
return admission.NewForbidden(a, fmt.Errorf("LogicalCluster cannot be deleted"))
196+
return admission.NewForbidden(a, errors.New("LogicalCluster cannot be deleted")) //nolint:revive
195197
}
196198

197199
case admission.Create:
198-
return admission.NewForbidden(a, fmt.Errorf("LogicalCluster cannot be created"))
200+
return admission.NewForbidden(a, errors.New("LogicalCluster cannot be created")) //nolint:revive
199201
}
200202

201203
return nil
202204
}
203205

204206
func (o *plugin) ValidateInitialization() error {
205207
if o.logicalClusterLister == nil {
206-
return fmt.Errorf(PluginName + " plugin needs an LogicalCluster lister")
208+
return errors.New(PluginName + " plugin needs an LogicalCluster lister")
207209
}
208210
return nil
209211
}

pkg/cache/server/config.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ limitations under the License.
1717
package server
1818

1919
import (
20+
"errors"
2021
"fmt"
2122
"net/http"
2223
"strings"
@@ -165,16 +166,18 @@ func NewConfig(opts *cacheserveroptions.CompletedOptions, optionalLocalShardRest
165166
rt,
166167
func(rq *http.Request) (string, string, error) {
167168
if serverConfig.Config.RequestInfoResolver == nil {
168-
return "", "", fmt.Errorf("RequestInfoResolver wasn't provided")
169+
return "", "", errors.New("no RequestInfoResolver provided")
169170
}
170171
// the k8s request info resolver expects a cluster-less path, but the client we're using knows how to
171172
// add the cluster we are targeting to the path before this round-tripper fires, so we need to strip it
172173
// to use the k8s library
173174
parts := strings.Split(rq.URL.Path, "/")
174175
if len(parts) < 4 {
176+
//nolint:revive
175177
return "", "", fmt.Errorf("RequestInfoResolver: got invalid path: %v", rq.URL.Path)
176178
}
177179
if parts[1] != "clusters" {
180+
//nolint:revive
178181
return "", "", fmt.Errorf("RequestInfoResolver: got path without cluster prefix: %v", rq.URL.Path)
179182
}
180183
// we clone the request here to safely mutate the URL path, but this cloned request is never realized

pkg/reconciler/apis/apibinding/apibinding_reconcile.go

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -357,7 +357,8 @@ func (r *bindingReconciler) reconcile(ctx context.Context, apiBinding *apisv1alp
357357
apisv1alpha1.BindingUpToDate,
358358
apisv1alpha1.APIResourceSchemaInvalidReason,
359359
conditionsv1alpha1.ConditionSeverityError,
360-
fmt.Sprintf("APIResourceSchema %s|%s is invalid: %v\"", schemaClusterName, schemaName, status.Status().Details.Causes),
360+
"APIResourceSchema %s|%s is invalid: %v",
361+
schemaClusterName, schemaName, status.Status().Details.Causes,
361362
)
362363
// Only change InitialBindingCompleted if it's false
363364
if conditions.IsFalse(apiBinding, apisv1alpha1.InitialBindingCompleted) {
@@ -366,7 +367,8 @@ func (r *bindingReconciler) reconcile(ctx context.Context, apiBinding *apisv1alp
366367
apisv1alpha1.InitialBindingCompleted,
367368
apisv1alpha1.APIResourceSchemaInvalidReason,
368369
conditionsv1alpha1.ConditionSeverityError,
369-
fmt.Sprintf("APIResourceSchema %s|%s is invalid: %v\"", schemaClusterName, schemaName, status.Status().Details.Causes),
370+
"APIResourceSchema %s|%s is invalid: %v",
371+
schemaClusterName, schemaName, status.Status().Details.Causes,
370372
)
371373
}
372374

@@ -453,7 +455,8 @@ func (r *bindingReconciler) reconcile(ctx context.Context, apiBinding *apisv1alp
453455
apisv1alpha1.BindingUpToDate,
454456
apisv1alpha1.WaitingForEstablishedReason,
455457
conditionsv1alpha1.ConditionSeverityInfo,
456-
"Waiting for API(s) to be established: %s", strings.Join(needToWaitForRequeueWhenEstablished, ", "),
458+
"Waiting for API(s) to be established: %s",
459+
strings.Join(needToWaitForRequeueWhenEstablished, ", "),
457460
)
458461

459462
// Only change InitialBindingCompleted if it's false
@@ -463,7 +466,8 @@ func (r *bindingReconciler) reconcile(ctx context.Context, apiBinding *apisv1alp
463466
apisv1alpha1.InitialBindingCompleted,
464467
apisv1alpha1.WaitingForEstablishedReason,
465468
conditionsv1alpha1.ConditionSeverityInfo,
466-
"Waiting for API(s) to be established: %s", strings.Join(needToWaitForRequeueWhenEstablished, ", "),
469+
"Waiting for API(s) to be established: %s",
470+
strings.Join(needToWaitForRequeueWhenEstablished, ", "),
467471
)
468472
}
469473
} else {
@@ -512,7 +516,6 @@ func generateCRD(schema *apisv1alpha1.APIResourceSchema) (*apiextensionsv1.Custo
512516
}
513517

514518
for _, version := range schema.Spec.Versions {
515-
version := version
516519
crdVersion := apiextensionsv1.CustomResourceDefinitionVersion{
517520
Name: version.Name,
518521
Served: version.Served,

pkg/reconciler/apis/apibindingdeletion/apibinding_deletion_controller.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,8 @@ func (c *Controller) process(ctx context.Context, key string) error {
239239
apisv1alpha1.BindingResourceDeleteSuccess,
240240
ResourceDeletionFailedReason,
241241
conditionsv1alpha1.ConditionSeverityError,
242-
deleteErr.Error(),
242+
"%v",
243+
deleteErr,
243244
)
244245

245246
newResource := &Resource{ObjectMeta: apibindingCopy.ObjectMeta, Spec: &apibindingCopy.Spec, Status: &apibindingCopy.Status}
@@ -294,7 +295,8 @@ func (c *Controller) mutateResourceRemainingStatus(resourceRemaining gvrDeletion
294295
apisv1alpha1.BindingResourceDeleteSuccess,
295296
ResourceFinalizersRemainReason,
296297
conditionsv1alpha1.ConditionSeverityError,
297-
fmt.Sprintf("Some content in the workspace has finalizers remaining: %s", strings.Join(remainingByFinalizer, ", ")),
298+
"Some content in the workspace has finalizers remaining: %s",
299+
strings.Join(remainingByFinalizer, ", "),
298300
)
299301

300302
return apibinding, &deletion.ResourcesRemainingError{
@@ -320,7 +322,8 @@ func (c *Controller) mutateResourceRemainingStatus(resourceRemaining gvrDeletion
320322
apisv1alpha1.BindingResourceDeleteSuccess,
321323
ResourceRemainingReason,
322324
conditionsv1alpha1.ConditionSeverityError,
323-
fmt.Sprintf("Some resources are remaining: %s", strings.Join(remainingResources, ", ")),
325+
"Some resources are remaining: %s",
326+
strings.Join(remainingResources, ", "),
324327
)
325328

326329
return apibinding, &deletion.ResourcesRemainingError{

pkg/reconciler/apis/apiexport/apiexport_controller_test.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,8 +138,6 @@ func TestReconcile(t *testing.T) {
138138
}
139139

140140
for name, tc := range tests {
141-
tc := tc // to avoid t.Parallel() races
142-
143141
t.Run(name, func(t *testing.T) {
144142
createSecretCalled := false
145143

pkg/reconciler/apis/apiexport/apiexport_reconcile.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,8 @@ func (c *controller) reconcile(ctx context.Context, apiExport *apisv1alpha1.APIE
9191
apisv1alpha1.APIExportIdentityValid,
9292
apisv1alpha1.IdentityVerificationFailedReason,
9393
conditionsv1alpha1.ConditionSeverityError,
94-
err.Error(),
94+
"%v",
95+
err,
9596
)
9697
}
9798

@@ -115,7 +116,8 @@ func (c *controller) reconcile(ctx context.Context, apiExport *apisv1alpha1.APIE
115116
apisv1alpha1.APIExportVirtualWorkspaceURLsReady,
116117
apisv1alpha1.ErrorGeneratingURLsReason,
117118
conditionsv1alpha1.ConditionSeverityError,
118-
err.Error(),
119+
"%v",
120+
err,
119121
)
120122
}
121123

0 commit comments

Comments
 (0)