diff --git a/.golangci.yml b/.golangci.yml index 99772868b..c7a4c727a 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -89,6 +89,8 @@ linters-settings: - name: context-as-argument - name: context-keys-type - name: unexported-return + - name: time-naming + - name: empty-block staticcheck: checks: - all diff --git a/hack/verify-staticcheck.sh b/hack/verify-staticcheck.sh index 44926f614..70fde4da1 100755 --- a/hack/verify-staticcheck.sh +++ b/hack/verify-staticcheck.sh @@ -19,7 +19,7 @@ set -o nounset set -o pipefail REPO_ROOT=$(dirname "${BASH_SOURCE[0]}")/.. -GOLANGCI_LINT_VER="v1.52.2" +GOLANGCI_LINT_VER="v1.55.2" cd "${REPO_ROOT}" source "hack/util.sh" diff --git a/pkg/apis/cluster/validation/validation_test.go b/pkg/apis/cluster/validation/validation_test.go index 72d0ff2d7..b6dc627b2 100644 --- a/pkg/apis/cluster/validation/validation_test.go +++ b/pkg/apis/cluster/validation/validation_test.go @@ -313,12 +313,13 @@ func TestValidateCluster(t *testing.T) { } for name, testCase := range testCases { - errs := ValidateCluster(&testCase.cluster) - if len(errs) == 0 && testCase.expectError { + pinedCase := testCase + errs := ValidateCluster(&pinedCase.cluster) + if len(errs) == 0 && pinedCase.expectError { t.Errorf("expected failure for %q, but there were none", name) return } - if len(errs) != 0 && !testCase.expectError { + if len(errs) != 0 && !pinedCase.expectError { t.Errorf("expected success for %q, but there were errors: %v", name, errs) return } diff --git a/pkg/printers/internalversion/printers_test.go b/pkg/printers/internalversion/printers_test.go index 83b287fcb..2a29e501d 100644 --- a/pkg/printers/internalversion/printers_test.go +++ b/pkg/printers/internalversion/printers_test.go @@ -69,16 +69,16 @@ func TestPrintCluster(t *testing.T) { }, } - for i, test := range tests { - rows, err := printCluster(&test.cluster, test.generateOptions) + for i := range tests { + rows, err := printCluster(&tests[i].cluster, tests[i].generateOptions) if err != nil { t.Fatal(err) } for i := range rows { rows[i].Object.Object = nil } - if !reflect.DeepEqual(test.expect, rows) { - t.Errorf("%d mismatch: %s", i, diff.ObjectReflectDiff(test.expect, rows)) + if !reflect.DeepEqual(tests[i].expect, rows) { + t.Errorf("%d mismatch: %s", i, diff.ObjectReflectDiff(tests[i].expect, rows)) } } } diff --git a/pkg/scheduler/core/assignment.go b/pkg/scheduler/core/assignment.go index c33c3d379..49a081d9c 100644 --- a/pkg/scheduler/core/assignment.go +++ b/pkg/scheduler/core/assignment.go @@ -180,7 +180,7 @@ func assignByDynamicStrategy(state *assignState) ([]workv1alpha2.TargetCluster, return nil, fmt.Errorf("failed to scale up: %v", err) } return result, nil - } else { - return state.scheduledClusters, nil } + + return state.scheduledClusters, nil } diff --git a/pkg/scheduler/core/spreadconstraint/select_clusters.go b/pkg/scheduler/core/spreadconstraint/select_clusters.go index 0dd224ea7..7eb5abe68 100644 --- a/pkg/scheduler/core/spreadconstraint/select_clusters.go +++ b/pkg/scheduler/core/spreadconstraint/select_clusters.go @@ -54,9 +54,9 @@ func selectBestClustersBySpreadConstraints(spreadConstraints []policyv1alpha1.Sp return selectBestClustersByRegion(spreadConstraintMap, groupClustersInfo) } else if _, exist := spreadConstraintMap[policyv1alpha1.SpreadByFieldCluster]; exist { return selectBestClustersByCluster(spreadConstraintMap[policyv1alpha1.SpreadByFieldCluster], groupClustersInfo, needReplicas) - } else { - return nil, fmt.Errorf("just support cluster and region spread constraint") } + + return nil, fmt.Errorf("just support cluster and region spread constraint") } func shouldIgnoreSpreadConstraint(placement *policyv1alpha1.Placement) bool { diff --git a/pkg/search/proxy/store/util.go b/pkg/search/proxy/store/util.go index 69ccd2f8c..ed7c51cf3 100644 --- a/pkg/search/proxy/store/util.go +++ b/pkg/search/proxy/store/util.go @@ -315,9 +315,9 @@ func (n *MultiNamespace) Single() (string, bool) { if n.allNamespaces || n.namespaces.Len() != 1 { return "", false } - var ns string - for ns = range n.namespaces { - } + + // reach here means there is exactly one namespace, so we can safely get it. + ns := sets.List(n.namespaces)[0] return ns, true } diff --git a/pkg/util/binding_test.go b/pkg/util/binding_test.go index a68d208a3..d220fd944 100644 --- a/pkg/util/binding_test.go +++ b/pkg/util/binding_test.go @@ -76,11 +76,11 @@ func TestGetBindingClusterNames(t *testing.T) { }, } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - got := GetBindingClusterNames(&tt.binding.Spec) - if !reflect.DeepEqual(got, tt.expected) { - t.Errorf("GetBindingClusterNames() = %v, want %v", got, tt.expected) + for i := range tests { + t.Run(tests[i].name, func(t *testing.T) { + got := GetBindingClusterNames(&tests[i].binding.Spec) + if !reflect.DeepEqual(got, tests[i].expected) { + t.Errorf("GetBindingClusterNames() = %v, want %v", got, tests[i].expected) } }) } diff --git a/pkg/util/helper/workstatus.go b/pkg/util/helper/workstatus.go index 189526511..54d451de9 100644 --- a/pkg/util/helper/workstatus.go +++ b/pkg/util/helper/workstatus.go @@ -229,14 +229,14 @@ func assembleWorkStatus(works []workv1alpha1.Work, workload *unstructured.Unstru Health: workv1alpha2.ResourceUnknown, } - for _, manifestStatus := range work.Status.ManifestStatuses { - equal, err := equalIdentifier(&manifestStatus.Identifier, identifierIndex, workload) + for i := range work.Status.ManifestStatuses { + equal, err := equalIdentifier(&work.Status.ManifestStatuses[i].Identifier, identifierIndex, workload) if err != nil { return nil, err } if equal { - aggregatedStatus.Status = manifestStatus.Status - aggregatedStatus.Health = workv1alpha2.ResourceHealth(manifestStatus.Health) + aggregatedStatus.Status = work.Status.ManifestStatuses[i].Status + aggregatedStatus.Health = workv1alpha2.ResourceHealth(work.Status.ManifestStatuses[i].Health) break } } diff --git a/pkg/util/validation/validation.go b/pkg/util/validation/validation.go index 3e428e200..41c63a34c 100644 --- a/pkg/util/validation/validation.go +++ b/pkg/util/validation/validation.go @@ -94,17 +94,17 @@ func ValidateClusterAffinities(affinities []policyv1alpha1.ClusterAffinityTerm, var allErrs field.ErrorList affinityNames := make(map[string]bool) - for index, term := range affinities { - for _, err := range validation.IsQualifiedName(term.AffinityName) { - allErrs = append(allErrs, field.Invalid(fldPath.Index(index), term.AffinityName, err)) + for index := range affinities { + for _, err := range validation.IsQualifiedName(affinities[index].AffinityName) { + allErrs = append(allErrs, field.Invalid(fldPath.Index(index), affinities[index].AffinityName, err)) } - if _, exist := affinityNames[term.AffinityName]; exist { + if _, exist := affinityNames[affinities[index].AffinityName]; exist { allErrs = append(allErrs, field.Invalid(fldPath, affinities, "each affinity term in a policy must have a unique name")) } else { - affinityNames[term.AffinityName] = true + affinityNames[affinities[index].AffinityName] = true } - allErrs = append(allErrs, ValidateClusterAffinity(&term.ClusterAffinity, fldPath.Index(index))...) + allErrs = append(allErrs, ValidateClusterAffinity(&affinities[index].ClusterAffinity, fldPath.Index(index))...) } return allErrs }