mirror of
https://github.com/lovelaze/nebula-sync.git
synced 2025-11-05 18:29:19 +01:00
347 lines
7.4 KiB
YAML
347 lines
7.4 KiB
YAML
# Based on https://gist.github.com/maratori/47a4d00457a92aa426dbd48a18776322
|
|
|
|
version: "2"
|
|
|
|
issues:
|
|
max-same-issues: 50
|
|
|
|
formatters:
|
|
enable:
|
|
- gci
|
|
- gofmt
|
|
- gofumpt
|
|
- goimports
|
|
- golines
|
|
settings:
|
|
gci:
|
|
sections:
|
|
- standard
|
|
- default
|
|
- prefix(github.com/lovelaze/nebula-sync)
|
|
gofumpt:
|
|
module-path: github.com/lovelaze/nebula-sync
|
|
extra-rules: true
|
|
goimports:
|
|
local-prefixes:
|
|
- github.com/lovelaze/nebula-sync
|
|
golines:
|
|
max-len: 128
|
|
tab-len: 4
|
|
|
|
linters:
|
|
enable:
|
|
- asasalint
|
|
- asciicheck
|
|
- bidichk
|
|
- bodyclose
|
|
- canonicalheader
|
|
- copyloopvar
|
|
- cyclop
|
|
- depguard
|
|
- dupl
|
|
- durationcheck
|
|
- errcheck
|
|
- errname
|
|
- errorlint
|
|
- exhaustive
|
|
- exptostd
|
|
- fatcontext
|
|
- forbidigo
|
|
- funcorder
|
|
- funlen
|
|
- gocheckcompilerdirectives
|
|
- gochecksumtype
|
|
- gocognit
|
|
- goconst
|
|
- gocritic
|
|
- gocyclo
|
|
- godot
|
|
- gomoddirectives
|
|
- goprintffuncname
|
|
- gosec
|
|
- govet
|
|
- iface
|
|
- ineffassign
|
|
- intrange
|
|
- loggercheck
|
|
- makezero
|
|
- mirror
|
|
- mnd
|
|
- musttag
|
|
- nakedret
|
|
- nestif
|
|
- nilerr
|
|
- nilnesserr
|
|
- nilnil
|
|
- noctx
|
|
- nolintlint
|
|
- nonamedreturns
|
|
- nosprintfhostport
|
|
- perfsprint
|
|
- predeclared
|
|
- promlinter
|
|
- protogetter
|
|
- reassign
|
|
- recvcheck
|
|
- revive
|
|
- rowserrcheck
|
|
- sloglint
|
|
- spancheck
|
|
- sqlclosecheck
|
|
- staticcheck
|
|
- testableexamples
|
|
- testifylint
|
|
- tparallel
|
|
- unconvert
|
|
- unparam
|
|
- unused
|
|
- usestdlibvars
|
|
- usetesting
|
|
- wastedassign
|
|
- whitespace
|
|
- zerologlint
|
|
|
|
## should be evaluated
|
|
#- gochecknoglobals
|
|
#- gochecknoinits
|
|
#- testpackage
|
|
|
|
## you may want to enable
|
|
#- decorder
|
|
#- exhaustruct
|
|
#- ginkgolinter
|
|
#- godox
|
|
#- goheader
|
|
#- inamedparam
|
|
#- interfacebloat
|
|
#- ireturn
|
|
#- prealloc
|
|
#- tagalign
|
|
#- varnamelen
|
|
#- wrapcheck
|
|
|
|
## disabled
|
|
#- containedctx
|
|
#- contextcheck
|
|
#- dogsled
|
|
#- dupword
|
|
#- err113
|
|
#- errchkjson
|
|
#- forcetypeassert
|
|
#- gomodguard
|
|
#- gosmopolitan
|
|
#- grouper
|
|
#- importas
|
|
#- lll
|
|
#- maintidx
|
|
#- misspell
|
|
#- nlreturn
|
|
#- paralleltest
|
|
#- tagliatelle
|
|
#- thelper
|
|
#- wsl
|
|
|
|
# All settings can be found here https://github.com/golangci/golangci-lint/blob/HEAD/.golangci.reference.yml
|
|
settings:
|
|
cyclop:
|
|
max-complexity: 30
|
|
package-average: 10.0
|
|
|
|
depguard:
|
|
rules:
|
|
"deprecated":
|
|
files:
|
|
- "$all"
|
|
deny:
|
|
- pkg: github.com/golang/protobuf
|
|
desc: Use google.golang.org/protobuf instead, see https://developers.google.com/protocol-buffers/docs/reference/go/faq#modules
|
|
- pkg: github.com/satori/go.uuid
|
|
desc: Use github.com/google/uuid instead, satori's package is not maintained
|
|
- pkg: github.com/gofrs/uuid$
|
|
desc: Use github.com/gofrs/uuid/v5 or later, it was not a go module before v5
|
|
"non-test files":
|
|
files:
|
|
- "!$test"
|
|
deny:
|
|
- pkg: math/rand$
|
|
desc: Use math/rand/v2 instead, see https://go.dev/blog/randv2
|
|
"non-main files":
|
|
files:
|
|
- "!**/main.go"
|
|
deny:
|
|
- pkg: log$
|
|
desc: Use log/slog instead, see https://go.dev/blog/slog
|
|
|
|
errcheck:
|
|
check-type-assertions: true
|
|
|
|
exhaustive:
|
|
check:
|
|
- switch
|
|
- map
|
|
|
|
exhaustruct:
|
|
exclude:
|
|
# std libs
|
|
- ^net/http.Client$
|
|
- ^net/http.Cookie$
|
|
- ^net/http.Request$
|
|
- ^net/http.Response$
|
|
- ^net/http.Server$
|
|
- ^net/http.Transport$
|
|
- ^net/url.URL$
|
|
- ^os/exec.Cmd$
|
|
- ^reflect.StructField$
|
|
# public libs
|
|
- ^github.com/Shopify/sarama.Config$
|
|
- ^github.com/Shopify/sarama.ProducerMessage$
|
|
- ^github.com/mitchellh/mapstructure.DecoderConfig$
|
|
- ^github.com/prometheus/client_golang/.+Opts$
|
|
- ^github.com/spf13/cobra.Command$
|
|
- ^github.com/spf13/cobra.CompletionOptions$
|
|
- ^github.com/stretchr/testify/mock.Mock$
|
|
- ^github.com/testcontainers/testcontainers-go.+Request$
|
|
- ^github.com/testcontainers/testcontainers-go.FromDockerfile$
|
|
- ^golang.org/x/tools/go/analysis.Analyzer$
|
|
- ^google.golang.org/protobuf/.+Options$
|
|
- ^gopkg.in/yaml.v3.Node$
|
|
|
|
funcorder:
|
|
struct-method: false
|
|
|
|
funlen:
|
|
lines: 100
|
|
statements: 50
|
|
|
|
gochecksumtype:
|
|
default-signifies-exhaustive: false
|
|
|
|
gocognit:
|
|
min-complexity: 20
|
|
|
|
gocritic:
|
|
settings:
|
|
captLocal:
|
|
paramsOnly: false
|
|
underef:
|
|
skipRecvDeref: false
|
|
|
|
govet:
|
|
enable-all: true
|
|
disable:
|
|
- fieldalignment
|
|
- shadow
|
|
|
|
inamedparam:
|
|
skip-single-param: true
|
|
|
|
mnd:
|
|
ignored-functions:
|
|
- args.Error
|
|
- flag.Arg
|
|
- flag.Duration.*
|
|
- flag.Float.*
|
|
- flag.Int.*
|
|
- flag.Uint.*
|
|
- os.Chmod
|
|
- os.Mkdir.*
|
|
- os.OpenFile
|
|
- os.WriteFile
|
|
- prometheus.ExponentialBuckets.*
|
|
- prometheus.LinearBuckets
|
|
|
|
nakedret:
|
|
max-func-lines: 0
|
|
|
|
nolintlint:
|
|
allow-no-explanation: [ funlen, gocognit, golines ]
|
|
require-explanation: true
|
|
require-specific: true
|
|
|
|
perfsprint:
|
|
strconcat: false
|
|
|
|
reassign:
|
|
patterns:
|
|
- ".*"
|
|
|
|
rowserrcheck:
|
|
packages:
|
|
- github.com/jmoiron/sqlx
|
|
|
|
sloglint:
|
|
no-global: all
|
|
context: scope
|
|
|
|
staticcheck:
|
|
checks:
|
|
- all
|
|
# Incorrect or missing package comment.
|
|
- -ST1000
|
|
# Use consistent method receiver names.
|
|
- -ST1016
|
|
# Omit embedded fields from selector expression.
|
|
- -QF1008
|
|
|
|
usetesting:
|
|
os-temp-dir: true
|
|
|
|
revive:
|
|
enable-all-rules: true
|
|
rules:
|
|
- name: add-constant
|
|
disabled: true
|
|
- name: unused-parameter
|
|
disabled: true
|
|
- name: line-length-limit
|
|
disabled: true
|
|
- name: function-length
|
|
disabled: true
|
|
- name: max-public-structs
|
|
disabled: true
|
|
- name: import-shadowing
|
|
disabled: true
|
|
- name: cognitive-complexity
|
|
disabled: true
|
|
- name: nested-structs
|
|
disabled: true
|
|
- name: exported
|
|
disabled: true
|
|
- name: flag-parameter
|
|
disabled: true
|
|
- name: deep-exit
|
|
disabled: true
|
|
|
|
gosec:
|
|
excludes:
|
|
- G402
|
|
|
|
exclusions:
|
|
warn-unused: false
|
|
presets:
|
|
- std-error-handling
|
|
- common-false-positives
|
|
rules:
|
|
- source: 'TODO'
|
|
linters: [ godot ]
|
|
- text: 'should have a package comment'
|
|
linters: [ revive ]
|
|
- text: 'exported \S+ \S+ should have comment( \(or a comment on this block\))? or be unexported'
|
|
linters: [ revive ]
|
|
- text: 'package comment should be of the form ".+"'
|
|
source: '// ?(nolint|TODO)'
|
|
linters: [ revive ]
|
|
- text: 'comment on exported \S+ \S+ should be of the form ".+"'
|
|
source: '// ?(nolint|TODO)'
|
|
linters: [ revive, staticcheck ]
|
|
- path: '_test\.go'
|
|
linters:
|
|
- bodyclose
|
|
- dupl
|
|
- errcheck
|
|
- funlen
|
|
- goconst
|
|
- gosec
|
|
- noctx
|
|
- wrapcheck
|