-
Notifications
You must be signed in to change notification settings - Fork 18
/
.golangci.yml
86 lines (71 loc) · 2.17 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
output:
# Make output more digestible with quickfix in vim.
sort-results: true
print-issued-lines: false
linters:
disable-all: true
enable:
# golangci-lint defaults:
- errcheck
- gosimple
- govet
- ineffassign
- staticcheck
- unused
# Non-default linters:
- errorlint
- forbidigo
- gocritic
- gofumpt
- nolintlint
- revive
# With Go 1.22 for loop semantics,
# no need to copy loop variables.
- copyloopvar
# Prefer "range N" over "x := 0; x < N; x++".
- intrange
# Require field tags for serialized structs.
- musttag
# Catch make([]T, N) used with append
- makezero
linters-settings:
errcheck:
exclude-functions:
# Usually used in the same capacity as fmt.Print*.
- fmt.Fprint
- fmt.Fprintf
- fmt.Fprintln
# This is always a strings.Builder, and can't fail.
- (go.abhg.dev/gs/internal/ui.Writer).WriteString
- (go.abhg.dev/gs/internal/ui.Writer).Write
forbidigo:
# Need to analyze types to match the exactly instead of just name.
analyze-types: true
forbid:
# Don't use charmbracelet/log's global logger.
- p: '^log\.(Debug|Info|Warn|Error|Fatal)f?$'
pkg: github.com/charmbracelet/log
msg: "Don't use the global logger; use a local logger instead."
govet:
enable:
- niliness
- reflectvaluecompare
- sortslice
- unusedwrite
issues:
# Print all issues reported by all linters.
max-issues-per-linter: 0
max-same-issues: 0
# Don't ignore some of the issues that golangci-lint considers okay.
exclude-use-default: false
exclude-rules:
# Don't warn on unused parameters.
# Parameter names are useful; replacing them with '_' is undesirable.
- linters: [revive]
text: 'unused-parameter: parameter \S+ seems to be unused, consider removing or renaming it as _'
# staticcheck already has smarter checks for empty blocks.
# revive's empty-block linter has false positives.
# For example, as of writing this, the following is not allowed.
# for foo() { }
- linters: [revive]
text: 'empty-block: this block is empty, you can remove it'