run: go: "1.21" skip-dirs: - build - configs - deployments - docs - scripts - internal/core - cmake_build - mmap - data - ci skip-files: - partial_search_test.go build-tags: - dynamic - test linters: disable-all: true enable: - gosimple - govet - ineffassign - staticcheck - decorder - depguard - gofmt - goimports - gosec - revive - unconvert - misspell - typecheck - durationcheck - forbidigo - gci - whitespace - gofumpt - gocritic linters-settings: gci: sections: - standard - default - prefix(github.com/milvus-io) custom-order: true govet: enable: # add extra linters - nilness gofumpt: lang-version: "1.18" module-path: github.com/milvus-io goimports: local-prefixes: github.com/milvus-io revive: rules: - name: unused-parameter disabled: true - name: var-naming severity: warning disabled: false arguments: - ["ID"] # Allow list - name: context-as-argument severity: warning disabled: false arguments: - allowTypesBefore: "*testing.T" - 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 severity: warning disabled: false arguments: - "preserveScope" - 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 misspell: locale: US gocritic: enabled-checks: - ruleguard settings: ruleguard: failOnError: true rules: "rules.go" 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" forbidigo: forbid: - '^time\.Tick$' - 'return merr\.Err[a-zA-Z]+' - 'merr\.Wrap\w+\(\)\.Error\(\)' - '\.(ErrorCode|Reason) = ' - 'Reason:\s+\w+\.Error\(\)' - 'errors.New\((.+)\.GetReason\(\)\)' - 'commonpb\.Status\{[\s\n]*ErrorCode:[\s\n]*.+[\s\S\n]*?\}' - 'os\.Open\(.+\)' - 'os\.ReadFile\(.+\)' - 'os\.WriteFile\(.+\)' - "runtime.NumCPU" - "runtime.GOMAXPROCS(0)" #- 'fmt\.Print.*' WIP issues: exclude-use-default: false exclude-rules: - path: .+_test\.go linters: - forbidigo exclude: - should have a package comment - should have comment - should be of the form - should not use dot imports - which can be annoying to use # Binds to all network interfaces - G102 # Use of unsafe calls should be audited - G103 # Errors unhandled - G104 # file/folder Permission - G301 - G302 # Potential file inclusion via variable - G304 # Deferring unsafe method like *os.File Close - G307 # TLS MinVersion too low - G402 # Use of weak random number generator math/rand - G404 # Unused parameters - SA1019 # defer return errors - SA5001 # Maximum issues count per one linter. Set to 0 to disable. Default is 50. max-issues-per-linter: 0 # Maximum count of issues with the same text. Set to 0 to disable. Default is 3. max-same-issues: 0 service: # use the fixed version to not introduce new linters unexpectedly golangci-lint-version: 1.55.2