This repository has been archived by the owner on Aug 12, 2024. It is now read-only.
forked from gravitational/teleport
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.golangci.yml
189 lines (185 loc) · 6.33 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
issues:
exclude-dirs:
- (^|/)node_modules/
- ^api/gen/
- ^docs/
- ^gen/
- ^rfd/
- ^web/
exclude-dirs-use-default: false
exclude-rules:
- linters:
- gosimple
text: "S1002: should omit comparison to bool constant"
- linters:
- revive
text: "exported: exported const"
# TODO(hugoShaka): Remove once https://github.com/dominikh/go-tools/issues/1294 is fixed
- linters:
- unused
path: 'integrations/operator/controllers/resources/(.+)_controller_test\.go'
# TODO(codingllama): Remove once we move to grpc.NewClient.
- linters: [staticcheck]
text: "grpc.Dial is deprecated"
- linters: [staticcheck]
text: "grpc.DialContext is deprecated"
# Deprecated gRPC dial options. Related to grpc.NewClient.
- path: (client/client.go|client/proxy/client_test.go) # api/
linters: [staticcheck]
# grpc.FailOnNonTempDialError
# grpc.WithReturnConnectionError
text: "this DialOption is not supported by NewClient"
- path: lib/kube/grpc/grpc_test.go
linters: [staticcheck]
text: "grpc.WithBlock is deprecated"
- path: lib/observability/tracing/client.go
linters: [staticcheck]
text: "grpc.WithBlock is deprecated"
- path: integrations/lib/config.go
linters: [staticcheck]
text: "grpc.WithReturnConnectionError is deprecated"
- path: lib/service/service_test.go
linters: [staticcheck]
# grpc.WithReturnConnectionError
# grpc.FailOnNonTempDialError
text: "this DialOption is not supported by NewClient"
- path: integration/client_test.go
linters: [staticcheck]
text: "grpc.WithReturnConnectionError is deprecated"
- path: integration/integration_test.go
linters: [staticcheck]
text: "grpc.WithBlock is deprecated"
- path: lib/multiplexer/multiplexer_test.go
linters: [staticcheck]
text: "grpc.WithBlock is deprecated"
- path: provider/provider.go # integrations/terraform
linters: [staticcheck]
text: "grpc.WithReturnConnectionError is deprecated"
exclude-use-default: true
max-same-issues: 0
max-issues-per-linter: 0
linters:
disable-all: true
enable:
- bodyclose
- depguard
- errorlint
- gci
- goimports
- gosimple
- govet
- ineffassign
- misspell
- nolintlint
- revive
- sloglint
- staticcheck
- testifylint
- unconvert
- unused
linters-settings:
depguard:
rules:
main:
deny:
- pkg: io/ioutil
desc: 'use "io" or "os" packages instead'
- pkg: github.com/golang/protobuf
desc: 'use "google.golang.org/protobuf"'
- pkg: github.com/hashicorp/go-uuid
desc: 'use "github.com/google/uuid" instead'
- pkg: github.com/pborman/uuid
desc: 'use "github.com/google/uuid" instead'
- pkg: github.com/siddontang/go-log/log
desc: 'use "github.com/sirupsen/logrus" instead'
- pkg: github.com/siddontang/go/log
desc: 'use "github.com/sirupsen/logrus" instead'
- pkg: github.com/tj/assert
desc: 'use "github.com/stretchr/testify/assert" instead'
- pkg: go.uber.org/atomic
desc: 'use "sync/atomic" instead'
- pkg: golang.design
desc: 'experimental project, not to be confused with official Go packages'
- pkg: golang.org/x/exp/slices
desc: 'use "slices" instead'
# Prevent logrus from being imported by api. Once everything in teleport has been converted
# to use log/slog this should be moved into the main block above.
logrus:
files:
- '**/api/**'
deny:
- pkg: github.com/sirupsen/logrus
desc: 'use "log/slog" instead'
# Prevent importing internal packages in client tools or packages containing
# common interfaces consumed by them that are known to bloat binaries or break builds
# because they only support a single platform.
client-tools:
files:
# Tests can do anything
- "!$test"
- '**/tool/tbot/**'
- '**/lib/tbot/**'
- '**/tool/tctl/**'
- '**/tool/tsh/**'
- '**/lib/client/**'
- '**/lib/services/**'
- '**/lib/service/servicecfg/**'
- '**/lib/reversetunnelclient/**'
- '**/lib/auth/authclient/**'
allow:
- github.com/gravitational/teleport/lib/cloud/imds
deny:
- pkg: github.com/gravitational/teleport/lib/auth$
desc: 'lib/auth should not be imported to prevent increasing binary size, prefer lib/auth/authclient instead'
- pkg: github.com/gravitational/teleport/lib/cloud
desc: 'lib/cloud should not be imported to prevent increasing binary size'
- pkg: github.com/gravitational/teleport/lib/srv$
desc: 'lib/srv prevents client tools from build on non-linux platforms'
- pkg: github.com/gravitational/teleport/lib/web$
desc: 'lib/web should not be imported to prevent increasing binary size'
list-mode: lax
errorlint:
comparison: true
asserts: true
errorf: true
gci:
sections:
- standard # Standard section: captures all standard packages.
- default # Default section: contains all imports that could not be matched to another section type.
- prefix(github.com/gravitational/teleport) # Custom section: groups all imports with the specified Prefix.
- prefix(github.com/gravitational/teleport/integrations/terraform,github.com/gravitational/teleport/integrations/event-handler)
skip-generated: true # Skip generated files.
custom-order: true # Required for "sections" to take effect.
misspell:
locale: US
nolintlint:
allow-unused: true # Enabled because of conditional builds / build tags.
require-explanation: true
require-specific: true
revive:
rules:
- name: unused-parameter
disabled: true
sloglint:
context: all
key-naming-case: snake
static-msg: true
testifylint:
disable-all: true
enable:
- bool-compare
- compares
- empty
- error-is-as
- error-nil
- expected-actual
- float-compare
- len
- suite-extra-assert-call
- suite-thelper
output:
uniq-by-line: false
run:
go: '1.22'
build-tags: []
timeout: 15m