run: timeout: 5m tests: true linters: disable-all: true enable: - forbidigo - errorlint - errcheck - staticcheck - revive - gocritic - gosec - bodyclose - noctx - nilerr - goimports - gocyclo linters-settings: errcheck: check-blank: true check-type-assertions: true exclude-functions: - fmt.Fprintf forbidigo: analyze-types: true forbid: - p: '^fmt\.Print.*$' msg: 使用 zap logger,不要直接输出到 stdout/stderr - p: '^fmt\.Fprint.*$' msg: 使用 zap logger,不要直接输出到 stdout/stderr - p: '^log\.(Print|Println|Printf|Fatal|Fatalln|Fatalf|Panic|Panicln|Panicf)$' msg: 使用 zap logger,不要使用标准库 log - p: '^zap\.L$' msg: 通过依赖注入传递 *zap.Logger,不要使用全局 logger - p: '^zap\.S$' msg: 不使用 Sugar logger revive: rules: - name: exported - name: var-naming - name: indent-error-flow - name: error-strings - name: error-return - name: blank-imports - name: context-as-argument - name: unexported-return goimports: local-prefixes: nex/backend gocyclo: min-complexity: 10 issues: exclude-dirs: - tests/mocks exclude-generated: true exclude-rules: - path: '(_test\.go|tests/)' linters: - forbidigo - path: '(_test\.go|tests/)' linters: - errcheck source: '(^\s*_\s*=|,\s*_)' - path: 'tests/integration/e2e_conversion_test\.go' linters: - errcheck - path: '(_test\.go|tests/)' linters: - revive text: '^exported:' - path: '(_test\.go|tests/)' linters: - gosec text: 'G(101|401|501)' - path: '(_test\.go|tests/)' linters: - gocyclo text: 'cyclomatic complexity (1[1-9]|20) of .* is high \(> 10\)' - linters: - revive text: '(that stutters|BuildUrl should be BuildURL|ConvertHttpRequest should be ConvertHTTPRequest|ConvertHttpResponse should be ConvertHTTPResponse)' - path: 'internal/conversion/.*\.go' linters: - gocyclo - gocritic - path: '(internal/provider/client\.go|internal/service/model_service_impl\.go|internal/service/stats_buffer\.go|internal/handler/proxy_handler\.go|cmd/(desktop|server)/main\.go)' linters: - gocyclo