-
Notifications
You must be signed in to change notification settings - Fork 13
/
.golangci.yml
148 lines (144 loc) · 3.79 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
run:
build-tags:
- e2e
# Do not treat these as gospel, adjust as appropriate
linters-settings:
govet:
check-shadowing: false
golint:
min-confidence: 0
gocyclo:
min-complexity: 15
maligned:
suggest-new: true
depguard:
rules:
main:
deny:
- pkg: log
- pkg: github.com/davecgh/go-spew
- pkg: github.com/cenkalti/backof[f]
desc: use github.com/cenkalti/backoff/v4 instead
- pkg: gotest.tools/assert
desc: use gotest.tools/v3/assert instead
- pkg: gotest.tools/assert/cmp
desc: use gotest.tools/v3/assert/cmp instead
- pkg: gotest.tools/env
desc: use gotest.tools/v3/env instead
- pkg: gotest.tools/fs
desc: use gotest.tools/v3/fs instead
- pkg: gotest.tools/golden
desc: use gotest.tools/v3/golden instead
- pkg: gotest.tools/icmd
desc: use gotest.tools/v3/icmd instead
- pkg: gotest.tools/poll
desc: use gotest.tools/v3/poll instead
- pkg: gotest.tools/skip
desc: use gotest.tools/v3/skip instead
dupl:
threshold: 100
goconst:
min-len: 6
min-occurrences: 8
lll:
line-length: 120
funlen:
lines: 80
goimports:
local-prefixes: github.com/circleci/ex-service-template
nakedret:
max-func-lines: 0
issues:
# The default exclude list seems rather aggresive, opt-in when needed instead
exclude-use-default: false
exclude-rules:
# Duplicated errcheck checks
- linters: [gosec]
text: G104
# Ignore aliasing in tests
- linters: [gosec]
text: G601
path: _test\.go
# Non-secure URLs are okay in tests
- linters: [gosec]
text: G107
path: _test\.go
# Duplicated errcheck checks
- linters: [revive]
text: 'package-comments: should have a package comment'
# Nil pointers will fail tests anyway
- linters: [staticcheck]
text: SA5011
path: _test\.go
# Duplicated errcheck checks
- linters: [staticcheck]
text: SA5001
# Duplicated function naming check
- linters: [stylecheck]
text: ST1003
# We don't require comments on everything
- linters: [golint]
text: should have( a package)? comment
# very long lines are ok if they're URLs
- linters: [lll]
source: https?://
# very long lines are ok if they're in http response message fields
- linters: [ lll ]
source: '"message":'
# very long lines are ok if they're in CLI config
- linters: [ lll ]
source: 'env:"'
# Ignore errcheck on deferred Close
- linters: [errcheck]
source: ^\s*defer .*\.Close(.*)$
# Ignore long tests
- linters: [funlen]
text: ^Function 'Test.*
# Ignore fixture setup
- linters: [funlen]
text: ^Function 'runServices.*
# We don't require package docs
- linters: [stylecheck]
text: ST1000
# Unparam is allowed in tests
- linters: [unparam]
path: _test\.go
- linters: [gosec]
path: rootcerts.go
# We are not that bothered about undocumented structs
- linters: [revive]
text: 'exported:'
# I'd rather keep all assignments to ctx, actually
- linters: [ineffassign]
text: 'ineffectual assignment to ctx'
# Duplicate of above
- linters: [staticcheck]
text: 'SA4006: this value of `ctx` is never used'
- linters: [gocyclo]
text: func `TestE2E.*
linters:
disable-all: true
enable:
- bodyclose
- depguard
- errcheck
- funlen
- goconst
- gocyclo
- gofmt
- goimports
- gosec
- gosimple
- govet
- ineffassign
- lll
- misspell
- nakedret
- prealloc
- revive
- staticcheck
- stylecheck
- typecheck
- unconvert
- unparam
- unused