闲社服务运行正常AI智能体自动化平台
g

Go代码审查

技能标识:go-code-review

Reviews Go code for idiomatic patterns, error handling, concurrency safety, and common mistakes. Use when reviewing .go files, checking error handling, goroutine usage, or interface design. Covers generics (Go 1.18+), errors.Join and slog (Go 1.21+), and Go 1.22 loop variable semantics.

作者:admin | 来源记录:ClawHub
登记来源
ClawHub
版本
V 2.3.0
检测标记
后台标记通过
免费
免费获取
0
收藏
来源与检测标记为平台登记信息,并不代表已展示可复核的检测报告。使用前请核对版本、依赖和所需权限,建议先在隔离环境中运行。
概述
安装方式
版本历史

Go代码审查

Go 代码审查

审查工作流程

按以下顺序操作,以避免误报并捕获特定版本的问题:

  1. 1. 检查 go.mod — 记录 Go 版本。这决定了哪些模式适用(循环变量捕获仅在 1.22 版本之前是问题,slog 从 1.21 版本可用,errors.Join 从 1.20 版本可用)。跳过不适用的版本限制检查。
  2. 扫描变更文件 — 阅读完整函数,而不仅仅是差异。许多 Go 错误隐藏在变更周围的代码中。
  3. 检查每个类别 — 按照下面的检查清单逐一检查,根据需要加载参考资料。
  4. 提交前验证 — 在提交发现结果之前,加载 beagle-go:review-verification-protocol。

输出格式

按以下格式报告发现结果:

text
[FILE:LINE] ISSUE_TITLE
严重级别:严重 | 主要 | 次要 | 参考信息
问题描述及其重要性说明。

快速参考

问题类型参考资料
缺少错误检查、错误包装、errors.Joinreferences/error-handling.md
竞态条件、通道误用、goroutine 生命周期
references/concurrency.md | | 接口污染、命名、泛型 | references/interfaces.md | | 资源泄漏、defer 误用、slog、命名 | references/common-mistakes.md |

审查检查清单

错误处理

  • - [ ] 所有错误都已检查(没有未经注释说明的 _ = err)
  • [ ] 错误已附带上下文进行包装(fmt.Errorf(...: %w, err))
  • [ ] 使用 errors.Is/errors.As 而非字符串匹配
  • [ ] 使用 errors.Join 聚合多个错误(Go 1.20+)
  • [ ] 返回错误时同时返回零值

并发

  • - [ ] 没有 goroutine 泄漏(存在上下文取消或关闭信号)
  • [ ] 通道仅由发送方关闭,且仅关闭一次
  • [ ] 共享状态受互斥锁或同步类型保护
  • [ ] 使用 WaitGroup 等待 goroutine 完成
  • [ ] 上下文通过调用链传播
  • [ ] 循环变量捕获已处理(仅限 Go 1.22 之前的代码库)

接口和类型

  • - [ ] 接口由消费者定义,而非生产者
  • [ ] 接口名称遵循 -er 约定
  • [ ] 接口最小化(1-3 个方法)
  • [ ] 构造函数返回具体类型
  • [ ] 优先使用 any 而非 interface{}(Go 1.18+)
  • [ ] 在适当情况下使用泛型替代 any 或代码生成

资源和生命周期

  • - [ ] 资源在创建后立即使用 defer 关闭
  • [ ] HTTP 响应体始终关闭
  • [ ] 循环中没有未包裹闭包的 defer
  • [ ] 避免使用 init() 函数,优先使用显式初始化

命名和风格

  • - [ ] 导出的名称有文档注释
  • [ ] 没有重复命名(user.UserService → user.Service)
  • [ ] 超过 5 行的函数没有裸返回
  • [ ] 上下文作为第一个参数传递
  • [ ] 使用 slog 而非 log 进行结构化日志记录(Go 1.21+)

严重级别校准

