version: "2" run: go: "1.25" build-tags: - dynamic - test linters: default: none enable: - decorder - depguard - durationcheck - forbidigo - gocritic - gosec - govet - ineffassign - misspell - revive - staticcheck - unconvert - whitespace settings: depguard: rules: main: deny: - pkg: errors desc: not allowed, use github.com/cockroachdb/errors - pkg: github.com/pkg/errors desc: not allowed, use github.com/cockroachdb/errors - pkg: github.com/pingcap/errors desc: not allowed, use github.com/cockroachdb/errors - pkg: golang.org/x/xerrors desc: not allowed, use github.com/cockroachdb/errors - pkg: github.com/go-errors/errors desc: not allowed, use github.com/cockroachdb/errors - pkg: io/ioutil desc: ioutil is deprecated after 1.16, 1.17, use os and io package instead - pkg: github.com/tikv/client-go/rawkv desc: not allowed, use github.com/tikv/client-go/v2/txnkv - pkg: github.com/tikv/client-go/v2/rawkv desc: not allowed, use github.com/tikv/client-go/v2/txnkv - pkg: github.com/gogo/protobuf desc: not allowed, gogo protobuf is deprecated - pkg: github.com/golang/protobuf/proto desc: not allowed, protobuf v1 is deprecated, use google.golang.org/protobuf/proto instead - pkg: github.com/pingcap/log desc: not allowed, use github.com/milvus-io/milvus/pkg/v3/mlog - pkg: github.com/milvus-io/milvus/pkg/v3/log desc: not allowed, use github.com/milvus-io/milvus/pkg/v3/mlog no-zap-outside-mlog: files: - "$all" - "!pkg/mlog/*.go" - "!pkg/mlog/**/*.go" - "!**/pkg/mlog/*.go" - "!**/pkg/mlog/**/*.go" # Existing zap usages are tracked as migration baseline. Do not add new zap usages outside pkg/mlog. - "!**/internal/proxy/accesslog/global.go" - "!**/internal/streamingnode/server/wal/interceptors/shard/shard_interceptor_test.go" - "!**/internal/util/cgo/logging/logging.go" - "!**/internal/util/hookutil/hook.go" - "!**/pkg/util/replicateutil/util_test.go" deny: - pkg: go.uber.org/zap desc: not allowed outside pkg/mlog, use github.com/milvus-io/milvus/pkg/v3/mlog forbidigo: forbid: - pattern: ^time\.Tick$ - pattern: return merr\.Err[a-zA-Z]+ - pattern: merr\.Wrap\w+\(\)\.Error\(\) - pattern: '\.(ErrorCode|Reason) = ' - pattern: Reason:\s+\w+\.Error\(\) - pattern: errors.New\((.+)\.GetReason\(\)\) - pattern: commonpb\.Status\{[\s\n]*ErrorCode:[\s\n]*.+[\s\S\n]*?\} - pattern: os\.Open\(.+\) - pattern: os\.ReadFile\(.+\) - pattern: os\.WriteFile\(.+\) - pattern: runtime.NumCPU - pattern: runtime.GOMAXPROCS(0) gocritic: enabled-tags: [] enabled-checks: - ruleguard settings: ruleguard: rules: rules.go govet: enable: - nilness disable: - printf misspell: locale: US revive: rules: - name: unused-parameter disabled: true - name: var-naming arguments: - - ID - IDS severity: warning disabled: false - name: context-as-argument arguments: - allowTypesBefore: '*testing.T' severity: warning disabled: false - name: datarace severity: warning disabled: false - name: duplicated-imports severity: warning disabled: false - name: waitgroup-by-value severity: warning disabled: false - name: indent-error-flow arguments: - preserveScope severity: warning disabled: false - name: range-val-in-closure severity: warning disabled: false - name: range-val-address severity: warning disabled: false - name: string-of-int severity: warning disabled: false exclusions: generated: lax rules: - linters: - forbidigo path: .+_test\.go - path: mocks\/(.)+mock_(.+)\.go text: don't use an underscore in package name # Keep existing v1 exclusions - path: (.+)\.go$ text: should have a package comment - path: (.+)\.go$ text: should have comment - path: (.+)\.go$ text: should be of the form - path: (.+)\.go$ text: should not use dot imports - path: (.+)\.go$ text: which can be annoying to use - path: (.+)\.go$ text: G102 - path: (.+)\.go$ text: G103 - path: (.+)\.go$ text: G104 - path: (.+)\.go$ text: G301 - path: (.+)\.go$ text: G302 - path: (.+)\.go$ text: G304 - path: (.+)\.go$ text: G307 - path: (.+)\.go$ text: G402 - path: (.+)\.go$ text: G404 - path: (.+)\.go$ text: SA1019 - path: (.+)\.go$ text: SA5001 - path: (.+)\.go$ text: sloppyLen - path: (.+)\.go$ text: dupSubExpr - path: (.+)\.go$ text: assignOp - path: (.+)\.go$ text: ifElseChain - path: (.+)\.go$ text: elseif - path: (.+)\.go$ text: commentFormatting - path: (.+)\.go$ text: exitAfterDefer - path: (.+)\.go$ text: captLocal - path: (.+)\.go$ text: singleCaseSwitch - path: (.+)\.go$ text: typeSwitchVar - path: (.+)\.go$ text: indent-error-flow - path: (.+)\.go$ text: appendAssign - path: (.+)\.go$ text: deprecatedComment - path: (.+)\.go$ text: SA9009 - path: (.+)\.go$ text: SA1006 - path: (.+)\.go$ text: S1009 - path: (.+)\.go$ text: offBy1 - path: (.+)\.go$ text: unslice - path: (.+)\.go$ text: G115 paths: - (^|/)partial_search_test\.go$ - ^build/ - ^configs/ - ^deployments/ - ^docs/ - ^scripts/ - ^internal/core/ - ^cmake_build/ - ^mmap/ - ^data/ - ^ci/ - ^third_party/ - ^builtin/ - ^examples/ issues: max-issues-per-linter: 0 max-same-issues: 0 formatters: enable: - gci - gofmt - gofumpt - goimports settings: gci: sections: - standard - default - prefix(github.com/milvus-io) custom-order: true gofumpt: module-path: github.com/milvus-io goimports: local-prefixes: - github.com/milvus-io exclusions: generated: lax paths: - (^|/)partial_search_test\.go$ - ^build/ - ^configs/ - ^deployments/ - ^docs/ - ^scripts/ - ^internal/core/ - ^cmake_build/ - ^mmap/ - ^data/ - ^ci/ - ^third_party/ - ^builtin/ - ^examples/