.golangci.yml raw
1 version: "2"
2 run:
3 issues-exit-code: 1
4 tests: true
5 linters:
6 default: none
7 enable:
8 - asasalint
9 - bodyclose
10 - depguard
11 - errcheck
12 - errorlint
13 - gocritic
14 - godot
15 - gosec
16 - govet
17 - ineffassign
18 - misspell
19 - perfsprint
20 - revive
21 - staticcheck
22 - testifylint
23 - unconvert
24 - unparam
25 - unused
26 - usestdlibvars
27 - usetesting
28 settings:
29 depguard:
30 rules:
31 auto/sdk:
32 files:
33 - '!internal/global/trace.go'
34 - ~internal/global/trace_test.go
35 deny:
36 - pkg: go.opentelemetry.io/auto/sdk
37 desc: Do not use SDK from automatic instrumentation.
38 non-tests:
39 files:
40 - '!$test'
41 - '!**/*test/*.go'
42 - '!**/internal/matchers/*.go'
43 deny:
44 - pkg: testing
45 - pkg: github.com/stretchr/testify
46 - pkg: crypto/md5
47 - pkg: crypto/sha1
48 - pkg: crypto/**/pkix
49 otel-internal:
50 files:
51 - '**/sdk/*.go'
52 - '**/sdk/**/*.go'
53 - '**/exporters/*.go'
54 - '**/exporters/**/*.go'
55 - '**/schema/*.go'
56 - '**/schema/**/*.go'
57 - '**/metric/*.go'
58 - '**/metric/**/*.go'
59 - '**/bridge/*.go'
60 - '**/bridge/**/*.go'
61 - '**/trace/*.go'
62 - '**/trace/**/*.go'
63 - '**/log/*.go'
64 - '**/log/**/*.go'
65 deny:
66 - pkg: go.opentelemetry.io/otel/internal$
67 desc: Do not use cross-module internal packages.
68 - pkg: go.opentelemetry.io/otel/internal/internaltest
69 desc: Do not use cross-module internal packages.
70 otlp-internal:
71 files:
72 - '!**/exporters/otlp/internal/**/*.go'
73 deny:
74 - pkg: go.opentelemetry.io/otel/exporters/otlp/internal
75 desc: Do not use cross-module internal packages.
76 otlpmetric-internal:
77 files:
78 - '!**/exporters/otlp/otlpmetric/internal/*.go'
79 - '!**/exporters/otlp/otlpmetric/internal/**/*.go'
80 deny:
81 - pkg: go.opentelemetry.io/otel/exporters/otlp/otlpmetric/internal
82 desc: Do not use cross-module internal packages.
83 otlptrace-internal:
84 files:
85 - '!**/exporters/otlp/otlptrace/*.go'
86 - '!**/exporters/otlp/otlptrace/internal/**.go'
87 deny:
88 - pkg: go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal
89 desc: Do not use cross-module internal packages.
90 gocritic:
91 disabled-checks:
92 - appendAssign
93 - commentedOutCode
94 - dupArg
95 - hugeParam
96 - importShadow
97 - preferDecodeRune
98 - rangeValCopy
99 - unnamedResult
100 - whyNoLint
101 enable-all: true
102 godot:
103 exclude:
104 # Exclude links.
105 - '^ *\[[^]]+\]:'
106 # Exclude sentence fragments for lists.
107 - ^[ ]*[-•]
108 # Exclude sentences prefixing a list.
109 - :$
110 misspell:
111 locale: US
112 ignore-rules:
113 - cancelled
114 perfsprint:
115 int-conversion: true
116 err-error: true
117 errorf: true
118 sprintf1: true
119 strconcat: true
120 revive:
121 confidence: 0.01
122 rules:
123 - name: blank-imports
124 - name: bool-literal-in-expr
125 - name: constant-logical-expr
126 - name: context-as-argument
127 arguments:
128 - allowTypesBefore: '*testing.T'
129 disabled: true
130 - name: context-keys-type
131 - name: deep-exit
132 - name: defer
133 arguments:
134 - - call-chain
135 - loop
136 - name: dot-imports
137 - name: duplicated-imports
138 - name: early-return
139 arguments:
140 - preserveScope
141 - name: empty-block
142 - name: empty-lines
143 - name: error-naming
144 - name: error-return
145 - name: error-strings
146 - name: errorf
147 - name: exported
148 arguments:
149 - sayRepetitiveInsteadOfStutters
150 - name: flag-parameter
151 - name: identical-branches
152 - name: if-return
153 - name: import-shadowing
154 - name: increment-decrement
155 - name: indent-error-flow
156 arguments:
157 - preserveScope
158 - name: package-comments
159 - name: range
160 - name: range-val-in-closure
161 - name: range-val-address
162 - name: redefines-builtin-id
163 - name: string-format
164 arguments:
165 - - panic
166 - /^[^\n]*$/
167 - must not contain line breaks
168 - name: struct-tag
169 - name: superfluous-else
170 arguments:
171 - preserveScope
172 - name: time-equal
173 - name: unconditional-recursion
174 - name: unexported-return
175 - name: unhandled-error
176 arguments:
177 - fmt.Fprint
178 - fmt.Fprintf
179 - fmt.Fprintln
180 - fmt.Print
181 - fmt.Printf
182 - fmt.Println
183 - name: unused-parameter
184 - name: unused-receiver
185 - name: unnecessary-stmt
186 - name: use-any
187 - name: useless-break
188 - name: var-declaration
189 - name: var-naming
190 arguments:
191 - ["ID"] # AllowList
192 - ["Otel", "Aws", "Gcp"] # DenyList
193 - name: waitgroup-by-value
194 testifylint:
195 enable-all: true
196 disable:
197 - float-compare
198 - go-require
199 - require-error
200 exclusions:
201 generated: lax
202 presets:
203 - common-false-positives
204 - legacy
205 - std-error-handling
206 rules:
207 - linters:
208 - revive
209 path: schema/v.*/types/.*
210 text: avoid meaningless package names
211 # TODO: Having appropriate comments for exported objects helps development,
212 # even for objects in internal packages. Appropriate comments for all
213 # exported objects should be added and this exclusion removed.
214 - linters:
215 - revive
216 path: .*internal/.*
217 text: exported (method|function|type|const) (.+) should have comment or be unexported
218 # Yes, they are, but it's okay in a test.
219 - linters:
220 - revive
221 path: _test\.go
222 text: exported func.*returns unexported type.*which can be annoying to use
223 # Example test functions should be treated like main.
224 - linters:
225 - revive
226 path: example.*_test\.go
227 text: calls to (.+) only in main[(][)] or init[(][)] functions
228 # It's okay to not run gosec and perfsprint in a test.
229 - linters:
230 - gosec
231 - perfsprint
232 path: _test\.go
233 # Ignoring gosec G404: Use of weak random number generator (math/rand instead of crypto/rand)
234 # as we commonly use it in tests and examples.
235 - linters:
236 - gosec
237 text: 'G404:'
238 # Ignoring gosec G402: TLS MinVersion too low
239 # as the https://pkg.go.dev/crypto/tls#Config handles MinVersion default well.
240 - linters:
241 - gosec
242 text: 'G402: TLS MinVersion too low.'
243 issues:
244 max-issues-per-linter: 0
245 max-same-issues: 0
246 formatters:
247 enable:
248 - gofumpt
249 - goimports
250 - golines
251 settings:
252 gofumpt:
253 extra-rules: true
254 goimports:
255 local-prefixes:
256 - go.opentelemetry.io/otel
257 golines:
258 max-len: 120
259 exclusions:
260 generated: lax
261