From 5f6516b0be63a1625ad2dc24434e329908c3cf95 Mon Sep 17 00:00:00 2001 From: mengze zhu Date: Thu, 12 Sep 2024 05:08:48 +0000 Subject: [PATCH] cleanup: upgrade golint version and fix golint errors --- .github/workflows/static.yaml | 2 +- hack/verify-golint.sh | 4 ++-- pkg/blob/blob.go | 2 +- pkg/blob/controllerserver.go | 16 ++++++++-------- pkg/blob/controllerserver_test.go | 6 +++--- pkg/blob/nodeserver.go | 12 ++++++------ pkg/csi-common/utils_test.go | 2 +- test/e2e/dynamic_provisioning_test.go | 4 ++-- test/e2e/suite_test.go | 6 +++--- 9 files changed, 27 insertions(+), 27 deletions(-) diff --git a/.github/workflows/static.yaml b/.github/workflows/static.yaml index 60e9ac030..a6298d6ec 100644 --- a/.github/workflows/static.yaml +++ b/.github/workflows/static.yaml @@ -15,5 +15,5 @@ jobs: - name: Run linter uses: golangci/golangci-lint-action@v3 with: - version: v1.54 + version: v1.60 args: -E=gofmt,unused,ineffassign,revive,misspell,exportloopref,asciicheck,bodyclose,depguard,dogsled,durationcheck,errname,forbidigo -D=staticcheck --timeout=30m0s diff --git a/hack/verify-golint.sh b/hack/verify-golint.sh index b96f4a45b..bf719bc79 100755 --- a/hack/verify-golint.sh +++ b/hack/verify-golint.sh @@ -18,12 +18,12 @@ set -euo pipefail if [[ -z "$(command -v golangci-lint)" ]]; then echo "Cannot find golangci-lint. Installing golangci-lint..." - go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.45.0 + go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.60.0 export PATH=$PATH:$(go env GOPATH)/bin fi echo "Verifying golint" -golangci-lint run --no-config --enable=golint --disable=typecheck --deadline=10m +golangci-lint run --no-config --enable=golint --disable=typecheck --timeout 10m echo "Congratulations! Lint check completed for all Go source files." diff --git a/pkg/blob/blob.go b/pkg/blob/blob.go index 0c308161c..f92fd4a95 100644 --- a/pkg/blob/blob.go +++ b/pkg/blob/blob.go @@ -243,7 +243,7 @@ func NewDriver(options *DriverOptions) *Driver { d.NodeID = options.NodeID var err error - getter := func(key string) (interface{}, error) { return nil, nil } + getter := func(_ string) (interface{}, error) { return nil, nil } if d.accountSearchCache, err = azcache.NewTimedCache(time.Minute, getter, false); err != nil { klog.Fatalf("%v", err) } diff --git a/pkg/blob/controllerserver.go b/pkg/blob/controllerserver.go index e5f0677c0..29007eeeb 100644 --- a/pkg/blob/controllerserver.go +++ b/pkg/blob/controllerserver.go @@ -181,13 +181,13 @@ func (d *Driver) CreateVolume(ctx context.Context, req *csi.CreateVolumeRequest) // only do validations here, used in NodeStageVolume, NodePublishVolume if v != "" { if _, err := strconv.ParseUint(v, 8, 32); err != nil { - return nil, status.Errorf(codes.InvalidArgument, fmt.Sprintf("invalid mountPermissions %s in storage class", v)) + return nil, status.Errorf(codes.InvalidArgument, "invalid mountPermissions %s in storage class", v) } } case useDataPlaneAPIField: useDataPlaneAPI = strings.EqualFold(v, trueValue) default: - return nil, status.Errorf(codes.InvalidArgument, fmt.Sprintf("invalid parameter %q in storage class", k)) + return nil, status.Errorf(codes.InvalidArgument, "invalid parameter %q in storage class", k) } } @@ -198,7 +198,7 @@ func (d *Driver) CreateVolume(ctx context.Context, req *csi.CreateVolumeRequest) } if matchTags && account != "" { - return nil, status.Errorf(codes.InvalidArgument, fmt.Sprintf("matchTags must set as false when storageAccount(%s) is provided", account)) + return nil, status.Errorf(codes.InvalidArgument, "matchTags must set as false when storageAccount(%s) is provided", account) } if subsID != "" && subsID != d.cloud.SubscriptionID { @@ -271,13 +271,13 @@ func (d *Driver) CreateVolume(ctx context.Context, req *csi.CreateVolumeRequest) if IsAzureStackCloud(d.cloud) { accountKind = string(storage.KindStorage) if storageAccountType != "" && storageAccountType != string(storage.SkuNameStandardLRS) && storageAccountType != string(storage.SkuNamePremiumLRS) { - return nil, status.Errorf(codes.InvalidArgument, fmt.Sprintf("Invalid skuName value: %s, as Azure Stack only supports %s and %s Storage Account types.", storageAccountType, storage.SkuNamePremiumLRS, storage.SkuNameStandardLRS)) + return nil, status.Errorf(codes.InvalidArgument, "Invalid skuName value: %s, as Azure Stack only supports %s and %s Storage Account types.", storageAccountType, storage.SkuNamePremiumLRS, storage.SkuNameStandardLRS) } } tags, err := util.ConvertTagsToMap(customTags) if err != nil { - return nil, status.Errorf(codes.InvalidArgument, err.Error()) + return nil, status.Errorf(codes.InvalidArgument, "%v", err) } if strings.TrimSpace(storageEndpointSuffix) == "" { @@ -330,7 +330,7 @@ func (d *Driver) CreateVolume(ctx context.Context, req *csi.CreateVolumeRequest) // search in cache first cache, err := d.accountSearchCache.Get(lockKey, azcache.CacheReadTypeDefault) if err != nil { - return nil, status.Errorf(codes.Internal, err.Error()) + return nil, status.Errorf(codes.Internal, "%v", err) } if cache != nil { accountName = cache.(string) @@ -691,10 +691,10 @@ func isValidVolumeCapabilities(volCaps []*csi.VolumeCapability) error { func parseDays(dayStr string) (int32, error) { days, err := strconv.Atoi(dayStr) if err != nil { - return 0, status.Errorf(codes.InvalidArgument, fmt.Sprintf("invalid %s:%s in storage class", softDeleteBlobsField, dayStr)) + return 0, status.Errorf(codes.InvalidArgument, "invalid %s:%s in storage class", softDeleteBlobsField, dayStr) } if days <= 0 || days > 365 { - return 0, status.Errorf(codes.InvalidArgument, fmt.Sprintf("invalid %s:%s in storage class, should be in range [1, 365]", softDeleteBlobsField, dayStr)) + return 0, status.Errorf(codes.InvalidArgument, "invalid %s:%s in storage class, should be in range [1, 365]", softDeleteBlobsField, dayStr) } return int32(days), nil diff --git a/pkg/blob/controllerserver_test.go b/pkg/blob/controllerserver_test.go index 8a7ec47c0..992f762d1 100644 --- a/pkg/blob/controllerserver_test.go +++ b/pkg/blob/controllerserver_test.go @@ -420,7 +420,7 @@ func TestCreateVolume(t *testing.T) { controllerServiceCapability, } - expectedErr := status.Errorf(codes.InvalidArgument, fmt.Sprintf("invalid parameter %q in storage class", "invalidparameter")) + expectedErr := status.Errorf(codes.InvalidArgument, "invalid parameter %q in storage class", "invalidparameter") _, err := d.CreateVolume(context.Background(), req) if !reflect.DeepEqual(err, expectedErr) { t.Errorf("Unexpected error: %v", err) @@ -442,7 +442,7 @@ func TestCreateVolume(t *testing.T) { controllerServiceCapability, } - expectedErr := status.Errorf(codes.InvalidArgument, fmt.Sprintf("invalid %s %s in storage class", "mountPermissions", "0abc")) + expectedErr := status.Errorf(codes.InvalidArgument, "invalid %s %s in storage class", "mountPermissions", "0abc") _, err := d.CreateVolume(context.Background(), req) if !reflect.DeepEqual(err, expectedErr) { t.Errorf("Unexpected error: %v", err) @@ -579,7 +579,7 @@ func TestCreateVolume(t *testing.T) { controllerServiceCapability, } - expectedErr := status.Errorf(codes.InvalidArgument, fmt.Sprintf("Invalid skuName value: %s, as Azure Stack only supports %s and %s Storage Account types.", "unit-test", storage.SkuNamePremiumLRS, storage.SkuNameStandardLRS)) + expectedErr := status.Errorf(codes.InvalidArgument, "Invalid skuName value: %s, as Azure Stack only supports %s and %s Storage Account types.", "unit-test", storage.SkuNamePremiumLRS, storage.SkuNameStandardLRS) _, err := d.CreateVolume(context.Background(), req) if !reflect.DeepEqual(err, expectedErr) { t.Errorf("Unexpected error: %v", err) diff --git a/pkg/blob/nodeserver.go b/pkg/blob/nodeserver.go index 671c0241d..689acda1b 100644 --- a/pkg/blob/nodeserver.go +++ b/pkg/blob/nodeserver.go @@ -99,7 +99,7 @@ func (d *Driver) NodePublishVolume(ctx context.Context, req *csi.NodePublishVolu if perm := getValueInMap(context, mountPermissionsField); perm != "" { var err error if mountPermissions, err = strconv.ParseUint(perm, 8, 32); err != nil { - return nil, status.Errorf(codes.InvalidArgument, fmt.Sprintf("invalid mountPermissions %s", perm)) + return nil, status.Errorf(codes.InvalidArgument, "invalid mountPermissions %s", perm) } } } @@ -128,7 +128,7 @@ func (d *Driver) NodePublishVolume(ctx context.Context, req *csi.NodePublishVolu klog.Warningf("NodePublishVolume: mock mount on volumeID(%s), this is only for TESTING!!!", volumeID) if err := volumehelper.MakeDir(target, os.FileMode(mountPermissions)); err != nil { klog.Errorf("MakeDir failed on target: %s (%v)", target, err) - return nil, status.Errorf(codes.Internal, err.Error()) + return nil, status.Errorf(codes.Internal, "%v", err) } return &csi.NodePublishVolumeResponse{}, nil } @@ -269,7 +269,7 @@ func (d *Driver) NodeStageVolume(ctx context.Context, req *csi.NodeStageVolumeRe var err error var perm uint64 if perm, err = strconv.ParseUint(v, 8, 32); err != nil { - return nil, status.Errorf(codes.InvalidArgument, fmt.Sprintf("invalid mountPermissions %s", v)) + return nil, status.Errorf(codes.InvalidArgument, "invalid mountPermissions %s", v) } if perm == 0 { performChmodOp = false @@ -291,7 +291,7 @@ func (d *Driver) NodeStageVolume(ctx context.Context, req *csi.NodeStageVolumeRe _, accountName, _, containerName, authEnv, err := d.GetAuthEnv(ctx, volumeID, protocol, attrib, secrets) if err != nil { - return nil, status.Errorf(codes.Internal, err.Error()) + return nil, status.Errorf(codes.Internal, "%v", err) } // replace pv/pvc name namespace metadata in subDir @@ -372,7 +372,7 @@ func (d *Driver) NodeStageVolume(ctx context.Context, req *csi.NodeStageVolumeRe klog.Warningf("NodeStageVolume: mock mount on volumeID(%s), this is only for TESTING!!!", volumeID) if err := volumehelper.MakeDir(targetPath, os.FileMode(mountPermissions)); err != nil { klog.Errorf("MakeDir failed on target: %s (%v)", targetPath, err) - return nil, status.Errorf(codes.Internal, err.Error()) + return nil, status.Errorf(codes.Internal, "%v", err) } return &csi.NodeStageVolumeResponse{}, nil } @@ -484,7 +484,7 @@ func (d *Driver) NodeGetVolumeStats(_ context.Context, req *csi.NodeGetVolumeSta // check if the volume stats is cached cache, err := d.volStatsCache.Get(req.VolumeId, azcache.CacheReadTypeDefault) if err != nil { - return nil, status.Errorf(codes.Internal, err.Error()) + return nil, status.Errorf(codes.Internal, "%v", err) } if cache != nil { resp := cache.(csi.NodeGetVolumeStatsResponse) diff --git a/pkg/csi-common/utils_test.go b/pkg/csi-common/utils_test.go index a347e994b..b3dee7197 100644 --- a/pkg/csi-common/utils_test.go +++ b/pkg/csi-common/utils_test.go @@ -89,7 +89,7 @@ func TestLogGRPC(t *testing.T) { klog.SetOutput(buf) defer klog.SetOutput(io.Discard) - handler := func(ctx context.Context, req interface{}) (interface{}, error) { return nil, nil } + handler := func(_ context.Context, _ interface{}) (interface{}, error) { return nil, nil } info := grpc.UnaryServerInfo{ FullMethod: "fake", } diff --git a/test/e2e/dynamic_provisioning_test.go b/test/e2e/dynamic_provisioning_test.go index 7c02d3a3a..2939e42a5 100644 --- a/test/e2e/dynamic_provisioning_test.go +++ b/test/e2e/dynamic_provisioning_test.go @@ -40,7 +40,7 @@ var _ = ginkgo.Describe("[blob-csi-e2e] Dynamic Provisioning", func() { testDriver driver.PVTestDriver ) - ginkgo.BeforeEach(func(ctx ginkgo.SpecContext) { + ginkgo.BeforeEach(func(_ ginkgo.SpecContext) { checkPodsRestart := testCmd{ command: "sh", args: []string{"test/utils/check_driver_pods_restart.sh"}, @@ -826,7 +826,7 @@ var _ = ginkgo.Describe("[blob-csi-e2e] Dynamic Provisioning", func() { test.Run(ctx, cs, ns) }) - ginkgo.It("[blob.csi.azure.com] verify examples", ginkgo.Label("flaky"), func(ctx ginkgo.SpecContext) { + ginkgo.It("[blob.csi.azure.com] verify examples", ginkgo.Label("flaky"), func(_ ginkgo.SpecContext) { createExampleDeployment := testCmd{ command: "bash", args: []string{"hack/verify-examples.sh"}, diff --git a/test/e2e/suite_test.go b/test/e2e/suite_test.go index 746442e44..f3eff9263 100644 --- a/test/e2e/suite_test.go +++ b/test/e2e/suite_test.go @@ -100,7 +100,7 @@ var _ = ginkgo.SynchronizedBeforeSuite(func(ctx ginkgo.SpecContext) []byte { } execTestCmd([]testCmd{e2eBootstrap, createMetricsSVC}) return nil -}, func(ctx ginkgo.SpecContext, data []byte) { +}, func(_ ginkgo.SpecContext, _ []byte) { // k8s.io/kubernetes/test/e2e/framework requires env KUBECONFIG to be set // it does not fall back to defaults if os.Getenv(kubeconfigEnvVar) == "" { @@ -126,7 +126,7 @@ var _ = ginkgo.SynchronizedBeforeSuite(func(ctx ginkgo.SpecContext) []byte { }() }) -var _ = ginkgo.SynchronizedAfterSuite(func(ctx ginkgo.SpecContext) {}, +var _ = ginkgo.SynchronizedAfterSuite(func(_ ginkgo.SpecContext) {}, func(ctx ginkgo.SpecContext) { blobLog := testCmd{ command: "bash", @@ -175,7 +175,7 @@ func execTestCmd(cmds []testCmd) { cmdSh.Stderr = os.Stderr err := cmdSh.Run() if err != nil { - log.Printf("Failed to run command: %s %s, Error: %s\n", cmd.command, strings.Join(cmd.args, " "), err.Error()) + log.Printf("Failed to run command: %s %s, Error: %v\n", cmd.command, strings.Join(cmd.args, " "), err) if !cmd.ignoreError { gomega.Expect(err).NotTo(gomega.HaveOccurred()) }