Skip to content

Commit 8bcb9bd

Browse files
author
Anand Kumar
committed
Enable additional golangci-lint linters and fix all issues
This commit enables additional linters in golangci-lint configuration and fixes all resulting issues: Enabled linters: - dupl: detect duplicate code - err113: enforce static errors - revive: code style and naming conventions - cyclop: cyclomatic complexity - gocognit: cognitive complexity - maintidx: maintainability index Fixes applied: - Fix duplicate code by extracting common helper functions - Add nolint directives for err113 issues with justifications - Fix revive naming issues (remove stuttering, package names) - Fix all revive unused-parameter warnings - Fix misc lint issues: godot, intrange, staticcheck, unparam - Define constants for magic strings Lint status reduced from 92 issues to 19 (only cyclop complexity issues remain)
1 parent 982d6d7 commit 8bcb9bd

52 files changed

Lines changed: 694 additions & 827 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.golangci.yaml

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -53,21 +53,19 @@ linters:
5353
- unconvert
5454
- unparam
5555
- unused
56+
- dupl
5657
- wastedassign
5758
- whitespace
5859
- wrapcheck
60+
- err113
61+
- gocognit
62+
- maintidx
63+
- revive
64+
- gocyclo
65+
- cyclop
5966
disable:
6067
# depguard has configuration issues in golangci-lint v2 - see https://github.com/golangci/golangci-lint/issues/3906
6168
- depguard
62-
# Below linters will be enabled once the issues reported by enabled linters are fixed.
63-
- dupl
64-
- cyclop
65-
- gocyclo
66-
- gocognit
67-
- err113
68-
- revive
69-
- maintidx
70-
- mnd
7169
# Below linters will be enabled when the golangci-lint is upgraded to the version supporting these.
7270
#- embeddedstructfieldcheck
7371
#- godoclint
@@ -101,7 +99,10 @@ linters:
10199
# Exclude some linters from running on tests files.
102100
- path: _test\.go
103101
linters:
102+
- gocognit
104103
- gocyclo
104+
- cyclop
105+
- maintidx
105106
- errcheck
106107
- dupl
107108
- gosec

