mirror of
https://github.com/openlibrecommunity/olcrtc.git
synced 2026-05-26 07:08:11 +00:00
feat: make golangci harder
This commit is contained in:
669
.golangci.yml
669
.golangci.yml
@@ -1,273 +1,432 @@
|
||||
version: "2"
|
||||
|
||||
run:
|
||||
timeout: 5m
|
||||
timeout: 10s
|
||||
tests: true
|
||||
build-tags:
|
||||
- race
|
||||
modules-download-mode: readonly
|
||||
allow-parallel-runners: false
|
||||
allow-serial-runners: false
|
||||
go: "1.23"
|
||||
concurrency: 0
|
||||
relative-path-mode: gomod
|
||||
issues-exit-code: 1
|
||||
|
||||
output:
|
||||
formats:
|
||||
text:
|
||||
path: stdout
|
||||
print-linter-name: true
|
||||
print-issued-lines: true
|
||||
colors: true
|
||||
sort-order:
|
||||
- linter
|
||||
- severity
|
||||
- file
|
||||
show-stats: true
|
||||
|
||||
linters:
|
||||
enable:
|
||||
- errcheck
|
||||
- govet
|
||||
- staticcheck
|
||||
- unused
|
||||
- ineffassign
|
||||
- asasalint
|
||||
- asciicheck
|
||||
- bidichk
|
||||
- bodyclose
|
||||
- canonicalheader
|
||||
- containedctx
|
||||
- contextcheck
|
||||
- copyloopvar
|
||||
- cyclop
|
||||
- decorder
|
||||
- dogsled
|
||||
- dupl
|
||||
- dupword
|
||||
- durationcheck
|
||||
- err113
|
||||
- errchkjson
|
||||
- errname
|
||||
- errorlint
|
||||
- exhaustive
|
||||
- fatcontext
|
||||
- forbidigo
|
||||
- forcetypeassert
|
||||
- gocheckcompilerdirectives
|
||||
- gochecknoglobals
|
||||
- gochecknoinits
|
||||
- gochecksumtype
|
||||
- gocognit
|
||||
- goconst
|
||||
- gocritic
|
||||
- gocyclo
|
||||
- godot
|
||||
- godox
|
||||
- goprintffuncname
|
||||
- gosec
|
||||
- grouper
|
||||
- iface
|
||||
- inamedparam
|
||||
- interfacebloat
|
||||
- intrange
|
||||
# - ireturn
|
||||
- lll
|
||||
- loggercheck
|
||||
- maintidx
|
||||
- makezero
|
||||
- mirror
|
||||
- misspell
|
||||
- musttag
|
||||
- nakedret
|
||||
- nestif
|
||||
- nilerr
|
||||
- nilnesserr
|
||||
- nilnil
|
||||
- noctx
|
||||
- nolintlint
|
||||
- nonamedreturns
|
||||
- nosprintfhostport
|
||||
- perfsprint
|
||||
- prealloc
|
||||
- predeclared
|
||||
- promlinter
|
||||
- reassign
|
||||
- recvcheck
|
||||
- revive
|
||||
- rowserrcheck
|
||||
- sloglint
|
||||
- spancheck
|
||||
- sqlclosecheck
|
||||
- tagalign
|
||||
- tagliatelle
|
||||
- testableexamples
|
||||
- testifylint
|
||||
- thelper
|
||||
- tparallel
|
||||
- unconvert
|
||||
- unparam
|
||||
- usestdlibvars
|
||||
- wastedassign
|
||||
- whitespace
|
||||
- wrapcheck
|
||||
- zerologlint
|
||||
default: all
|
||||
disable: []
|
||||
settings:
|
||||
errcheck:
|
||||
check-type-assertions: true
|
||||
check-blank: true
|
||||
disable-default-exclusions: true
|
||||
exclude-functions: []
|
||||
|
||||
linters-settings:
|
||||
errcheck:
|
||||
check-blank: true
|
||||
check-type-assertions: true
|
||||
exclude-functions:
|
||||
- (io.Closer).Close
|
||||
govet:
|
||||
enable-all: true
|
||||
settings:
|
||||
shadow:
|
||||
strict: true
|
||||
|
||||
govet:
|
||||
enable-all: true
|
||||
settings:
|
||||
shadow:
|
||||
strict: true
|
||||
gosec:
|
||||
severity: low
|
||||
confidence: low
|
||||
config:
|
||||
global:
|
||||
audit: enabled
|
||||
nosec: disabled
|
||||
show-ignored: true
|
||||
|
||||
gosec:
|
||||
severity: medium
|
||||
confidence: medium
|
||||
excludes:
|
||||
- G104
|
||||
- G114
|
||||
gocritic:
|
||||
enable-all: true
|
||||
disabled-checks:
|
||||
- hugeParam
|
||||
- rangeValCopy
|
||||
|
||||
gocritic:
|
||||
enabled-tags:
|
||||
- diagnostic
|
||||
- style
|
||||
- performance
|
||||
- experimental
|
||||
- opinionated
|
||||
|
||||
revive:
|
||||
severity: warning
|
||||
enable-all-rules: false
|
||||
rules:
|
||||
- name: atomic
|
||||
- name: blank-imports
|
||||
- name: bool-literal-in-expr
|
||||
- name: call-to-gc
|
||||
- name: constant-logical-expr
|
||||
- name: context-as-argument
|
||||
- name: context-keys-type
|
||||
- name: datarace
|
||||
- name: defer
|
||||
- name: dot-imports
|
||||
- name: duplicated-imports
|
||||
- name: early-return
|
||||
- name: empty-block
|
||||
- name: empty-lines
|
||||
- name: error-naming
|
||||
- name: error-return
|
||||
- name: error-strings
|
||||
- name: errorf
|
||||
- name: exported
|
||||
- name: identical-branches
|
||||
- name: if-return
|
||||
- name: increment-decrement
|
||||
- name: indent-error-flow
|
||||
- name: modifies-parameter
|
||||
- name: modifies-value-receiver
|
||||
- name: range
|
||||
- name: range-val-address
|
||||
- name: range-val-in-closure
|
||||
- name: receiver-naming
|
||||
- name: redefines-builtin-id
|
||||
- name: string-of-int
|
||||
- name: struct-tag
|
||||
- name: superfluous-else
|
||||
- name: time-equal
|
||||
- name: time-naming
|
||||
- name: unconditional-recursion
|
||||
- name: unexported-naming
|
||||
- name: unexported-return
|
||||
- name: unhandled-error
|
||||
- name: unnecessary-stmt
|
||||
- name: unreachable-code
|
||||
- name: unused-parameter
|
||||
- name: unused-receiver
|
||||
- name: use-any
|
||||
- name: useless-break
|
||||
- name: var-declaration
|
||||
- name: var-naming
|
||||
- name: waitgroup-by-value
|
||||
|
||||
stylecheck:
|
||||
checks: ["all"]
|
||||
|
||||
staticcheck:
|
||||
checks: ["all"]
|
||||
|
||||
unparam:
|
||||
check-exported: true
|
||||
|
||||
nakedret:
|
||||
max-func-lines: 0
|
||||
|
||||
cyclop:
|
||||
max-complexity: 10
|
||||
|
||||
gocyclo:
|
||||
min-complexity: 10
|
||||
|
||||
gocognit:
|
||||
min-complexity: 15
|
||||
|
||||
nestif:
|
||||
min-complexity: 4
|
||||
|
||||
lll:
|
||||
line-length: 120
|
||||
|
||||
maintidx:
|
||||
under: 20
|
||||
|
||||
funlen:
|
||||
lines: 80
|
||||
statements: 50
|
||||
|
||||
gochecknoglobals:
|
||||
check-no-globals: true
|
||||
|
||||
goconst:
|
||||
min-len: 3
|
||||
min-occurrences: 3
|
||||
|
||||
dupl:
|
||||
threshold: 100
|
||||
|
||||
forbidigo:
|
||||
forbid:
|
||||
- ^print.*$
|
||||
- ^fmt\.Print.*$
|
||||
|
||||
tagliatelle:
|
||||
case:
|
||||
revive:
|
||||
severity: error
|
||||
enable-all-rules: true
|
||||
rules:
|
||||
json: snake
|
||||
yaml: snake
|
||||
xml: camel
|
||||
bson: camel
|
||||
avro: snake
|
||||
mapstructure: kebab
|
||||
- name: line-length-limit
|
||||
arguments: [80]
|
||||
- name: function-length
|
||||
arguments: [1, 1]
|
||||
- name: function-result-limit
|
||||
arguments: [1]
|
||||
- name: argument-limit
|
||||
arguments: [1]
|
||||
- name: cognitive-complexity
|
||||
arguments: [1]
|
||||
- name: cyclomatic
|
||||
arguments: [1]
|
||||
- name: max-public-structs
|
||||
arguments: [1]
|
||||
- name: file-header
|
||||
disabled: true
|
||||
- name: banned-characters
|
||||
disabled: true
|
||||
- name: add-constant
|
||||
arguments:
|
||||
- maxLitCount: "3"
|
||||
allowStrs: '""'
|
||||
allowInts: "0,1,2"
|
||||
allowFloats: "0.0,1.0"
|
||||
- name: unhandled-error
|
||||
arguments: ["fmt.Print.*", "fmt.Fprint.*"]
|
||||
|
||||
varnamelen:
|
||||
min-name-length: 2
|
||||
ignore-names:
|
||||
- err
|
||||
- i
|
||||
- j
|
||||
- k
|
||||
- v
|
||||
- id
|
||||
- ok
|
||||
- db
|
||||
- tx
|
||||
- wg
|
||||
- mu
|
||||
staticcheck:
|
||||
checks:
|
||||
[
|
||||
"all",
|
||||
"-ST1000",
|
||||
"-ST1003",
|
||||
"-ST1016",
|
||||
"-ST1020",
|
||||
"-ST1021",
|
||||
"-ST1022",
|
||||
]
|
||||
|
||||
ireturn:
|
||||
allow:
|
||||
- anon
|
||||
- error
|
||||
- empty
|
||||
- stdlib
|
||||
- Provider
|
||||
- provider.Provider
|
||||
unparam:
|
||||
check-exported: true
|
||||
|
||||
wrapcheck:
|
||||
ignoreSigs:
|
||||
- .Errorf(
|
||||
- errors.New(
|
||||
- errors.Unwrap(
|
||||
- .Wrap(
|
||||
- .Wrapf(
|
||||
- .WithMessage(
|
||||
nakedret:
|
||||
max-func-lines: 0
|
||||
|
||||
cyclop:
|
||||
max-complexity: 1
|
||||
package-average: 1.0
|
||||
|
||||
gocyclo:
|
||||
min-complexity: 1
|
||||
|
||||
gocognit:
|
||||
min-complexity: 1
|
||||
|
||||
nestif:
|
||||
min-complexity: 1
|
||||
|
||||
lll:
|
||||
line-length: 80
|
||||
tab-width: 1
|
||||
|
||||
maintidx:
|
||||
under: 100
|
||||
|
||||
funlen:
|
||||
lines: 1
|
||||
statements: 1
|
||||
ignore-comments: false
|
||||
|
||||
goconst:
|
||||
min-len: 1
|
||||
min-occurrences: 1
|
||||
match-constant: true
|
||||
numbers: true
|
||||
min: 1
|
||||
max: 1
|
||||
ignore-calls: false
|
||||
|
||||
dupl:
|
||||
threshold: 10
|
||||
|
||||
forbidigo:
|
||||
analyze-types: true
|
||||
exclude-godoc-examples: false
|
||||
forbid:
|
||||
- pattern: ^print(ln)?$
|
||||
msg: "use a proper logger"
|
||||
- pattern: ^fmt\..*$
|
||||
msg: "fmt is forbidden, use a structured logger"
|
||||
- pattern: ^log\..*$
|
||||
msg: "stdlib log is forbidden, use slog"
|
||||
- pattern: ^panic$
|
||||
msg: "do not panic, return an error"
|
||||
- pattern: ^recover$
|
||||
msg: "recover is forbidden, code must not panic"
|
||||
- pattern: ^os\.Exit$
|
||||
msg: "os.Exit is forbidden, return an error from main"
|
||||
- pattern: ^time\.Sleep$
|
||||
msg: "time.Sleep is forbidden, use context with deadline or timers"
|
||||
- pattern: ^go\s
|
||||
msg: "raw goroutines are forbidden, use a managed pool"
|
||||
- pattern: ^init$
|
||||
msg: "init functions are forbidden, use explicit initialization"
|
||||
- pattern: ^println$
|
||||
msg: "println is forbidden"
|
||||
- pattern: ^make\(chan\s
|
||||
msg: "unbuffered channels are forbidden, specify a buffer size"
|
||||
|
||||
tagliatelle:
|
||||
case:
|
||||
use-field-name: true
|
||||
rules:
|
||||
json: snake
|
||||
yaml: snake
|
||||
xml: camel
|
||||
bson: camel
|
||||
avro: snake
|
||||
mapstructure: kebab
|
||||
env: upperSnake
|
||||
envconfig: upperSnake
|
||||
|
||||
varnamelen:
|
||||
min-name-length: 4
|
||||
check-receiver: true
|
||||
check-return: true
|
||||
check-type-param: true
|
||||
ignore-type-assert-ok: false
|
||||
ignore-map-index-ok: false
|
||||
ignore-chan-recv-ok: false
|
||||
ignore-names:
|
||||
- err
|
||||
ignore-decls:
|
||||
- i int
|
||||
- n int
|
||||
- w io.Writer
|
||||
- r io.Reader
|
||||
- t testing.T
|
||||
- b testing.B
|
||||
- f *os.File
|
||||
- ok bool
|
||||
|
||||
ireturn:
|
||||
allow:
|
||||
- anon
|
||||
- error
|
||||
- empty
|
||||
- stdlib
|
||||
|
||||
wrapcheck:
|
||||
ignore-sigs: []
|
||||
ignore-package-globs: []
|
||||
|
||||
exhaustive:
|
||||
check:
|
||||
- switch
|
||||
- map
|
||||
default-signifies-exhaustive: false
|
||||
explicit-exhaustive-switch: true
|
||||
explicit-exhaustive-map: true
|
||||
default-case-required: true
|
||||
|
||||
exhaustruct:
|
||||
include: []
|
||||
exclude: []
|
||||
|
||||
nlreturn:
|
||||
block-size: 1
|
||||
|
||||
wsl_v5:
|
||||
allow-first-in-block: false
|
||||
allow-whole-block: false
|
||||
branch-max-lines: 1
|
||||
|
||||
mnd:
|
||||
checks:
|
||||
- argument
|
||||
- case
|
||||
- condition
|
||||
- operation
|
||||
- return
|
||||
- assign
|
||||
|
||||
interfacebloat:
|
||||
max: 1
|
||||
|
||||
nolintlint:
|
||||
allow-unused: false
|
||||
require-explanation: true
|
||||
require-specific: true
|
||||
|
||||
misspell:
|
||||
locale: US
|
||||
|
||||
grouper:
|
||||
const-require-single-const: false
|
||||
const-require-grouping: true
|
||||
import-require-single-import: false
|
||||
import-require-grouping: true
|
||||
type-require-single-type: false
|
||||
type-require-grouping: true
|
||||
var-require-single-var: false
|
||||
var-require-grouping: true
|
||||
|
||||
decorder:
|
||||
dec-order:
|
||||
- type
|
||||
- const
|
||||
- var
|
||||
- func
|
||||
disable-dec-order-check: false
|
||||
disable-init-func-first-check: false
|
||||
disable-dec-num-check: false
|
||||
disable-type-dec-num-check: false
|
||||
disable-const-dec-num-check: false
|
||||
disable-var-dec-num-check: false
|
||||
|
||||
paralleltest:
|
||||
ignore-missing: false
|
||||
ignore-missing-subtests: false
|
||||
|
||||
testpackage:
|
||||
skip-regexp: ""
|
||||
allow-packages: []
|
||||
|
||||
perfsprint:
|
||||
integer-format: true
|
||||
int-conversion: true
|
||||
error-format: true
|
||||
err-error: true
|
||||
errorf: true
|
||||
string-format: true
|
||||
sprintf1: true
|
||||
strconcat: true
|
||||
bool-format: true
|
||||
hex-format: true
|
||||
|
||||
prealloc:
|
||||
simple: true
|
||||
range-loops: true
|
||||
for-loops: true
|
||||
|
||||
nonamedreturns:
|
||||
report-error-in-defer: true
|
||||
|
||||
sloglint:
|
||||
no-mixed-args: true
|
||||
kv-only: false
|
||||
attr-only: true
|
||||
no-global: "all"
|
||||
context: "all"
|
||||
static-msg: true
|
||||
no-raw-keys: true
|
||||
key-naming-case: snake
|
||||
args-on-sep-lines: true
|
||||
|
||||
inamedparam:
|
||||
skip-single-param: false
|
||||
|
||||
godot:
|
||||
scope: all
|
||||
period: true
|
||||
capital: true
|
||||
|
||||
godox:
|
||||
keywords:
|
||||
- TODO
|
||||
- FIXME
|
||||
- BUG
|
||||
- HACK
|
||||
- XXX
|
||||
- OPTIMIZE
|
||||
|
||||
embeddedstructfieldcheck:
|
||||
forbid-mutex: true
|
||||
|
||||
funcorder:
|
||||
constructor: true
|
||||
struct-method: true
|
||||
|
||||
importas:
|
||||
no-unaliased: true
|
||||
no-extra-aliases: true
|
||||
|
||||
depguard:
|
||||
rules:
|
||||
main:
|
||||
list-mode: strict
|
||||
files:
|
||||
- "$all"
|
||||
deny:
|
||||
- pkg: "math/rand$"
|
||||
desc: "use math/rand/v2 or crypto/rand"
|
||||
- pkg: "io/ioutil"
|
||||
desc: "deprecated, use io and os"
|
||||
- pkg: "fmt"
|
||||
desc: "fmt is forbidden, use slog"
|
||||
- pkg: "log$"
|
||||
desc: "stdlib log is forbidden, use slog"
|
||||
- pkg: "reflect"
|
||||
desc: "reflect is forbidden, write explicit code"
|
||||
- pkg: "unsafe"
|
||||
desc: "unsafe is forbidden"
|
||||
- pkg: "github.com/pkg/errors"
|
||||
desc: "use stdlib errors with fmt.Errorf %w"
|
||||
allow:
|
||||
- $gostd
|
||||
|
||||
tagalign:
|
||||
align: true
|
||||
sort: true
|
||||
strict: true
|
||||
|
||||
iface:
|
||||
enable:
|
||||
- identical
|
||||
- unused
|
||||
- opaque
|
||||
|
||||
recvcheck:
|
||||
disable-builtin: false
|
||||
|
||||
testifylint:
|
||||
enable-all: true
|
||||
|
||||
dogsled:
|
||||
max-blank-identifiers: 0
|
||||
|
||||
dupword:
|
||||
keywords: []
|
||||
|
||||
gomoddirectives:
|
||||
replace-local: false
|
||||
retract-allow-no-explanation: false
|
||||
exclude-forbidden: true
|
||||
|
||||
spancheck:
|
||||
checks:
|
||||
- end
|
||||
- record-error
|
||||
- set-status
|
||||
|
||||
usetesting:
|
||||
context-background: true
|
||||
context-todo: true
|
||||
os-chdir: true
|
||||
os-mkdir-temp: true
|
||||
os-setenv: true
|
||||
os-temp-dir: true
|
||||
os-create-temp: true
|
||||
|
||||
exclusions:
|
||||
generated: strict
|
||||
warn-unused: true
|
||||
presets: []
|
||||
rules: []
|
||||
paths: []
|
||||
paths-except: []
|
||||
|
||||
issues:
|
||||
max-issues-per-linter: 0
|
||||
max-same-issues: 0
|
||||
exclude-use-default: false
|
||||
max-issues-per-linter: 1
|
||||
max-same-issues: 1
|
||||
uniq-by-line: false
|
||||
new: false
|
||||
fix: false
|
||||
|
||||
severity:
|
||||
default: error
|
||||
rules: []
|
||||
|
||||
Reference in New Issue
Block a user