Log in
.golangci.yml 556 lines · 13.0 KB · yaml Blame
1
version: "2"
2
run:
3
  build-tags:
4
    - integration
5
linters:
6
  default: all
7
  disable:
8
    - contextcheck
9
    - depguard
10
    - err113
11
    - exhaustruct
12
    - gochecknoglobals
13
    - gochecknoinits
14
    - gocyclo
15
    - godox
16
    - inamedparam
17
    - interfacebloat
18
    - ireturn
19
    - mnd
20
    - musttag
21
    - nakedret
22
    - nonamedreturns
23
    - paralleltest
24
    - perfsprint
25
    - recvcheck
26
    - revive
27
    - varnamelen
28
    - wrapcheck
29
    - wsl
30
    - wsl_v5
31
    - testifylint
32
    - embeddedstructfieldcheck
33
    - noinlineerr
34
    - funcorder
35
    - noctx
36
37
38
  settings:
39
    cyclop:
40
      max-complexity: 13
41
      package-average: 0
42
    dogsled:
43
      max-blank-identifiers: 2
44
    dupl:
45
      threshold: 100
46
    errcheck:
47
      check-type-assertions: false
48
      check-blank: false
49
      exclude-functions:
50
        - fmt:.*
51
        - io/ioutil:^Read.*
52
    errorlint:
53
      errorf: true
54
      asserts: true
55
      comparison: true
56
    exhaustive:
57
      default-signifies-exhaustive: true
58
    forbidigo:
59
      forbid:
60
        - pattern: ^print.*$
61
        - pattern: fmt\.Print.*
62
    funlen:
63
      lines: 69
64
      statements: 75
65
    gocognit:
66
      min-complexity: 15
67
    goconst:
68
      min-len: 3
69
      min-occurrences: 3
70
    gocritic:
71
      disabled-checks:
72
        - commentedOutCode
73
        - typeSwitchVar
74
        - whyNoLint
75
        - yodaStyleExpr
76
      enabled-tags:
77
        - diagnostic
78
        - experimental
79
        - opinionated
80
        - performance
81
        - style
82
      settings:
83
        captLocal:
84
          paramsOnly: true
85
        elseif:
86
          skipBalanced: true
87
        hugeParam:
88
          sizeThreshold: 80
89
        nestingReduce:
90
          bodyWidth: 5
91
        rangeExprCopy:
92
          sizeThreshold: 512
93
          skipTestFuncs: true
94
        rangeValCopy:
95
          sizeThreshold: 32
96
          skipTestFuncs: true
97
        ruleguard:
98
          rules: ""
99
        truncateCmp:
100
          skipArchDependent: true
101
        underef:
102
          skipRecvDeref: true
103
        unnamedResult:
104
          checkExported: true
105
    gomoddirectives:
106
      replace-allow-list:
107
        - launchpad.net/gocheck
108
      replace-local: false
109
      exclude-forbidden: false
110
      retract-allow-no-explanation: false
111
    gosec:
112
      includes:
113
        - G401
114
        - G306
115
        - G101
116
      excludes:
117
        - G204
118
      config:
119
        G101:
120
          entropy_threshold: "80.0"
121
          ignore_entropy: false
122
          pattern: (?i)example
123
          per_char_threshold: "3.0"
124
          truncate: "32"
125
        G306: "0600"
126
    govet:
127
      disable:
128
        - shadow
129
      enable-all: true
130
      settings:
131
        printf:
132
          funcs:
133
            - (github.com/golangci/golangci-lint/pkg/logutils.Log).Infof
134
            - (github.com/golangci/golangci-lint/pkg/logutils.Log).Warnf
135
            - (github.com/golangci/golangci-lint/pkg/logutils.Log).Errorf
136
            - (github.com/golangci/golangci-lint/pkg/logutils.Log).Fatalf
137
    lll:
138
      line-length: 128
139
      tab-width: 1
140
    makezero:
141
      always: false
142
    misspell:
143
      locale: US
144
    nakedret:
145
      max-func-lines: 30
146
    nestif:
147
      min-complexity: 6
148
    nolintlint:
149
      require-specific: true
150
      allow-unused: false
151
    prealloc:
152
      simple: true
153
      range-loops: true
154
      for-loops: false
155
    predeclared:
156
      qualified-name: false
157
    promlinter:
158
      strict: false
159
    revive:
160
      enable-all-rules: true
161
      rules:
162
        - name: add-constant
163
          arguments:
164
            - allowFloats: 0.0,0.,1.0,1.,2.0,2.
165
              allowInts: 0,1,2
166
              allowStrs: '""'
167
              maxLitCount: "3"
168
          severity: warning
169
          disabled: true
170
        - name: argument-limit
171
          arguments:
172
            - 4
173
          severity: warning
174
          disabled: true
