返回顶部
g

go-code-reviewGo代码审查

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
安全检测
已通过
124
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

go-code-review

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.

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部