Skip to content

Commit 17f1b9c

Browse files
committed
[lint] upgrade config to support golangcilint 2.6 and fix issues
Change-Id: Ia0f21374d5d942f451ee1a6a5cb9cb8de0013021
1 parent 7d77230 commit 17f1b9c

10 files changed

Lines changed: 178 additions & 52 deletions

File tree

.golangci.yaml

Lines changed: 167 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
###golangci-lint:version: 2.1
1+
###golangci-lint:version: 2.6
22
version: "2"
3-
43
run:
54
modules-download-mode: readonly
65

@@ -11,39 +10,66 @@ issues:
1110
linters:
1211
default: all
1312
disable:
13+
- funcorder
1414
- cyclop
1515
- depguard
1616
- errname
17-
- funlen
18-
- gocognit
19-
- gocyclo
2017
- godox
2118
- goheader
2219
- govet
2320
- importas
2421
- intrange
2522
- ireturn
2623
- misspell
27-
- mnd
2824
- nlreturn
2925
- nonamedreturns
3026
- tagalign
3127
- tagliatelle
3228
- varnamelen
3329
- whitespace
30+
- zerologlint
31+
- sloglint
32+
- noinlineerr # because that's a stupid rule
33+
- wsl # replaced by wsl_v5
3434
settings:
3535
lll:
3636
line-length: 120
3737
tab-width: 2
38+
funlen:
39+
lines: 0
40+
ignore-comments: true
41+
statements: 50
42+
gocognit:
43+
min-complexity: 20
44+
gocyclo:
45+
min-complexity: 10
46+
errcheck:
47+
exclude-functions:
48+
- (*bytes.Buffer).Write
49+
- (*bytes.Buffer).WriteByte
50+
- (*bytes.Buffer).WriteRune
51+
- (*bytes.Buffer).WriteString
52+
- (*strings.Builder).Write
53+
- (*strings.Builder).WriteByte
54+
- (*strings.Builder).WriteRune
55+
- (*strings.Builder).WriteString
56+
- (*os.File).Close
3857
exhaustruct:
3958
exclude:
4059
- net/http\.Transport
4160
- net/http\.Server
4261
- net/http\.Client
62+
- net/url\.URL
4363
- crypto/tls\.Config
64+
- testing/fstest\.MapFile
65+
forbidigo:
66+
forbid:
67+
- pattern: (?i)(^|\.)print(f|ln)?$
68+
gomoddirectives:
69+
replace-local: true
4470
gosec:
4571
config:
46-
G306: "0666" # enable to create files with permissions 0666 (before umask) or lesser
72+
G306: "0666"
4773
mnd:
4874
ignored-functions:
4975
- os\.(OpenFile|WriteFile|Chmod),p?flag\..*
@@ -52,63 +78,155 @@ linters:
5278
confidence: 0.8
5379
enable-all-rules: true
5480
rules:
55-
- name: function-length
81+
# ========== ACTIVE REVIVE RULES ==========
82+
- name: argument-limit
5683
arguments:
57-
- 50
58-
- 0
84+
- 6
5985
severity: warning
6086
disabled: false
87+
- name: atomic
88+
disabled: false
89+
- name: blank-imports
90+
disabled: false
91+
- name: bool-literal-in-expr
92+
disabled: false
93+
- name: call-to-gc
94+
disabled: false
95+
- name: confusing-naming
96+
disabled: false
97+
- name: confusing-results
98+
disabled: false
99+
- name: constant-logical-expr
100+
disabled: false
101+
- name: context-keys-type
102+
disabled: false
103+
- name: deep-exit
104+
disabled: false
105+
- name: defer
106+
disabled: false
107+
- name: dot-imports
108+
disabled: false
109+
- name: duplicated-imports
110+
disabled: false
111+
- name: early-return
112+
disabled: false
113+
- name: empty-block
114+
disabled: false
115+
- name: error-naming
116+
disabled: false
117+
- name: error-return
118+
disabled: false
119+
- name: error-strings
120+
disabled: false
121+
- name: errorf
122+
disabled: false
61123
- name: function-result-limit
62124
arguments:
63125
- 3
64126
severity: warning
65127
disabled: false
66-
- name: cognitive-complexity
67-
arguments:
68-
- 20
69-
severity: warning
128+
- name: get-return
70129
disabled: false
71-
- name: cyclomatic
72-
arguments:
73-
- 10
74-
severity: warning
130+
- name: identical-branches
75131
disabled: false
76-
- name: argument-limit
77-
arguments:
78-
- 6
79-
severity: warning
132+
- name: if-return
80133
disabled: false
81-
- name: unhandled-error
82-
arguments:
83-
- bytes\.Buffer\.Write.*
84-
- strings\.Builder\.Write.*
134+
- name: imports-blocklist
135+
disabled: false
136+
- name: increment-decrement
137+
disabled: false
138+
- name: indent-error-flow
139+
disabled: false
140+
- name: modifies-parameter
141+
disabled: false
142+
- name: modifies-value-receiver
143+
disabled: false
144+
- name: nested-structs
145+
disabled: false
146+
- name: optimize-operands-order
85147
disabled: false
86-
- name: comment-spacings
148+
- name: range
149+
disabled: false
150+
- name: range-val-address
151+
disabled: false
152+
- name: receiver-naming
153+
disabled: false
154+
- name: string-of-int
155+
disabled: false
156+
- name: superfluous-else
157+
disabled: false
158+
- name: time-equal
159+
disabled: false
160+
- name: time-naming
161+
disabled: false
162+
- name: unexported-naming
163+
disabled: false
164+
- name: unexported-return
165+
disabled: false
166+
- name: unnecessary-stmt
167+
disabled: false
168+
- name: unreachable-code
169+
disabled: false
170+
- name: unused-receiver
171+
disabled: false
172+
- name: use-any
173+
disabled: false
174+
- name: useless-break
175+
disabled: false
176+
- name: var-declaration
177+
disabled: false
178+
- name: var-naming
179+
disabled: false
180+
- name: waitgroup-by-value
181+
disabled: false
182+
183+
# ========== DISABLED - REPLACED BY STANDALONE LINTERS ==========
184+
- name: add-constant # can be replaced by goconst
87185
disabled: true
88-
- name: unchecked-type-assertion
186+
- name: banned-characters # can be replaced by asciicheck
89187
disabled: true
90-
- name: max-public-structs
188+
- name: cognitive-complexity # replaced by gocognit
91189
disabled: true
92-
- name: banned-characters
190+
- name: comment-spacings # can be replaced by whitespace
93191
disabled: true
94-
- name: file-header
192+
- name: context-as-argument # replaced by contextcheck
95193
disabled: true
96-
- name: flag-parameter
194+
- name: cyclomatic # replaced by gocyclo
195+
disabled: true
196+
- name: empty-lines # replaced by wsl
197+
disabled: true
198+
- name: file-header # can be replaced by goheader
199+
disabled: true
200+
- name: function-length # replaced by funlen
201+
disabled: true
202+
- name: import-shadowing # can be replaced by gocritic
203+
disabled: true
204+
- name: line-length-limit # replaced by lll
205+
disabled: true
206+
- name: range-val-in-closure # can be replaced by copyloopvar
97207
disabled: true
98-
- name: struct-tag
208+
- name: redefines-builtin-id # replaced by predeclared
99209
disabled: true
100-
- name: add-constant
210+
- name: string-format # replaced by staticcheck
101211
disabled: true
102-
- name: empty-lines
212+
- name: struct-tag # can be replaced by tagliatelle
103213
disabled: true
104-
- name: range-val-in-closure
214+
- name: unhandled-error # replaced by errcheck
105215
disabled: true
106-
- name: line-length-limit # we use lll linter
216+
- name: unused-parameter # replaced by unparam
107217
disabled: true
218+
219+
# ========== DISABLED - PROJECT SPECIFIC REASONS ==========
108220
- name: exported # overall annoying linter, maybe configure and re-enable later
109221
disabled: true
222+
- name: flag-parameter
223+
disabled: true
224+
- name: max-public-structs
225+
disabled: true
110226
- name: package-comments # interferes with file-level nolint rules
111227
disabled: true
228+
- name: unchecked-type-assertion
229+
disabled: true
112230
testifylint:
113231
disable:
114232
- require-error
@@ -120,12 +238,19 @@ linters:
120238
- ProcessSetupDone
121239
- ReadInConfig
122240
- google\.golang\.org/grpc/status\.Error.*\(
123-
wsl:
124-
force-case-trailing-whitespace: 1
125-
allow-trailing-comment: true
126-
allow-separated-leading-comment: true
241+
wsl_v5:
242+
default: all
243+
branch-max-lines: 4
244+
case-max-lines: 2
245+
allow-whole-block: true
246+
allow-first-in-block: true
247+
127248

128249
exclusions:
250+
rules:
251+
- path: "_test\\.go"
252+
linters:
253+
- funlen
129254
paths:
130255
- vendor/.* # ignore vendor
131-
- .*\.gen\.go$ # ignore generated files
256+
- .*\.gen\.go$ # ignore generated files

fields/dict_test.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@ func TestDict(t *testing.T) {
4242

4343
d = fields.Dict{"foo": "bar", "baz": "qux"}
4444
require.ElementsMatch(t, []string{"foo=bar", "baz=qux"}, collectionStringToKVElements(d.String()))
45-
4645
})
4746

