|
| 1 | +# See https://golangci-lint.run/usage/configuration/ |
| 2 | +# Over time we should try tightening some of these. |
| 3 | + |
| 4 | +linters-settings: |
| 5 | + goimports: |
| 6 | + local-prefixes: coder.com,cdr.dev,go.coder.com,github.com/cdr |
| 7 | + gomodguard: |
| 8 | + blocked: |
| 9 | + modules: |
| 10 | + - k8s.io/kubernetes: |
| 11 | + recommendations: |
| 12 | + - k8s.io/api |
| 13 | + - k8s.io/apimachinery |
| 14 | + - k8s.io/client-go |
| 15 | + - k8s.io/metrics |
| 16 | + - k8s.io/utils |
| 17 | + reason: >- |
| 18 | + Upstream does not support using k8s.io/kubernetes as a library, |
| 19 | + which can cause issues when upgrading. For more information, see |
| 20 | + https://github.com/kubernetes/kubernetes/issues/90358#issuecomment-617859364 |
| 21 | + versions: |
| 22 | + # Enforce that the we follow the Kubernetes version support strategy |
| 23 | + - k8s.io/api: |
| 24 | + version: "< 0.19 || > 0.20" |
| 25 | + reason: >- |
| 26 | + Coder commits to supporting the newest patch release of the |
| 27 | + two prior minor releases and current release. For details, see |
| 28 | + https://www.notion.so/Kubernetes-version-support-strategy-82ecd5c9761e411e9dab61a7a1484418 |
| 29 | + - k8s.io/apimachinery: |
| 30 | + version: "< 0.19 || > 0.20" |
| 31 | + reason: >- |
| 32 | + Coder commits to supporting the newest patch release of the |
| 33 | + two prior minor releases and current release. For details, see |
| 34 | + https://www.notion.so/Kubernetes-version-support-strategy-82ecd5c9761e411e9dab61a7a1484418 |
| 35 | + - k8s.io/client-go: |
| 36 | + version: "< 0.19 || > 0.20" |
| 37 | + reason: >- |
| 38 | + Coder commits to supporting the newest patch release of the |
| 39 | + two prior minor releases and current release. For details, see |
| 40 | + https://www.notion.so/Kubernetes-version-support-strategy-82ecd5c9761e411e9dab61a7a1484418 |
| 41 | + - k8s.io/metrics: |
| 42 | + version: "< 0.19 || > 0.20" |
| 43 | + reason: >- |
| 44 | + Coder commits to supporting the newest patch release of the |
| 45 | + two prior minor releases and current release. For details, see |
| 46 | + https://www.notion.so/Kubernetes-version-support-strategy-82ecd5c9761e411e9dab61a7a1484418 |
| 47 | + local_replace_directives: true |
| 48 | + importas: |
| 49 | + # For the most part, these come from come from k8s.io/client-go, |
| 50 | + # particularly clientset.go. Even the official Kubernetes codebase |
| 51 | + # has conflicts, though. |
| 52 | + admissionregistrationv1: k8s.io/client-go/kubernetes/typed/admissionregistration/v1 |
| 53 | + admissionregistrationv1beta1: k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1 |
| 54 | + appsv1: k8s.io/client-go/kubernetes/typed/apps/v1 |
| 55 | + appsv1beta1: k8s.io/client-go/kubernetes/typed/apps/v1beta1 |
| 56 | + appsv1beta2: k8s.io/client-go/kubernetes/typed/apps/v1beta2 |
| 57 | + authenticationv1: k8s.io/client-go/kubernetes/typed/authentication/v1 |
| 58 | + authenticationv1beta1: k8s.io/client-go/kubernetes/typed/authentication/v1beta1 |
| 59 | + authorizationv1: k8s.io/client-go/kubernetes/typed/authorization/v1 |
| 60 | + authorizationv1beta1: k8s.io/client-go/kubernetes/typed/authorization/v1beta1 |
| 61 | + autoscalingv1: k8s.io/client-go/kubernetes/typed/autoscaling/v1 |
| 62 | + autoscalingv2beta1: k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1 |
| 63 | + autoscalingv2beta2: k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2 |
| 64 | + batchv1: k8s.io/client-go/kubernetes/typed/batch/v1 |
| 65 | + batchv1beta1: k8s.io/client-go/kubernetes/typed/batch/v1beta1 |
| 66 | + certificatesv1: k8s.io/client-go/kubernetes/typed/certificates/v1 |
| 67 | + certificatesv1beta1: k8s.io/client-go/kubernetes/typed/certificates/v1beta1 |
| 68 | + coordinationv1: k8s.io/client-go/kubernetes/typed/coordination/v1 |
| 69 | + coordinationv1beta1: k8s.io/client-go/kubernetes/typed/coordination/v1beta1 |
| 70 | + corev1: k8s.io/api/core/v1 |
| 71 | + discovery: k8s.io/client-go/discovery |
| 72 | + discoveryv1: k8s.io/client-go/kubernetes/typed/discovery/v1 |
| 73 | + discoveryv1beta1: k8s.io/client-go/kubernetes/typed/discovery/v1beta1 |
| 74 | + eventsv1: k8s.io/client-go/kubernetes/typed/events/v1 |
| 75 | + eventsv1beta1: k8s.io/client-go/kubernetes/typed/events/v1beta1 |
| 76 | + extensionsv1beta1: k8s.io/client-go/kubernetes/typed/extensions/v1beta1 |
| 77 | + flowcontrol: k8s.io/client-go/util/flowcontrol |
| 78 | + flowcontrolv1alpha1: k8s.io/client-go/kubernetes/typed/flowcontrol/v1alpha1 |
| 79 | + flowcontrolv1beta1: k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta1 |
| 80 | + internalv1alpha1: k8s.io/client-go/kubernetes/typed/apiserverinternal/v1alpha1 |
| 81 | + metav1: k8s.io/apimachinery/pkg/apis/meta/v1 |
| 82 | + networkingv1: k8s.io/client-go/kubernetes/typed/networking/v1 |
| 83 | + networkingv1beta1: k8s.io/client-go/kubernetes/typed/networking/v1beta1 |
| 84 | + nodev1: k8s.io/client-go/kubernetes/typed/node/v1 |
| 85 | + nodev1alpha1: k8s.io/client-go/kubernetes/typed/node/v1alpha1 |
| 86 | + nodev1beta1: k8s.io/client-go/kubernetes/typed/node/v1beta1 |
| 87 | + policyv1: k8s.io/client-go/kubernetes/typed/policy/v1 |
| 88 | + policyv1beta1: k8s.io/client-go/kubernetes/typed/policy/v1beta1 |
| 89 | + rbacv1: k8s.io/client-go/kubernetes/typed/rbac/v1 |
| 90 | + rbacv1alpha1: k8s.io/client-go/kubernetes/typed/rbac/v1alpha1 |
| 91 | + rbacv1beta1: k8s.io/client-go/kubernetes/typed/rbac/v1beta1 |
| 92 | + rest: k8s.io/client-go/rest |
| 93 | + schedulingv1: k8s.io/client-go/kubernetes/typed/scheduling/v1 |
| 94 | + schedulingv1alpha1: k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1 |
| 95 | + schedulingv1beta1: k8s.io/client-go/kubernetes/typed/scheduling/v1beta1 |
| 96 | + storagev1: k8s.io/client-go/kubernetes/typed/storage/v1 |
| 97 | + storagev1alpha1: k8s.io/client-go/kubernetes/typed/storage/v1alpha1 |
| 98 | + storagev1beta1: k8s.io/client-go/kubernetes/typed/storage/v1beta1 |
| 99 | + typedcorev1: k8s.io/client-go/kubernetes/typed/core/v1 |
| 100 | + revive: |
| 101 | + # see https://github.com/mgechev/revive#available-rules for details. |
| 102 | + ignore-generated-header: true |
| 103 | + severity: warning |
| 104 | + rules: |
| 105 | + - name: atomic |
| 106 | + - name: bare-return |
| 107 | + - name: blank-imports |
| 108 | + - name: bool-literal-in-expr |
| 109 | + - name: call-to-gc |
| 110 | + - name: confusing-naming |
| 111 | + - name: confusing-results |
| 112 | + - name: constant-logical-expr |
| 113 | + - name: context-as-argument |
| 114 | + - name: context-keys-type |
| 115 | + - name: deep-exit |
| 116 | + - name: defer |
| 117 | + - name: dot-imports |
| 118 | + - name: duplicated-imports |
| 119 | + - name: early-return |
| 120 | + - name: empty-block |
| 121 | + - name: empty-lines |
| 122 | + - name: error-naming |
| 123 | + - name: error-return |
| 124 | + - name: error-strings |
| 125 | + - name: errorf |
| 126 | + - name: exported |
| 127 | + - name: flag-parameter |
| 128 | + - name: get-return |
| 129 | + - name: identical-branches |
| 130 | + - name: if-return |
| 131 | + - name: import-shadowing |
| 132 | + - name: increment-decrement |
| 133 | + - name: indent-error-flow |
| 134 | + - name: modifies-parameter |
| 135 | + - name: modifies-value-receiver |
| 136 | + - name: package-comments |
| 137 | + - name: range |
| 138 | + - name: range-val-address |
| 139 | + - name: range-val-in-closure |
| 140 | + - name: receiver-naming |
| 141 | + - name: redefines-builtin-id |
| 142 | + - name: string-of-int |
| 143 | + - name: struct-tag |
| 144 | + - name: superfluous-else |
| 145 | + - name: time-naming |
| 146 | + - name: unconditional-recursion |
| 147 | + - name: unexported-naming |
| 148 | + - name: unexported-return |
| 149 | + - name: unhandled-error |
| 150 | + - name: unnecessary-stmt |
| 151 | + - name: unreachable-code |
| 152 | + - name: unused-parameter |
| 153 | + - name: unused-receiver |
| 154 | + - name: var-declaration |
| 155 | + - name: var-naming |
| 156 | + - name: waitgroup-by-value |
| 157 | + |
| 158 | +issues: |
| 159 | + exclude-rules: |
| 160 | + - path: _test\.go |
| 161 | + linters: |
| 162 | + # We use assertions rather than explicitly checking errors in tests |
| 163 | + - errcheck |
| 164 | + |
| 165 | + fix: true |
| 166 | + max-issues-per-linter: 0 |
| 167 | + max-same-issues: 0 |
| 168 | + |
| 169 | +run: |
| 170 | + timeout: 5m |
| 171 | + |
| 172 | +# Over time, add more and more linters from |
| 173 | +# https://golangci-lint.run/usage/linters/ as the code improves. |
| 174 | +linters: |
| 175 | + disable-all: true |
| 176 | + enable: |
| 177 | + - bodyclose |
| 178 | + - deadcode |
| 179 | + - dogsled |
| 180 | + - errcheck |
| 181 | + - errorlint |
| 182 | + - exportloopref |
| 183 | + - forcetypeassert |
| 184 | + - gocyclo |
| 185 | + - goimports |
| 186 | + - gomodguard |
| 187 | + - gosec |
| 188 | + - gosimple |
| 189 | + - govet |
| 190 | + - importas |
| 191 | + - ineffassign |
| 192 | + - makezero |
| 193 | + - noctx |
| 194 | + - revive |
| 195 | + - rowserrcheck |
| 196 | + - sqlclosecheck |
| 197 | + - staticcheck |
| 198 | + - structcheck |
| 199 | + - typecheck |
| 200 | + - unconvert |
| 201 | + - unused |
| 202 | + - varcheck |
| 203 | + - wastedassign |
0 commit comments