# golangci-lint v2 — Gateway 專案 # 參考:https://golangci-lint.run/docs/configuration/ # 預設集「standard」= errcheck + govet + ineffassign + staticcheck + unused(取代已棄用的 golint) # 再啟用社群常見的品質 / 安全 / 風格 linter,並關閉過度吵雜的規則。 version: "2" run: timeout: 5m tests: true modules-download-mode: readonly go: "1.26" output: formats: text: print-linter-name: true colors: true linters: default: standard enable: # 錯誤與 context - bodyclose - contextcheck - copyloopvar - errname - errorlint - noctx # 安全 - gosec # 風格(revive 為 golint 的現代替代) - revive - misspell - unconvert - whitespace - gocritic - goconst - predeclared # 測試 - testifylint - thelper # HTTP / API 常見 - rowserrcheck - sloglint disable: - exhaustruct - varnamelen - wrapcheck - nlreturn - wsl - wsl_v5 - dupl - depguard - tagliatelle - ireturn - funlen - gochecknoglobals - gochecknoinits settings: gosec: excludes: - G104 gocritic: enabled-tags: - diagnostic - style - performance disabled-checks: - hugeParam - rangeValCopy - whyNoLint revive: severity: warning rules: - name: blank-imports - name: context-as-argument - name: context-keys-type - name: dot-imports - name: error-return - name: error-naming - name: exported arguments: - disableStutteringCheck - name: increment-decrement - name: indent-error-flow - name: range - name: receiver-naming - name: time-naming - name: unexported-return - name: var-declaration - name: var-naming disabled: true - name: package-comments disabled: true - name: comment-spacings disabled: true errcheck: check-type-assertions: true check-blank: true staticcheck: checks: - all - -ST1000 - -ST1003 - -ST1016 # go-zero conf uses `json:",optional"` for optional fields; staticcheck # mis-reports it as an unknown json option, so suppress globally. - -SA5008 exclusions: generated: lax warn-unused: true presets: - comments - common-false-positives - std-error-handling - legacy rules: - path: _test\.go linters: - gosec - errcheck - funlen - gocyclo - cyclop - path: internal/types/types\.go linters: - revive - gocritic paths: - generate/doc-generate - docs/openapi formatters: enable: - goimports exclusions: generated: lax paths: - generate/doc-generate issues: max-issues-per-linter: 0 max-same-issues: 0