4847
t.Run("All early exit", func(t *testing.T) {

fields/field.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
// Package fields provides types and functions for working with key-value fields.
21
package fields
32

43
import (

fields/list.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ func (l List) ToDict() Dict {
4444
// }
4545
func (l List) All() iter.Seq2[string, any] {
4646
return func(yield func(string, any) bool) {
47-
for i := 0; i < len(l); i++ {
47+
for i := range len(l) {
4848
if !yield(l[i].K, l[i].V) {
4949
return
5050
}

logger/logrusadapter/adapter_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ func (h *logrusHook) Reset() {
3838

3939
func newAdapter(hook *logrusHook) *logrusadapter.Adapter {
4040
ll := logrus.New()
41+
4142
ll.Level = logrus.TraceLevel
4243
ll.AddHook(hook)
4344

logger/slogadapter/adapter.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,8 @@ func (a *Adapter) Log(level int, msg string, err error, fs ...fields.Field) {
3838
case logger.LevelInfo:
3939
sl = slog.LevelInfo
4040

41-
case logger.LevelDebug:
42-
sl = slog.LevelDebug
43-
44-
case logger.LevelTrace:
41+
case logger.LevelDebug,
42+
logger.LevelTrace:
4543
sl = slog.LevelDebug
4644

4745
default:

logger/slogadapter/adapter_test.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,6 @@ func TestAdapter(t *testing.T) {
126126
assert.Equal(t, tc.msg, buf[0].Message)
127127
assert.Same(t, tc.err, buf[0].Attrs[errorKey])
128128
}
129-
130129
})
131130

132131
t.Run("WithFields", func(t *testing.T) {
@@ -163,6 +162,5 @@ func TestAdapter(t *testing.T) {
163162
require.Len(t, buf, 1)
164163

165164
assert.Equal(t, "test-logger", buf[0].Group)
166-
167165
})
168166
}

logger/zapadapter/adapter_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ func TestAdapter(t *testing.T) {
9191
t.Parallel()
9292

9393
adapter, logs := newAdapter()
94+
9495
adapter = adapter.WithFields(fields.F("foo", "bar"), fields.F("baz", 42))
9596

9697
adapter.Log(logger.LevelInfo, "test", nil)
@@ -114,6 +115,7 @@ func TestAdapter(t *testing.T) {
114115
t.Parallel()
115116

116117
adapter, logs := newAdapter()
118+
117119
adapter = adapter.WithName("test-logger")
118120

119121
adapter.Log(logger.LevelInfo, "test", nil)

stacktrace/stacktrace.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ func (s *Stack) String() string {
3939

4040
// Estimate capacity: ~100 bytes per frame on average
4141
b := strings.Builder{}
42-
b.Grow(len(s.frames) * 100)
42+
b.Grow(len(s.frames) * 100) //nolint:mnd
4343

4444
for i, f := range s.frames {
4545
if i > 0 {

0 commit comments

Comments
 (0)