175
        - name: atomic
176
          severity: warning
177
          disabled: false
178
        - name: banned-characters
179
          arguments:
180
            - Ξ©
181
            - Ξ£
182
            - Οƒ
183
            - "7"
184
          severity: warning
185
          disabled: false
186
        - name: bare-return
187
          severity: warning
188
          disabled: true
189
        - name: blank-imports
190
          severity: warning
191
          disabled: false
192
        - name: bool-literal-in-expr
193
          severity: warning
194
          disabled: false
195
        - name: call-to-gc
196
          severity: warning
197
          disabled: false
198
        - name: cognitive-complexity
199
          arguments:
200
            - 7
201
          severity: warning
202
          disabled: true
203
        - name: confusing-naming
204
          severity: warning
205
          disabled: true
206
        - name: confusing-results
207
          severity: warning
208
          disabled: false
209
        - name: constant-logical-expr
210
          severity: warning
211
          disabled: false
212
        - name: context-as-argument
213
          severity: warning
214
          disabled: false
215
        - name: context-keys-type
216
          severity: warning
217
          disabled: true
218
        - name: cyclomatic
219
          arguments:
220
            - 3
221
          severity: warning
222
          disabled: true
223
        - name: datarace
224
          severity: warning
225
          disabled: false
226
        - name: deep-exit
227
          severity: warning
228
          disabled: true
229
        - name: defer
230
          arguments:
231
            - - call-chain
232
              - loop
233
          severity: warning
234
          disabled: false
235
        - name: dot-imports
236
          severity: warning
237
          disabled: false
238
        - name: duplicated-imports
239
          severity: warning
240
          disabled: false
241
        - name: early-return
242
          severity: warning
243
          disabled: true
244
        - name: empty-block
245
          severity: warning
246
          disabled: false
247
        - name: empty-lines
248
          severity: warning
249
          disabled: false
250
        - name: error-naming
251
          severity: warning
252
          disabled: false
253
        - name: error-return
254
          severity: warning
255
          disabled: false
256
        - name: error-strings
257
          severity: warning
258
          disabled: false
259
        - name: errorf
260
          severity: warning
261
          disabled: false
262
        - name: exported
263
          arguments:
264
            - checkPrivateReceivers
265
            - sayRepetitiveInsteadOfStutters
266
          severity: warning
267
          disabled: true
268
        - name: file-header
269
          arguments:
270
            - This is the text that must appear at the top of source files.
271
          severity: warning
272
          disabled: true
273
        - name: flag-parameter
274
          severity: warning
275
          disabled: true
276
        - name: function-result-limit
277
          arguments:
278
            - 2
279
          severity: warning
280
          disabled: true
281
        - name: function-length
282
          arguments:
283
            - 10
284
            - 0
285
          severity: warning
286
          disabled: true
287
        - name: get-return
288
          severity: warning
289
          disabled: true
290
        - name: identical-branches
291
          severity: warning
292
          disabled: false
293
        - name: if-return
294
          severity: warning
295
          disabled: true
296
        - name: increment-decrement
297
          severity: warning
298
          disabled: false
299
        - name: indent-error-flow
300
          severity: warning
301
          disabled: false
302
        - name: import-shadowing
303
          severity: warning
304
          disabled: false
305
        - name: line-length-limit
306
          arguments:
307
            - 80
308
          severity: warning
309
          disabled: true
310
        - name: max-public-structs
311
          arguments:
312
            - 3
313
          severity: warning
314
          disabled: false
315
        - name: modifies-parameter
316
          severity: warning
317
          disabled: false
318
        - name: modifies-value-receiver
319
          severity: warning
320
          disabled: false
321
        - name: nested-structs
322
          severity: warning
323
          disabled: true
324
        - name: optimize-operands-order
325
          severity: warning
326
          disabled: false
327
        - name: package-comments
328
          severity: warning
329
          disabled: true
330
        - name: range
331
          severity: warning
332
          disabled: false
333
        - name: range-val-in-closure
334
          severity: warning
335
          disabled: false
336
        - name: range-val-address
337
          severity: warning
338
          disabled: false
339
        - name: receiver-naming
340
          severity: warning
341
          disabled: false
342
        - name: redefines-builtin-id
343
          severity: warning
344
          disabled: false
345
        - name: string-of-int
346
          severity: warning
347
          disabled: false
348
        - name: string-format
349
          arguments:
350
            - - core.WriteError[1].Message
351
              - /^([^A-Z]|$)/
352
              - must not start with a capital letter
353
            - - fmt.Errorf[0]
354
              - /(^|[^\.!?])$/
355
              - must not end in punctuation
356
            - - panic
357
              - /^[^\n]*$/
358
              - must not contain line breaks
359
          severity: warning
360
          disabled: false
361
        - name: struct-tag
362
          severity: warning