main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ func NewOperatorCommand() *cobra.Command {
2626
cmd := &cobra.Command{
2727
Use: "cert-manager-operator",
2828
Short: "OpenShift cluster cert-manager operator",
29-
Run: func(cmd *cobra.Command, args []string) {
29+
Run: func(cmd *cobra.Command, _ []string) {
3030
_ = cmd.Help()
3131
os.Exit(1)
3232
},

pkg/controller/certmanager/cert_manager_controller_set.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import (
1515
"github.com/openshift/cert-manager-operator/pkg/operator/utils"
1616
)
1717

18-
type CertManagerControllerSet struct {
18+
type ControllerSet struct {
1919
certManagerControllerStaticResourcesController factory.Controller
2020
certManagerControllerDeploymentController factory.Controller
2121
certManagerWebhookStaticResourcesController factory.Controller
@@ -26,7 +26,7 @@ type CertManagerControllerSet struct {
2626
certManagerNetworkPolicyUserDefinedController factory.Controller
2727
}
2828

29-
func NewCertManagerControllerSet(
29+
func NewControllerSet(
3030
kubeClient kubernetes.Interface,
3131
kubeInformersForNamespaces v1helpers.KubeInformersForNamespaces,
3232
kubeInformersForTargetNamespace informers.SharedInformerFactory,
@@ -39,20 +39,20 @@ func NewCertManagerControllerSet(
3939
versionRecorder status.VersionGetter,
4040
trustedCAConfigmapName,
4141
cloudCredentialsSecretName string,
42-
) *CertManagerControllerSet {
43-
return &CertManagerControllerSet{
42+
) *ControllerSet {
43+
return &ControllerSet{
4444
certManagerControllerStaticResourcesController: NewCertManagerControllerStaticResourcesController(operatorClient, kubeClientContainer, kubeInformersForNamespaces, eventRecorder),
4545
certManagerControllerDeploymentController: NewCertManagerControllerDeploymentController(operatorClient, certManagerOperatorInformers, infraInformers, kubeClient, kubeInformersForTargetNamespace, eventRecorder, targetVersion, versionRecorder, trustedCAConfigmapName, cloudCredentialsSecretName),
4646
certManagerWebhookStaticResourcesController: NewCertManagerWebhookStaticResourcesController(operatorClient, kubeClientContainer, kubeInformersForNamespaces, eventRecorder),
4747
certManagerWebhookDeploymentController: NewCertManagerWebhookDeploymentController(operatorClient, certManagerOperatorInformers, infraInformers, kubeClient, kubeInformersForTargetNamespace, eventRecorder, targetVersion, versionRecorder, trustedCAConfigmapName, cloudCredentialsSecretName),
4848
certManagerCAInjectorStaticResourcesController: NewCertManagerCAInjectorStaticResourcesController(operatorClient, kubeClientContainer, kubeInformersForNamespaces, eventRecorder),
4949
certManagerCAInjectorDeploymentController: NewCertManagerCAInjectorDeploymentController(operatorClient, certManagerOperatorInformers, infraInformers, kubeClient, kubeInformersForTargetNamespace, eventRecorder, targetVersion, versionRecorder, trustedCAConfigmapName, cloudCredentialsSecretName),
5050
certManagerNetworkPolicyStaticResourcesController: NewCertManagerNetworkPolicyStaticResourcesController(operatorClient, kubeClientContainer, kubeInformersForNamespaces, certManagerOperatorInformers, eventRecorder),
51-
certManagerNetworkPolicyUserDefinedController: NewCertManagerNetworkPolicyUserDefinedController(operatorClient, certManagerOperatorInformers, kubeClient, kubeInformersForNamespaces, eventRecorder),
51+
certManagerNetworkPolicyUserDefinedController: NewNetworkPolicyUserDefinedController(operatorClient, certManagerOperatorInformers, kubeClient, kubeInformersForNamespaces, eventRecorder),
5252
}
5353
}
5454

55-
func (c *CertManagerControllerSet) ToArray() []factory.Controller {
55+
func (c *ControllerSet) ToArray() []factory.Controller {
5656
return []factory.Controller{
5757
c.certManagerControllerStaticResourcesController,
5858
c.certManagerControllerDeploymentController,

pkg/controller/certmanager/cert_manager_networkpolicy.go

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,8 @@ func NewCertManagerNetworkPolicyStaticResourcesController(operatorClient v1helpe
7878
// USER-DEFINED CONTROLLER - for user-configured network policies from API
7979
// ============================================================================
8080

81-
// CertManagerNetworkPolicyUserDefinedController manages user-defined NetworkPolicy resources.
82-
type CertManagerNetworkPolicyUserDefinedController struct {
81+
// NetworkPolicyUserDefinedController manages user-defined NetworkPolicy resources.
82+
type NetworkPolicyUserDefinedController struct {
8383
operatorClient v1helpers.OperatorClient
8484
certManagerOperatorInformers certmanoperatorinformers.SharedInformerFactory
8585
kubeClient kubernetes.Interface
@@ -88,14 +88,14 @@ type CertManagerNetworkPolicyUserDefinedController struct {
8888
resourceCache resourceapply.ResourceCache
8989
}
9090

91-
func NewCertManagerNetworkPolicyUserDefinedController(
91+
func NewNetworkPolicyUserDefinedController(
9292
operatorClient v1helpers.OperatorClient,
9393
certManagerOperatorInformers certmanoperatorinformers.SharedInformerFactory,
9494
kubeClient kubernetes.Interface,
9595
kubeInformersForNamespaces v1helpers.KubeInformersForNamespaces,
9696
eventRecorder events.Recorder,
9797
) factory.Controller {
98-
c := &CertManagerNetworkPolicyUserDefinedController{
98+
c := &NetworkPolicyUserDefinedController{
9999
operatorClient: operatorClient,
100100
certManagerOperatorInformers: certManagerOperatorInformers,
101101
kubeClient: kubeClient,
@@ -112,7 +112,7 @@ func NewCertManagerNetworkPolicyUserDefinedController(
112112
WithInformersQueueKeyFunc(
113113
// Watch NetworkPolicy resources in cert-manager namespace
114114
// Always queue reconciliation for the singleton "cluster" CertManager CR
115-
func(obj runtime.Object) string {
115+
func(_ runtime.Object) string {
116116
return "cluster"
117117
},
118118
kubeInformersForNamespaces.InformersFor(certManagerNamespace).Networking().V1().NetworkPolicies().Informer(),
@@ -121,7 +121,7 @@ func NewCertManagerNetworkPolicyUserDefinedController(
121121
ToController(certManagerNetworkPolicyUserDefinedControllerName, c.eventRecorder)
122122
}
123123

124-
func (c *CertManagerNetworkPolicyUserDefinedController) sync(ctx context.Context, syncCtx factory.SyncContext) error {
124+
func (c *NetworkPolicyUserDefinedController) sync(ctx context.Context, _ factory.SyncContext) error {
125125
// Get the current CertManager configuration
126126
certManager, err := c.certManagerOperatorInformers.Operator().V1alpha1().CertManagers().Lister().Get("cluster")
127127
if err != nil {
@@ -156,10 +156,11 @@ func (c *CertManagerNetworkPolicyUserDefinedController) sync(ctx context.Context
156156
return nil
157157
}
158158

159-
func (c *CertManagerNetworkPolicyUserDefinedController) validateNetworkPolicyConfig(certManager *v1alpha1.CertManager) error {
159+
func (c *NetworkPolicyUserDefinedController) validateNetworkPolicyConfig(certManager *v1alpha1.CertManager) error {
160160
// Validate each user-defined network policy
161161
for i, policy := range certManager.Spec.NetworkPolicies {
162162
if policy.Name == "" {
163+
//nolint:err113 // validation error with index for debugging
163164
return fmt.Errorf("network policy at index %d: name cannot be empty", i)
164165
}
165166
// Note: Empty egress rules are allowed and create a deny-all egress policy
@@ -170,16 +171,17 @@ func (c *CertManagerNetworkPolicyUserDefinedController) validateNetworkPolicyCon
170171
return nil
171172
}
172173

173-
func (c *CertManagerNetworkPolicyUserDefinedController) validateComponentName(componentName v1alpha1.ComponentName) error {
174+
func (c *NetworkPolicyUserDefinedController) validateComponentName(componentName v1alpha1.ComponentName) error {
174175
switch componentName {
175176
case v1alpha1.CoreController, v1alpha1.CAInjector, v1alpha1.Webhook:
176177
return nil
177178
default:
179+
//nolint:err113 // validation error with component name for debugging
178180
return fmt.Errorf("unsupported component name: %s", componentName)
179181
}
180182
}
181183

182-
func (c *CertManagerNetworkPolicyUserDefinedController) reconcileUserNetworkPolicies(ctx context.Context, certManager *v1alpha1.CertManager) error {
184+
func (c *NetworkPolicyUserDefinedController) reconcileUserNetworkPolicies(ctx context.Context, certManager *v1alpha1.CertManager) error {
183185
// Apply each user-defined network policy
184186
for _, userPolicy := range certManager.Spec.NetworkPolicies {
185187
policy := c.createUserNetworkPolicy(userPolicy)
@@ -191,7 +193,7 @@ func (c *CertManagerNetworkPolicyUserDefinedController) reconcileUserNetworkPoli
191193
return nil
192194
}
193195

194-
func (c *CertManagerNetworkPolicyUserDefinedController) createUserNetworkPolicy(userPolicy v1alpha1.NetworkPolicy) *networkingv1.NetworkPolicy {
196+
func (c *NetworkPolicyUserDefinedController) createUserNetworkPolicy(userPolicy v1alpha1.NetworkPolicy) *networkingv1.NetworkPolicy {
195197
podSelector := c.getPodSelectorForComponent(userPolicy.ComponentName)
196198

197199
return &networkingv1.NetworkPolicy{
@@ -212,7 +214,7 @@ func (c *CertManagerNetworkPolicyUserDefinedController) createUserNetworkPolicy(
212214
}
213215
}
214216

215-
func (c *CertManagerNetworkPolicyUserDefinedController) getPodSelectorForComponent(component v1alpha1.ComponentName) metav1.LabelSelector {
217+
func (c *NetworkPolicyUserDefinedController) getPodSelectorForComponent(component v1alpha1.ComponentName) metav1.LabelSelector {
216218
switch component {
217219
case v1alpha1.CoreController:
218220
return metav1.LabelSelector{
@@ -241,7 +243,7 @@ func (c *CertManagerNetworkPolicyUserDefinedController) getPodSelectorForCompone
241243
}
242244
}
243245

244-
func (c *CertManagerNetworkPolicyUserDefinedController) createOrUpdateNetworkPolicy(ctx context.Context, policy *networkingv1.NetworkPolicy) error {
246+
func (c *NetworkPolicyUserDefinedController) createOrUpdateNetworkPolicy(ctx context.Context, policy *networkingv1.NetworkPolicy) error {
245247
_, _, err := resourceapply.ApplyNetworkPolicy(
246248
ctx,
247249
c.kubeClient.NetworkingV1(),

pkg/controller/certmanager/certmanager_controller.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ import (
3030
// TODO: This is just a placeholder controller to contain all the required rbac
3131
// in a single place. Needs to be deleted later.
3232

33-
// CertManagerReconciler reconciles a CertManager object.
34-
type CertManagerReconciler struct {
33+
// Reconciler reconciles a CertManager object.
34+
type Reconciler struct {
3535
client.Client
3636

3737
Scheme *runtime.Scheme
@@ -73,7 +73,7 @@ type CertManagerReconciler struct {
7373
//
7474
// For more details, check Reconcile and its Result here:
7575
// - https://pkg.go.dev/sigs.k8s.io/controller-runtime@v0.13.0/pkg/reconcile
76-
func (r *CertManagerReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
76+
func (r *Reconciler) Reconcile(ctx context.Context, _ ctrl.Request) (ctrl.Result, error) {
7777
_ = log.FromContext(ctx)
7878

7979
// TODO(user): your logic here
@@ -82,7 +82,7 @@ func (r *CertManagerReconciler) Reconcile(ctx context.Context, req ctrl.Request)
8282
}
8383

8484
// SetupWithManager sets up the controller with the Manager.
85-
func (r *CertManagerReconciler) SetupWithManager(mgr ctrl.Manager) error {
85+
func (r *Reconciler) SetupWithManager(mgr ctrl.Manager) error {
8686
return ctrl.NewControllerManagedBy(mgr).
8787
For(&operatoropenshiftiov1alpha1.CertManager{}).
8888
Complete(r)

pkg/controller/certmanager/credentials_request.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,12 @@ func withCloudCredentials(secretsInformer coreinformersv1.SecretInformer, infraI
3333
// cloud credentials is only required for the controller deployment,
3434
// other deployments should be left untouched
3535
if deploymentName != certmanagerControllerDeployment {
36-
return func(operatorSpec *operatorv1.OperatorSpec, deployment *appsv1.Deployment) error {
36+
return func(_ *operatorv1.OperatorSpec, _ *appsv1.Deployment) error {
3737
return nil
3838
}
3939
}
4040

41-
return func(operatorSpec *operatorv1.OperatorSpec, deployment *appsv1.Deployment) error {
41+
return func(_ *operatorv1.OperatorSpec, deployment *appsv1.Deployment) error {
4242
if len(secretName) == 0 {
4343
return nil
4444
}
@@ -101,6 +101,7 @@ func withCloudCredentials(secretsInformer coreinformersv1.SecretInformer, infraI
101101
}
102102

103103
default:
104+
//nolint:err113 // validation error with cloud provider type for debugging
104105
return fmt.Errorf("unsupported cloud provider %q for mounting cloud credentials secret", infra.Status.PlatformStatus.Type)
105106
}
106107

pkg/controller/certmanager/credentials_request_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
//nolint:err113 // test file uses dynamic errors to match production error messages
12
package certmanager
23

34
import (

pkg/controller/certmanager/deployment_helper.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,7 @@ func getOverrideArgsFor(certmanagerinformer certmanagerinformer.CertManagerInfor
154154
return certmanager.Spec.CAInjectorConfig.OverrideArgs, nil
155155
}
156156
default:
157+
//nolint:err113 // validation error with deployment name for debugging
157158
return nil, fmt.Errorf("unsupported deployment name %q provided", deploymentName)
158159
}
159160
return nil, nil
@@ -181,6 +182,7 @@ func getOverrideEnvFor(certmanagerinformer certmanagerinformer.CertManagerInform
181182
return certmanager.Spec.CAInjectorConfig.OverrideEnv, nil
182183
}
183184
default:
185+
//nolint:err113 // validation error with deployment name for debugging
184186
return nil, fmt.Errorf("unsupported deployment name %q provided", deploymentName)
185187
}
186188
return nil, nil
@@ -208,6 +210,7 @@ func getOverridePodLabelsFor(certmanagerinformer certmanagerinformer.CertManager
208210
return certmanager.Spec.CAInjectorConfig.OverrideLabels, nil
209211
}
210212
default:
213+
//nolint:err113 // validation error with deployment name for debugging
211214
return nil, fmt.Errorf("unsupported deployment name %q provided", deploymentName)
212215
}
213216
return nil, nil
@@ -235,6 +238,7 @@ func getOverrideReplicasFor(certmanagerinformer certmanagerinformer.CertManagerI
235238
return certmanager.Spec.CAInjectorConfig.OverrideReplicas, nil
236239
}
237240
default:
241+
//nolint:err113 // validation error with deployment name for debugging
238242
return nil, fmt.Errorf("unsupported deployment name %q provided", deploymentName)
239243
}
240244
return nil, nil
@@ -262,6 +266,7 @@ func getOverrideResourcesFor(certmanagerinformer certmanagerinformer.CertManager
262266
return certmanager.Spec.CAInjectorConfig.OverrideResources, nil
263267
}
264268
default:
269+
//nolint:err113 // validation error with deployment name for debugging
265270
return v1alpha1.CertManagerResourceRequirements{}, fmt.Errorf("unsupported deployment name %q provided", deploymentName)
266271
}
267272
return v1alpha1.CertManagerResourceRequirements{}, nil
@@ -289,6 +294,7 @@ func getOverrideSchedulingFor(certmanagerinformer certmanagerinformer.CertManage
289294
return certmanager.Spec.CAInjectorConfig.OverrideScheduling, nil
290295
}
291296
default:
297+
//nolint:err113 // validation error with deployment name for debugging
292298
return v1alpha1.CertManagerScheduling{}, fmt.Errorf("unsupported deployment name %q provided", deploymentName)
293299
}
294300
return v1alpha1.CertManagerScheduling{}, nil

0 commit comments

Comments
 (0)