forked from kubernetes-sigs/cluster-api-provider-aws
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.golangci.yml
261 lines (259 loc) · 8.7 KB
/
.golangci.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
linters:
enable-all: true
disable:
- bidichk
- contextcheck
- cyclop
- dupl
- durationcheck
- errname
- errorlint
- exhaustive
- exhaustivestruct
- exhaustruct
- forcetypeassert
- forbidigo
- funlen
- gochecknoglobals
- gochecknoinits
- gocognit
- godox
- goerr113
- gofumpt
- golint
- gomnd
- gomoddirectives
- gomodguard
- interfacer
- ireturn
- lll
- makezero
- maligned
- musttag
- nestif
- nilnil
- nlreturn
- nonamedreturns
- nosnakecase
- paralleltest
- promlinter
- scopelint
- sqlclosecheck
- tagliatelle
- tenv
- testpackage
- tparallel
- varnamelen
- wastedassign
- wrapcheck
- wsl
- deadcode
- ifshort
- structcheck
- varcheck
- interfacebloat
linters-settings:
# Restrict revive to exported.
revive:
# see https://github.com/mgechev/revive#available-rules for details.
ignore-generated-header: true
severity: warning
rules:
- name: exported
severity: warning
gci:
sections:
- standard
- default
- prefix(sigs.k8s.io/cluster-api)
ginkgolinter:
# Suppress the wrong length assertion warning.
suppress-len-assertion: true
# Suppress the wrong nil assertion warning.
suppress-nil-assertion: false
# Suppress the wrong error assertion warning.
suppress-err-assertion: true
gosec:
excludes:
- G307 # Deferring unsafe method "Close" on type "\*os.File"
- G108 # Profiling endpoint is automatically exposed on /debug/pprof
importas:
no-unaliased: false
alias:
- pkg: k8s.io/api/core/v1
alias: corev1
- pkg: k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1
alias: apiextensionsv1
- pkg: k8s.io/apimachinery/pkg/apis/meta/v1
alias: metav1
- pkg: k8s.io/apimachinery/pkg/api/errors
alias: apierrors
- pkg: k8s.io/apimachinery/pkg/util/errors
alias: kerrors
- pkg: sigs.k8s.io/controller-runtime/pkg/conversion
alias: ctrlconversion
- pkg: sigs.k8s.io/cluster-api/util/conversion
alias: utilconversion
- pkg: k8s.io/apimachinery/pkg/conversion
alias: apiconversion
- pkg: sigs.k8s.io/cluster-api-provider-aws/v2/api/v1beta2
alias: infrav1
- pkg: sigs.k8s.io/cluster-api-provider-aws/v2/api/v1beta1
alias: infrav1beta1
- pkg: sigs.k8s.io/cluster-api-provider-aws/v2/exp/api/v1beta1
alias: expinfrav1beta1
- pkg: sigs.k8s.io/cluster-api-provider-aws/v2/exp/api/v1beta2
alias: expinfrav1
- pkg: k8s.io/client-go/kubernetes/scheme
alias: cgscheme
- pkg: k8s.io/client-go/tools/record
alias: cgrecord
- pkg: sigs.k8s.io/cluster-api-provider-aws/v2/bootstrap/eks/api/v1beta1
alias: eksbootstrapv1beta1
- pkg: sigs.k8s.io/cluster-api-provider-aws/v2/bootstrap/eks/api/v1beta2
alias: eksbootstrapv1
- pkg: sigs.k8s.io/cluster-api-provider-aws/v2/controlplane/eks/api/v1beta1
alias: ekscontrolplanev1beta1
- pkg: sigs.k8s.io/cluster-api-provider-aws/v2/controlplane/eks/api/v1beta2
alias: ekscontrolplanev1
- pkg: "sigs.k8s.io/cluster-api-provider-aws/v2/bootstrap/eks/controllers"
alias: eksbootstrapcontrollers
- pkg: "sigs.k8s.io/cluster-api-provider-aws/v2/controlplane/eks/controllers"
alias: ekscontrolplanecontrollers
- pkg: "sigs.k8s.io/cluster-api-provider-aws/v2/exp/controllers"
alias: expcontrollers
- pkg: "k8s.io/apimachinery/pkg/runtime"
alias: runtime
- pkg: "k8s.io/apimachinery/pkg/runtime/serializer"
alias: runtimeserializer
- pkg: "k8s.io/apimachinery/pkg/runtime/serializer/yaml"
alias: yamlserializer
- pkg: "sigs.k8s.io/cluster-api/api/v1beta1"
alias: clusterv1
- pkg: "sigs.k8s.io/cluster-api/util/defaulting"
alias: utildefaulting
- pkg: sigs.k8s.io/controller-runtime
alias: ctrl
- pkg: "k8s.io/apimachinery/pkg/api/errors"
alias: apierrors
- pkg: "sigs.k8s.io/controller-runtime/pkg/log"
alias: logf
- pkg: "github.com/google/gofuzz"
alias: fuzz
- pkg: "sigs.k8s.io/cluster-api-provider-aws/v2/pkg/cloud/logs"
alias: awslogs
- pkg: "sigs.k8s.io/cluster-api-provider-aws/v2/pkg/cloud/metrics"
alias: awsmetrics
- pkg: "sigs.k8s.io/cluster-api/errors"
alias: capierrors
- pkg: "github.com/aws/aws-sdk-go/aws/client"
alias: awsclient
- pkg: "github.com/aws/amazon-vpc-cni-k8s/pkg/apis/crd/v1alpha1"
alias: amazoncni
- pkg: "github.com/aws/aws-sdk-go/service/resourcegroupstaggingapi"
alias: rgapi
- pkg: "crypto/rand"
alias: crand
- pkg: "sigs.k8s.io/controller-runtime/pkg/client"
alias: crclient
- pkg: "k8s.io/apimachinery/pkg/types"
alias: apimachinerytypes
- pkg: "sigs.k8s.io/cluster-api/exp/api/v1beta1"
alias: expclusterv1
staticcheck:
go: "1.19"
stylecheck:
go: "1.19"
issues:
max-same-issues: 0
max-issues-per-linter: 0
# We are disabling default golangci exclusions because we want to help reviewers to focus on reviewing the most relevant
# changes in PRs and avoid nitpicking.
exclude-use-default: false
# List of regexps of issue texts to exclude, empty list by default.
exclude:
- (Expect directory permissions to be 0750 or less|Expect file permissions to be 0600 or less)
- "exported: exported (const|function|method|type|var) (.+) should have comment or be unexported"
- "exported: (func|type) name will be used as (.+) by other packages, and that stutters; consider calling this (.+)"
- (G104|G107|G404|G505|ST1000)
- "G108: Profiling endpoint is automatically exposed on /debug/pprof"
# Exclude noctx error for calling http.Get directly.
# See https://pkg.go.dev/github.com/sonatard/noctx#readme-how-to-fix for reasons it breaks and ways to fix it.
# This exclusion should be removed if the decision is made to fix the error.
- "net/http.Get must not be called"
exclude-rules:
# Exclude revive's exported for certain packages and code, e.g. tests and fake.
- linters:
- revive
text: exported (method|function|type|const) (.+) should have comment or be unexported
source: (func|type).*Fake.*
- linters:
- revive
text: exported (method|function|type|const) (.+) should have comment or be unexported
path: fake_\.go
- linters:
- revive
text: exported (method|function|type|const) (.+) should have comment or be unexported
path: .*test/(providers|framework|e2e).*.go
- linters:
- errcheck
text: Error return value is not checked
path: _test\.go
- linters:
- errcheck
text: Error return value of (.+) is not checked
path: _test\.go
- linters:
- gosec
text: "G108: Profiling endpoint is automatically exposed on /debug/pprof"
- linters:
- godot
text: "Comment should end in a period"
path: "(.*)/(v1beta1|v1beta2)/(.*)types.go"
- linters:
- errcheck
text: Error return value of .((os\.)?std(out|err)\..*|.*Close|.*Flush|os\.Remove(All)?|.*print(f|ln)?|os\.(Un)?Setenv). is not checked
# With Go 1.16, the new embed directive can be used with an un-named import,
# revive (previously, golint) only allows these to be imported in a main.go, which wouldn't work for us.
# This directive allows the embed package to be imported with an underscore everywhere.
- linters:
- revive
source: _ "embed"
# This directive allows the variable in defaults.go files to have underscore
- linters:
- revive
text: "var-naming: don't use underscores in Go names; func (.+) should be (.+)"
path: .*/defaults.go
# Disable unparam "always receives" which might not be really
# useful when building libraries.
- linters:
- unparam
text: always receives
# Dot imports for gomega or ginkgo are allowed
# within test files.
- path: _test\.go
text: should not use dot imports
- path: (framework|e2e)/.*.go
text: should not use dot imports
- path: _test\.go
text: cyclomatic complexity
- linters:
- unparam
text: (.+) - (`t`|`g`) is unused
- path: _test\.go
text: cyclomatic complexity
# Append should be able to assign to a different var/slice.
- linters:
- gocritic
text: "appendAssign: append result not assigned to the same slice"
run:
timeout: 10m
build-tags:
- tools
- e2e
skip-files:
- "zz_generated.*\\.go$"
- ".*conversion.*\\.go$"
skip-dirs:
- third_party
allow-parallel-runners: true