363
          disabled: true
364
        - name: superfluous-else
365
          severity: warning
366
          disabled: false
367
        - name: time-equal
368
          severity: warning
369
          disabled: false
370
        - name: time-naming
371
          severity: warning
372
          disabled: false
373
        - name: var-naming
374
          arguments:
375
            - - ID
376
            - - VM
377
          severity: warning
378
          disabled: false
379
        - name: var-declaration
380
          severity: warning
381
          disabled: false
382
        - name: unconditional-recursion
383
          severity: warning
384
          disabled: false
385
        - name: unexported-naming
386
          severity: warning
387
          disabled: true
388
        - name: unexported-return
389
          severity: warning
390
          disabled: true
391
        - name: unhandled-error
392
          arguments:
393
            - fmt.Printf
394
          severity: warning
395
          disabled: true
396
        - name: unnecessary-stmt
397
          severity: warning
398
          disabled: true
399
        - name: unreachable-code
400
          severity: warning
401
          disabled: false
402
        - name: unused-parameter
403
          severity: warning
404
          disabled: true
405
        - name: unused-receiver
406
          severity: warning
407
          disabled: true
408
        - name: useless-break
409
          severity: warning
410
          disabled: false
411
        - name: waitgroup-by-value
412
          severity: warning
413
          disabled: false
414
    staticcheck:
415
      checks:
416
        - 'all'
417
        - '-ST1000'
418
        - '-ST1003'
419
        - '-ST1016'
420
        - '-ST1017'
421
        - '-ST1020'
422
        - '-ST1021'
423
        - '-ST1022'
424
        - '-QF1008'
425
    tagalign:
426
      align: false
427
      sort: true
428
      order:
429
        - yaml
430
        - yml
431
        - json
432
        - toml
433
        - mapstructure
434
        - binding
435
        - validate
436
    tagliatelle:
437
      case:
438
        rules:
439
          json: snake
440
          yaml: snake
441
        use-field-name: false
442
    testifylint:
443
      enable-all: true
444
      disable:
445
        - require-error
446
    testpackage:
447
      skip-regexp: (export|internal)_test\.go
448
    thelper:
449
      test:
450
        first: true
451
        name: true
452
        begin: true
453
      benchmark:
454
        first: true
455
        name: true
456
        begin: true
457
      tb:
458
        first: true
459
        name: true
460
        begin: true
461
    unparam:
462
      check-exported: false
463
    whitespace:
464
      multi-if: false
465
      multi-func: false
466
    wrapcheck:
467
      ignore-sigs:
468
        - .Errorf(
469
        - errors.New(
470
        - errors.Unwrap(
471
        - .Wrap(
472
        - .Wrapf(
473
        - .WithMessage(
474
        - .WithMessagef(
475
        - .WithStack(
476
      ignore-sig-regexps:
477
        - \.New.*Error\(
478
      ignore-package-globs:
479
        - context
480
        - encoding/*
481
        - github.com/pkg/*
482
        - github.com/helmwave/helmwave/*
483
    wsl:
484
      strict-append: true
485
      allow-assign-and-call: true
486
      allow-assign-and-anything: false
487
      allow-multiline-assign: true
488
      force-case-trailing-whitespace: 0
489
      allow-trailing-comment: false
490
      allow-separated-leading-comment: false
491
      allow-cuddle-declarations: false
492
      force-err-cuddling: false
493
      force-short-decl-cuddling: false
494
  exclusions:
495
    generated: lax
496
    rules:
497
      - linters:
498
          - lll
499
          - wrapcheck
500
        path: pkg/version/
501
      - linters:
502
          - lll
503
        path: config\.go
504
      - linters:
505
          - containedctx
506
          - dupl
507
          - dupword
508
          - forcetypeassert
509
          - funlen
510
          - goconst
511
          - godot
512
          - lll
513
          - revive
514
          - wrapcheck
515
        path: _test\.go
516
      - linters:
517
          - dupword
518
          - forbidigo
519
        path: cmd/
520
      - linters:
521
          - cyclop
522
        path: (.+)_test\.go
523
    paths:
524
      - third_party$
525
      - builtin$
526
      - examples$
527
issues:
528
  max-issues-per-linter: 0
529
  max-same-issues: 0
530
  new: false
531
severity:
532
  default: error
533
  rules:
534
    - linters:
535
        - forcetypeassert
536
        - funlen
537
        - paralleltest
538
      severity: warning
539
    - linters:
540
        - godox
541
      severity: notice
542
formatters:
543
  enable:
544
    - gofmt
545
    - gofumpt
546
  settings:
547
    gofmt:
548
      simplify: true
549
    gofumpt:
550
      extra-rules: false
551
  exclusions:
552
    generated: lax
553
    paths:
554
      - third_party$
555
      - builtin$
556
      - examples$