-
Notifications
You must be signed in to change notification settings - Fork 2
/
.golangci.yml
141 lines (131 loc) · 3.57 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
linters-settings:
govet:
check-shadowing: true
gosec:
excludes:
- G115 # Annoying and have a lot of false-positive results.
gocyclo:
min-complexity: 15
maligned:
suggest-new: true
dupl:
threshold: 120
goconst:
min-len: 2
min-occurrences: 3
misspell:
locale: US
lll:
line-length: 140
goimports:
local-prefixes: github.com/go-faster/
gocritic:
enabled-tags:
- diagnostic
- experimental
- opinionated
- performance
- style
disabled-checks:
# Original code is fine.
- emptyStringTest
# https://github.com/go-critic/go-critic/issues/1245
- typeUnparen
- hugeParam
- rangeValCopy
- exitAfterDefer
- whyNoLint
- singleCaseSwitch
- commentedOutCode
- appendAssign
- unnecessaryBlock
- redundantSprint
- ptrToRefParam
- typeDefFirst
linters:
disable-all: true
enable:
- dogsled
- errcheck
- goconst
- gocritic
- gofmt
- goimports
- revive
- gosec
- govet
- ineffassign
- misspell
- nakedret
- typecheck
- unconvert
- unparam
- whitespace
# Disable until https://github.com/dominikh/go-tools/issues/1270 fix be released.
# - staticcheck
# - gosimple
# - unused
# - stylecheck
# Do not enable:
# - wsl (too opinionated about newlines)
# - godox (todos are OK)
# - bodyclose (false positives on helper functions)
# - prealloc (not worth it in scope of this project)
# - maligned (same as prealloc)
# - funlen (gocyclo is enough)
# - gochecknoglobals (we know when it is ok to use globals)
# - gochecknoinits (we know when it is ok to use inits)
# - dupl (too opinionated)
issues:
exclude-use-default: false
exclude-rules:
# Disable linters that are annoying in tests.
- path: _test\.go
linters:
- gocyclo
- errcheck
- dupl
- gosec
- funlen
- goconst
- gocognit
- scopelint
- lll
- path: _test\.go
text: "structtag: struct field tag .* bad syntax for struct tag pair"
# Ignore shadowing of err.
- linters: [govet]
text: 'declaration of "(err|ctx|log|c)"'
# Ignore linters in main packages.
- path: main\.go
linters: [goconst, funlen, gocognit, gocyclo]
- text: "exported: exported .+ should have comment.*or be unexported"
linters: [revive]
# Annoying and useless.
- linters: [revive, golint]
text: "unused-parameter"
- path: encode\.go
text: 'shadow: declaration of "tail" shadows declaration'
source: "var tail string"
# Disable some linters for translated C code.
- path: (apic|writerc|emitterc|parserc|scannerc|readerc|yamlh|yamlprivateh)\.go
linters: [whitespace, deadcode, varcheck, ineffassign, unparam]
- path: (apic|writerc|emitterc|parserc|scannerc|readerc|yamlh|yamlprivateh)\.go
linters: [revive]
text: "(var-naming: don't use underscores|increment-decrement:|indent-error-flow:|empty-block:)"
# More precise matching:
- path: apic\.go
linters: [gocritic]
text: "commentFormatting"
- path: emitterc\.go
linters: [gocritic]
text: "(elseIf|ifElseChain)"
- path: parserc\.go
linters: [govet, gocritic]
text: "(shadow|ifElseChain)"
- path: scannerc\.go
linters: [gocritic]
text: "(elseIf|ifElseChain|boolExprSimplify|commentFormatting|appendCombine)"
- path: readerc\.go
linters: [gocritic]
text: "(ifElseChain|paramTypeCombine)"