严重(阻止合并)

  • - I/O、网络或数据库操作中未检查的错误
  • Goroutine 泄漏(无关闭路径)
  • 共享状态的竞态条件(无同步的并发 map 访问)
  • 无限制的资源累积(循环中的 defer、未关闭的连接)

主要(应修复)

  • - 返回错误时没有上下文(裸 return err)
  • 缺少对生成的 goroutine 的 WaitGroup
  • 对可恢复错误使用 panic
  • 上下文未传播到下游调用

次要(考虑修复)

  • - 在 Go 1.18+ 代码库中使用 interface{} 而非 any
  • 导出的内容缺少文档注释
  • 重复命名
  • 已知大小但未预分配的切片

参考信息(仅作记录)

  • - 建议在存在代码生成的地方添加泛型
  • 接口设计的重构思路
  • 未经测量影响的性能优化

何时加载参考资料

  • - 审查错误返回模式 → error-handling.md
  • 审查 goroutine、通道或同步类型 → concurrency.md
  • 审查类型定义、接口或泛型 → interfaces.md
  • 一般审查(资源、命名、init、性能) → common-mistakes.md

有效模式(请勿标记)

这些是可接受的 Go 模式——报告它们会浪费开发人员时间:

  • - _ = err 附带原因注释 — 有意忽略的错误并附有解释
  • 空接口 / any — 用于真正的泛型代码或与无类型 API 的互操作
  • 短函数中的裸返回 — 在少于 5 行且有命名返回值的函数中可接受
  • 未关闭的通道 — 当消费者通过上下文取消而非通道关闭停止时
  • 互斥锁保护结构体字段 — 即使仅通过方法访问,这也是正确的封装
  • 带有原因的 //nolint 指令 — 附有解释时可接受
  • 循环中的 defer — 当函数作用域清理是有意为之(例如,批量处理文件)
  • 函数选项模式 — type Option func(T) 配合 With 构造函数是惯用写法
  • 热路径中的 sync.Pool — 用于减少性能关键代码中的分配压力,可接受
  • main/测试中的 context.Background() — 顶层调用的有效根上下文
  • 带 default 的 select — 非阻塞通道操作,有意为之的模式
  • 小作用域中的短变量名 — i、err、ctx、ok 是 Go 的惯用写法

上下文相关规则

仅在特定条件适用时标记这些问题:

问题仅在以下情况标记
缺少错误检查错误返回值是可操作的(可以重试、记录或传播)
Goroutine 泄漏
goroutine 不存在上下文取消路径 |
| 缺少 defer | 资源在下一次获取或返回前未显式关闭 |
| 接口污染 | 接口有 > 1 个方法且只有一个消费者 |
| 循环变量捕获 | go.mod 指定 Go < 1.22 |
| 缺少 slog | go.mod 指定 Go >= 1.21 且代码使用 log 包进行结构化输出 |

提交发现结果前

在报告任何问题之前,加载并遵循 review-verification-protocol。

标签

skill ai

通过对话安装

以下为平台配置的接入选项,并非逐项实测通过。能否安装取决于客户端支持、技能来源和运行环境:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 go-code-review-1776097441 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 go-code-review-1776097441 技能

通过命令行安装

skillhub install go-code-review-1776097441

下载

⬇ 下载 go-code-review v2.3.0(免费)

文件大小: 13.22 KB | 发布时间: 2026-4-14 14:37

v2.3.0 最新 2026-4-14 14:37
- Major update to SKILL.md: clearer workflow, severity definitions, and context-sensitive review criteria for Go code.
- Review process now requires checking `go.mod` for Go version to adjust rules for generics, slog, and loop variable capture.
- Expanded and categorized the review checklist: error handling, concurrency, interfaces/types, resource management, and naming/style.
- Severity and output format standardized; includes precise calibration for critical, major, minor, and informational findings.
- Lists valid Go patterns explicitly to avoid false positives and wasted review effort.
- Emphasizes verifying findings via review-verification-protocol before reporting.
返回顶部