summaryrefslogtreecommitdiff
path: root/.golangci.yml
blob: e8b2a55d3f514ea039c843a5e791af7c776d0cbe (plain)
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
linters-settings:
  errcheck:
    exclude-functions:
      - fmt.*
      - (go.uber.org/zap/zapcore.ObjectEncoder).AddObject
      - (go.uber.org/zap/zapcore.ObjectEncoder).AddArray
  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/caddyserver/caddy/v2/cmd) # ensure that this is always at the top and always has a line break.
      - prefix(github.com/caddyserver/caddy) # Custom section: groups all imports with the specified Prefix.
    # Skip generated files.
    # Default: true
    skip-generated: true
    # Enable custom order of sections.
    # If `true`, make the section order the same as the order of `sections`.
    # Default: false
    custom-order: true
  exhaustive:
    ignore-enum-types: reflect.Kind|svc.Cmd

linters:
  disable-all: true
  enable:
    - asasalint
    - asciicheck
    - bidichk
    - bodyclose
    - decorder
    - dogsled
    - dupl
    - dupword
    - durationcheck
    - errcheck
    - errname
    - exhaustive
    - gci
    - gofmt
    - goimports
    - gofumpt
    - gosec
    - gosimple
    - govet
    - ineffassign
    - importas
    - misspell
    - prealloc
    - promlinter
    - sloglint
    - sqlclosecheck
    - staticcheck
    - tenv
    - testableexamples
    - testifylint
    - tparallel
    - typecheck
    - unconvert
    - unused
    - wastedassign
    - whitespace
    - zerologlint
  # these are implicitly disabled:
  # - containedctx
  # - contextcheck
  # - cyclop
  # - depguard
  # - errchkjson
  # - errorlint
  # - exhaustruct
  # - execinquery
  # - exhaustruct
  # - forbidigo
  # - forcetypeassert
  # - funlen
  # - ginkgolinter
  # - gocheckcompilerdirectives
  # - gochecknoglobals
  # - gochecknoinits
  # - gochecksumtype
  # - gocognit
  # - goconst
  # - gocritic
  # - gocyclo
  # - godot
  # - godox
  # - goerr113
  # - goheader
  # - gomnd
  # - gomoddirectives
  # - gomodguard
  # - goprintffuncname
  # - gosmopolitan
  # - grouper
  # - inamedparam
  # - interfacebloat
  # - ireturn
  # - lll
  # - loggercheck
  # - maintidx
  # - makezero
  # - mirror
  # - musttag
  # - nakedret
  # - nestif
  # - nilerr
  # - nilnil
  # - nlreturn
  # - noctx
  # - nolintlint
  # - nonamedreturns
  # - nosprintfhostport
  # - paralleltest
  # - perfsprint
  # - predeclared
  # - protogetter
  # - reassign
  # - revive
  # - rowserrcheck
  # - stylecheck
  # - tagalign
  # - tagliatelle
  # - testpackage
  # - thelper
  # - unparam
  # - usestdlibvars
  # - varnamelen
  # - wrapcheck
  # - wsl

run:
  # default concurrency is a available CPU number.
  # concurrency: 4 # explicitly omit this value to fully utilize available resources.
  timeout: 5m
  issues-exit-code: 1
  tests: false

# output configuration options
output:
  formats:
    - format: 'colored-line-number'
  print-issued-lines: true
  print-linter-name: true

issues:
  exclude-rules:
    - text: 'G115' # TODO: Either we should fix the issues or nuke the linter if it's bad
      linters:
        - gosec
    # we aren't calling unknown URL
    - text: 'G107' # G107: Url provided to HTTP request as taint input
      linters:
        - gosec
    # as a web server that's expected to handle any template, this is totally in the hands of the user.
    - text: 'G203' # G203: Use of unescaped data in HTML templates
      linters:
        - gosec
    # we're shelling out to known commands, not relying on user-defined input.
    - text: 'G204' # G204: Audit use of command execution
      linters:
        - gosec
    # the choice of weakrand is deliberate, hence the named import "weakrand"
    - path: modules/caddyhttp/reverseproxy/selectionpolicies.go
      text: 'G404' # G404: Insecure random number source (rand)
      linters:
        - gosec
    - path: modules/caddyhttp/reverseproxy/streaming.go
      text: 'G404' # G404: Insecure random number source (rand)
      linters:
        - gosec
    - path: modules/logging/filters.go
      linters:
        - dupl
    - path: _test\.go
      linters:
        - errcheck