diff --git a/.golangci.yml b/.golangci.yml index 7689647..423f350 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,4 +1,4 @@ -version: 2 +version: "2" run: timeout: 5m @@ -7,161 +7,191 @@ run: output: formats: - colored-line-number: - print-issued-lines: true - print-linter-name: true + text: + path: stdout + colors: true linters: default: all disable: - # 禁用噪音过多或不相关的 linters - - arangolint # ArangoDB 特定 - - asasalint # []any 检查 - - asciicheck # 非 ASCII 标识符(项目有中文) - - bidichk # Unicode 序列检查 - - bodyclose # HTTP body 关闭检查 - - canonicalheader # Header 规范化 - - containedctx # 结构体包含 context - - contextcheck # context 继承检查 - - copyloopvar # 循环变量复制 - - cyclop # 圈复杂度 - - decorder # 声明顺序 - - depguard # 依赖检查 - - dogsled # 多个 blank identifier - - dupl # 重复代码 - - dupword # 重复单词 - - durationcheck # Duration 乘法 - - embeddedstructfieldcheck # 嵌入字段顺序 - - err113 # 静态错误定义 - - errchkjson # JSON 编码检查 - - errname # 错误命名 - - errorlint # 错误包装检查 - - exhaustruct # 结构体完整性 - - exptostd # exp 包替换 - - fatcontext # 嵌套 context - - forbidigo # 禁止标识符 - - forcetypeassert # 强制类型断言 - - funcorder # 函数顺序 - - funlen # 函数长度 - - ginkgolinter # ginkgo 框架 - - gochecknoglobals # 全局变量检查 - - gochecknoinits # init 函数检查 - - gochecksumtype # sum 类型检查 - - gocognit # 认知复杂度 - - gocritic # 代码批评 - - gocyclo # 圈复杂度 - - godoclint # godoc 检查 - - godot # 注释句点 - - godox # TODO/FIXME 检查 - - goheader # 文件头 - - gomoddirectives # go.mod 指令 - - gomodguard # 模块依赖检查 - - goprintffuncname # printf 函数命名 - - gosec # 安全检查(太多噪音) - - gosmopolitan # 非 ASCII 字符(项目有中文) - - grouper # 表达式分组 - - iface # 接口污染检查 - - importas # 导入别名 - - inamedparam # 接口方法参数命名 - - interfacebloat # 接口方法数量 - - intrange # 整数 range - - iotamixing # iota 混用 - - ireturn # 返回接口检查 - - lll # 行长度 - - loggercheck # 日志检查 - - maintidx # 可维护性指数 - - makezero # slice 初始长度 - - mirror # bytes/strings 镜像 - - misspell # 拼写检查 - - modernize # 现代化建议 - - mnd # 魔法数字 - - musttag # 结构体标签强制 - - nakedret # naked return - - nestif # 嵌套 if - - nilerr # nil 错误检查 - - nilnesserr # nilness 错误 - - nilnil # nil nil 检查 - - nlreturn # return 前换行 - - noctx # 缺少 context - - noinlineerr # 内联错误处理 - - nonamedreturns # 命名返回值 - - nosprintfhostport # sprintf host port - - paralleltest # 并行测试 - - perfsprint # fmt.Sprintf 性能 - - prealloc # 预分配 - - predeclared # 预声明标识符 - - promlinter # Prometheus 指标 - - protogetter # proto getter - - reassign # 变量重赋值 - - recvcheck # 接收者检查 - - rowserrcheck # Rows.Err 检查 - - sloglint # slog 检查 - - spancheck # OpenTelemetry span - - sqlclosecheck # SQL 关闭检查 - - tagalign # 标签对齐 - - tagliatelle # 标签命名 - - testableexamples # 可测试示例 - - testifylint # testify 检查 - - testpackage # 测试包命名 - - thelper # t.Helper 检查 - - tparallel # t.Parallel 检查 - - unconvert # 类型转换 - - unqueryvet # SQL SELECT * 检查 - - usestdlibvars # 标准库变量 - - usetesting # testing 包使用 - - varnamelen # 变量名长度 - - wastedassign # 无用赋值 - - whitespace # 空白检查 - - wrapcheck # 错误包装 - - wsl # whitespace(废弃) - - wsl_v5 # whitespace v5 - - zerologlint # zerolog 检查 + # 合理禁用 - 项目有中文注释/标识符 + - asciicheck + - gosmopolitan + + # 风格限制 - 可接受的灵活性 + - funlen + - gocyclo + - cyclop + - lll + - varnamelen + - tagalign + - nlreturn + - wsl + - wsl_v5 + - nestif + + # 重复/噪音 + - dupl + - dupword + - misspell + + # 注释风格 + - godoclint + - godot + - godox + - goheader + + # 测试相关 - 不强制 + - paralleltest + - tparallel + - testpackage + - testifylint + - testableexamples + - thelper + + # 框架/工具特定 - 项目不使用 + - arangolint + - ginkgolinter + - promlinter + - protogetter + - spancheck + - zerologlint + + # 声明/结构风格 + - decorder + - funcorder + - embeddedstructfieldcheck + - exhaustruct + - iface + + # 命名风格 + - errname + - inamedparam + - nonamedreturns + + # 不适用的检查 + - bidichk + - rowserrcheck + - sqlclosecheck + - unqueryvet + + # 可配置而非禁用 + - forbidigo + - depguard + - gomodguard + - gomoddirectives + - importas + + # 复杂度度量 + - gocognit + - maintidx + + # 噪音/风格 - 已有惯例 + - dogsled + - nosprintfhostport + - goprintffuncname + - tagliatelle + - usestdlibvars + - usetesting + - unparam + - mnd + - ireturn + - nakedret + - interfacebloat + - gocritic + - gosec + + # 项目特定豁免 + - asasalint + - containedctx + - err113 + - forcetypeassert + - gochecknoglobals + - gochecknoinits + - nilerr + - nilnil + - modernize + - musttag + - noctx + - intrange + - reassign + - iotamixing + - noinlineerr + - perfsprint + - wastedassign + - wrapcheck + - errchkjson + + # 额外禁用(来自 1f13120) + - bodyclose + - contextcheck + - errorlint + - canonicalheader + - copyloopvar + - durationcheck + - exptostd + - fatcontext + - gochecksumtype + - grouper + - loggercheck + - makezero + - mirror + - nilnesserr + - predeclared + - recvcheck + - sloglint + - unconvert + - whitespace - linters: exclusions: rules: - path: '_test\.go' linters: - dupl - - gosec - goconst - path: 'internal/ssl/ocsp_test\.go' linters: - unparam - # 排除 revive 的 stuttering 检查(lua.LuaXxx 类型命名) - path: 'internal/lua/' text: "stutters" linters: - revive + settings: + errcheck: + check-type-assertions: true + check-blank: true + + govet: + enable-all: true + + staticcheck: + checks: + - all + - -ST1000 + - -ST1003 + + revive: + severity: warning + rules: + - name: unused-parameter + severity: warning + - name: unreachable-code + severity: error + - name: context-as-argument + severity: warning + - name: error-naming + severity: warning + - name: error-return + severity: error + - name: exported + severity: warning + arguments: + - "disableStutteringCheck" + formatters: - default: all - disable: - - gofumpt - - goimports - -linters-settings: - errcheck: - check-type-assertions: true - check-blank: true - - govet: - enable-all: true - - staticcheck: - checks: ["all", "-ST1000", "-ST1003"] - - unused: - check-exported: false - - revive: - severity: warning - rules: - - name: unused-parameter - severity: warning - disabled: false - - name: exported - severity: warning - disabled: false - arguments: - - "disableStutteringCheck" \ No newline at end of file + enable: + - gofmt + settings: + gofmt: + simplify: true \ No newline at end of file