--- name: comment-enforcer description: Go 代码注释规范检查与修复工具。自动化检查注释格式、术语一致性、包级别注释规范,利用大模型进行语义分析和注释生成,确保项目注释符合专业标准。 --- # Go 代码注释规范检查器 ## 概述 自动化检查和修复 Go 项目代码注释规范性,基于项目注释规范(.ai/rule.md.bak),结合脚本检查和大模型语义分析,确保注释的专业性、准确性和一致性。 **自动化策略**:60% 大模型(语义分析、注释生成)+ 40% 脚本(格式检查、术语一致性) ## 使用场景 - **新项目规范检查** - 检查新项目注释是否符合规范 - **代码审查辅助** - 快速发现注释问题并提供修复建议 - **批量注释生成** - 为缺失的注释生成符合规范的内容 - **术语一致性检查** - 确保全项目注释术语使用统一 - **代码重构验证** - 重构后验证注释是否需要更新 ## 快速开始 ### 一键检查(推荐) ```bash # 1. 格式检查(脚本) python3 .claude/skills/comment-enforcer/scripts/check_format.py # 2. 术语一致性检查(脚本) python3 .claude/skills/comment-enforcer/scripts/check_terminology.py # 3. 包级别注释检查(脚本) python3 .claude/skills/comment-enforcer/scripts/check_pkg_doc.py # 4. 大模型语义分析 python3 .claude/skills/comment-enforcer/scripts/analyze_with_llm.py # 5. 生成检查报告 python3 .claude/skills/comment-enforcer/scripts/generate_report.py # 6. 执行修复(用户确认后) python3 .claude/skills/comment-enforcer/scripts/fix_comment.py report.md ``` ### 快速检查模式 ```bash # 只执行脚本检查(快速,无大模型) python3 .claude/skills/comment-enforcer/scripts/check_format.py python3 .claude/skills/comment-enforcer/scripts/check_terminology.py python3 .claude/skills/comment-enforcer/scripts/check_pkg_doc.py ``` ## 工作流程 ### 阶段 1:脚本检查(40% 自动化) **目标**:快速发现格式和术语问题 **时间**:1-2 分钟 **检查内容**: ``` 开始 ↓ 1. 格式检查 [check_format.py] ├─ 注释是否存在 ├─ 是否以中文标点结束 ├─ 位置是否正确(在声明上方) └─ 统计缺失注释的数量 ↓ 2. 术语一致性检查 [check_terminology.py] ├─ 全局搜索 context.Context ├─ 全局搜索 *Config ├─ 全局搜索 Logger └─ 比对注释表述是否一致 ↓ 3. 包级别注释检查 [check_pkg_doc.py] ├─ 检查每个包是否有 doc.go ├─ 验证 doc.go 格式 └─ 检查非 doc.go 文件是否包含包注释 ↓ 完成(输出 JSON 结果) ``` --- ### 阶段 2:大模型分析(60% 智能化) **目标**:语义分析和注释生成 **时间**:3-5 分钟(取决于代码量) **分析内容**: ``` 开始 ↓ 1. Interface 一致性检查 ├─ 读取接口定义 ├─ 读取实现方法 ├─ 比对注释是否一致 └─ 报告不一致的地方 ↓ 2. 语义准确性判断 ├─ 分析代码逻辑 ├─ 判断注释是否准确反映功能 └─ 识别需要改进的注释 ↓ 3. 注释内容生成 ├─ 识别缺失的注释 ├─ 分析代码上下文 └─ 生成符合规范的注释 ↓ 完成(输出 JSON 结果) ``` --- ### 阶段 3:报告生成 **目标**:整合所有检查结果,生成可操作的报告 **输出格式**:Markdown 格式,包含: - 总览统计 - 分类问题列表(格式、术语、语义) - 每个问题的详细说明和解决方案 - 复选框用于二次确认 --- ### 阶段 4:修复执行 **原则**:二次确认机制,不自动修改代码 **流程**: ``` 1. 执行检查(脚本 + 大模型) 2. 生成报告 3. 用户审查报告 4. 用户勾选需要修复的问题 5. 执行修复 ├─ 脚本修复格式问题 ├─ 大模型生成缺失注释 └─ 大模型改进不准确的注释 6. 验证修复结果 ``` ## 脚本说明 ### check_format.py - 格式检查器 **功能**: - 检查注释是否存在 - 检查注释是否以中文标点结束 - 检查注释位置是否正确(在声明上方) - 统计缺失注释的数量 **用法**: ```bash # 检查整个项目 python3 .claude/skills/comment-enforcer/scripts/check_format.py # 检查特定目录 python3 .claude/skills/comment-enforcer/scripts/check_format.py internal/biz # 检查特定文件 python3 .claude/skills/comment-enforcer/scripts/check_format.py internal/biz/greeter.go ``` **输出示例**: ```json { "total_files": 45, "files_with_issues": 12, "issues": [ { "file": "internal/server/server.go", "line": 45, "type": "missing_punctuation", "current": "// 这是一个示例函数", "suggested": "// 这是一个示例函数。", "auto_fixable": true }, { "file": "internal/data/greeter.go", "line": 89, "type": "missing_comment", "item": "func Save", "auto_fixable": false } ] } ``` **自动化程度**:100% 脚本自动化 --- ### check_terminology.py - 术语一致性检查器 **功能**: - 全局搜索特定类型(如 `context.Context`) - 提取所有相关注释 - 比对注释表述是否一致 - 报告不一致的地方 **用法**: ```bash # 检查所有标准术语 python3 .claude/skills/comment-enforcer/scripts/check_terminology.py # 检查特定类型 python3 .claude/skills/comment-enforcer/scripts/check_terminology.py --type context.Context # 自定义标准表述 python3 .claude/skills/comment-enforcer/scripts/check_terminology.py \ --type context.Context \ --standard "请求上下文,用于取消与超时控制。" ``` **输出示例**: ```json { "context.Context": { "standard": "请求上下文,用于取消与超时控制。", "variations": [ { "text": "上下文对象", "count": 3, "files": [ "internal/biz/greeter.go:89", "internal/data/data.go:45", "internal/service/service.go:123" ] }, { "text": "请求上下文", "count": 1, "files": ["internal/server/server.go:67"] } ], "total_inconsistent": 4 } } ``` **自动化程度**:100% 脚本自动化 --- ### check_pkg_doc.py - 包级别注释检查器 **功能**: - 检查每个包目录是否存在 `doc.go` 文件 - 验证 `doc.go` 格式是否正确 - 检查是否有非 `doc.go` 文件包含包级别注释 **用法**: ```bash # 检查所有包 python3 .claude/skills/comment-enforcer/scripts/check_pkg_doc.py # 检查特定目录 python3 .claude/skills/comment-enforcer/scripts/check_pkg_doc.py internal/ ``` **输出示例**: ```json { "total_packages": 15, "packages_with_doc": 12, "packages_missing_doc": [ { "package": "internal/biz", "path": "internal/biz", "suggestion": "创建 internal/biz/doc.go" } ], "files_with_pkg_comment": [ { "file": "internal/server/http.go", "line": 10, "comment": "// Package server 提供 HTTP 服务器实现", "suggestion": "移动到 doc.go 文件" } ] } ``` **自动化程度**:100% 脚本自动化 --- ### analyze_with_llm.py - 大模型语义分析器 **功能**: - 检查 interface 实现方法的注释是否与接口定义一致 - 判断注释是否准确反映代码功能 - 识别需要改进的注释(过于简略、不准确) - 为缺失的注释生成符合规范的内容 **用法**: ```bash # 分析整个项目 python3 .claude/skills/comment-enforcer/scripts/analyze_with_llm.py # 分析特定文件 python3 .claude/skills/comment-enforcer/scripts/analyze_with_llm.py \ internal/service/greeter.go # 只分析 interface 一致性 python3 .claude/skills/comment-enforcer/scripts/analyze_with_llm.py \ --check-interface-only # 只生成缺失注释 python3 .claude/skills/comment-enforcer/scripts/analyze_with_llm.py \ --generate-only ``` **输出示例**: ```json { "analyzed_files": 45, "semantic_issues": [ { "file": "internal/data/greeter.go", "line": 123, "type": "inaccurate_comment", "current": "// 保存数据", "issue": "过于简略,未说明具体操作和数据类型", "suggested": "// Save 保存 Greeter 实体到数据库。", "reason": "需要明确操作类型(Save)、对象(Greeter)和目标(数据库)" } ], "interface_mismatches": [ { "file": "internal/service/greeter.go", "line": 45, "interface_def": "// Create 创建一个新的 Greeter 实体。", "implementation": "// CreateGreeter 创建 Greeter。", "suggested": "统一为'创建一个新的 Greeter 实体。'" } ], "missing_comments": [ { "file": "internal/domain/greeter.go", "line": 12, "type": "type_definition", "suggested": "// Greeter Greeter 领域模型。" } ] } ``` **自动化程度**: - 代码分析:100% 大模型 - 报告生成:脚本格式化输出 --- ### generate_report.py - 报告生成器 **功能**: - 整合所有检查结果 - 生成结构化的 Markdown 报告 - 提供符合规范的解决方案 - 汇总统计信息 **用法**: ```bash # 生成完整报告(整合所有检查结果) python3 .claude/skills/comment-enforcer/scripts/generate_report.py # 指定输出文件 python3 .claude/skills/comment-enforcer/scripts/generate_report.py \ --output comment-report.md # 从已有结果文件生成报告 python3 .claude/skills/comment-enforcer/scripts/generate_report.py \ --format-results format_results.json \ --terminology-results terminology_results.json \ --pkg-results pkg_results.json \ --llm-results llm_results.json ``` **报告格式**: ```markdown # 注释规范检查报告 生成时间:2026-01-06 15:30:00 检查范围:internal/, cmd/, pkg/ ## 📊 总览 - 检查文件数:45 - 发现问题:12 个 - 格式问题:5 个 - 术语一致性问题:3 个 - 语义问题:4 个 ## 1️⃣ 格式问题(脚本检查 - 可自动修复) ### 1.1 注释未以标点结束 - [ ] internal/server/server.go:45 当前:// 这是一个示例函数 建议:// 这是一个示例函数。 ### 1.2 缺少 doc.go 文件 - [ ] internal/biz/ 建议:创建 internal/biz/doc.go,添加包级别注释 示例: ```go // Copyright 2025 fsyyft-go // // Licensed under the MIT License. // // Package biz 提供业务逻辑层实现。 package biz ``` ## 2️⃣ 术语一致性问题(脚本检查 - 需手动确认) ### 2.1 context.Context 注述不一致 - [ ] internal/biz/greeter.go:89 当前:ctx 上下文对象 标准:请求上下文,用于取消与超时控制。 影响:3 处引用 建议:批量替换为标准表述 ## 3️⃣ 语义问题(大模型分析 - 需专业判断) ### 3.1 注释不够准确 - [ ] internal/data/greeter.go:123 当前注释:// 保存数据 问题:过于简略,未说明具体操作和数据类型 建议:// Save 保存 Greeter 实体到数据库。 理由:需要明确操作类型(Save)、对象(Greeter)和目标(数据库) ## 4️⃣ 缺失注释(大模型生成 - 需确认) ### 4.1 缺少类型注释 - [ ] internal/domain/greeter.go:12 当前:无注释 建议: ```go // Greeter Greeter 领域模型。 type Greeter struct { // ID 唯一标识符。 ID int64 // Hello 问候消息。 Hello string } ``` ## ✅ 下一步操作 ### 自动修复(脚本) - 格式问题:5 个可自动修复 ### 需要确认(列出清单) - 术语一致性问题:3 个 - 语义问题:4 个 - 缺失注释:生成 4 个 请确认后执行修复操作。 ``` **自动化程度**:100% 脚本自动化 --- ### fix_comment.py - 修复执行器 **功能**: - 脚本修复:格式问题(添加标点、调整位置) - 大模型生成:缺失注释的内容 - 大模型优化:改进不准确的注释 - 创建 doc.go 文件 **用法**: ```bash # 基本用法(从报告文件读取) python3 .claude/skills/comment-enforcer/scripts/fix_comment.py report.md # 预览模式(不实际修改) python3 .claude/skills/comment-enforcer/scripts/fix_comment.py \ report.md --dry-run # 只修复格式问题 python3 .claude/skills/comment-enforcer/scripts/fix_comment.py \ report.md --format-only # 只生成缺失注释 python3 .claude/skills/comment-enforcer/scripts/fix_comment.py \ report.md --generate-only ``` **安全机制**: - 修复前自动创建 `.backup/comments/` 备份 - 支持预览模式(--dry-run) - 提供回滚功能 **自动化程度**: - 格式修复:100% 脚本 - 内容生成/改进:100% 大模型 - 执行协调:脚本 ## 核心注释规范 ### 1. 包级别注释规范 **强制要求**: - 每个包必须在独立的 `doc.go` 文件中编写包级别注释 - `doc.go` 仅包含版权声明、包注释和 `package` 声明,不包含代码实现 - 除 `doc.go` 外,所有文件的 `package` 声明前后不得有任何注释 **doc.go 格式**: ```go // Copyright 2025 fsyyft-go // // Licensed under the MIT License. See LICENSE file in the project root for full license information. // Package server 提供 HTTP 和 gRPC 服务器的实现。 // // 本包包含服务器的初始化、配置和中间件设置功能, // 支持基于 Kratos 框架的 Web 服务开发。 package server ``` --- ### 2. 类型定义注释规范 **接口定义**:必须有功能说明、方法注释(含参数和返回值) **结构体定义**:每个字段必须有用途说明 **示例**: ```go // GreeterUsecase Greeter 用例接口。 type GreeterUsecase interface { // CreateGreeter 创建一个新的 Greeter 实体。 // 参数: // - ctx:请求上下文,用于取消与超时控制。 // - g:待创建的 Greeter 实体,Hello 字段不能为空。 // // 返回值: // - *Greeter:创建成功的实体,包含生成的标识。 // - error:创建失败时返回错误,成功时返回 nil。 CreateGreeter(ctx context.Context, g *Greeter) (*Greeter, error) } // Greeter Greeter 领域模型。 type Greeter struct { // ID 唯一标识符。 ID int64 // Hello 问候消息。 Hello string } ``` --- ### 3. 函数和方法注释规范 **标准格式**: ```go // CreateGreeter 创建一个新的 Greeter 实体。 // 参数: // - ctx:请求上下文,用于取消与超时控制。 // - g:待创建的 Greeter 实体,Hello 字段不能为空。 // // 返回值: // - *Greeter:创建成功的实体,包含生成的标识。 // - error:创建失败时返回错误,成功时返回 nil。 func (u *greeterUsecase) CreateGreeter(ctx context.Context, g *Greeter) (*Greeter, error) { // ... } ``` **要求**: - 第一行:功能概述(必须以中文句号结束) - 参数部分:列出每个参数及其说明 - 返回值部分:列出每个返回值及其说明 - 如果函数无参数或返回值,省略对应部分 --- ### 4. 标准术语表 | 参数类型 | 标准表述 | |---------|---------| | `context.Context` | "请求上下文,用于取消与超时控制。" | | `*Config` | "应用配置信息。" | | `Logger` | "日志记录器。" | | `*Data` | "数据仓储接口。" | | `*Greeter` | "Greeter 实体。" | | `error` 返回值 | "失败时返回错误,成功时返回 nil。" | **一致性要求**: - 所有相同类型必须使用相同的注释表述 - 使用 `check_terminology.py` 全局检查 - 发现不一致时,使用统一的标准表述 --- ## 大模型介入点 | 介入点 | 触发条件 | 大模型职责 | 介入程度 | |-------|---------|-----------|---------| | interface 一致性检查 | 分析 interface 和实现时 | 比对注释是否一致,识别不一致的地方 | 20% | | 语义准确性判断 | 分析代码和注释时 | 判断注释是否准确反映代码功能 | 30% | | 注释内容生成 | 发现缺失注释时 | 生成符合规范的专业中文注释 | 40% | | 注释改进建议 | 发现不准确注释时 | 提供更专业、更准确的表述 | 40% | | 专业术语选择 | 编写注释时 | 使用项目约定的标准术语表述 | 10% | **总体自动化程度**:60% 大模型 + 40% 脚本 --- ## 故障排除 ### 常见问题 #### 问题 1:Python 环境问题 **症状**: ``` ModuleNotFoundError: No module named 'anthropic' ``` **解决方案**: 1. 检查虚拟环境是否存在 2. 安装依赖:`pip install anthropic` 3. 或使用 python-venv-manager 创建虚拟环境 --- #### 问题 2:大模型 API 调用失败 **症状**: ``` anthropic.APIError: Invalid API key ``` **解决方案**: 1. 检查 `ANTHROPIC_API_KEY` 环境变量 2. 确认 API key 有效 3. 检查网络连接 --- #### 问题 3:报告生成失败 **症状**: ``` KeyError: 'format_results' ``` **解决方案**: 1. 确保已运行所有检查脚本 2. 检查 JSON 文件是否存在 3. 验证 JSON 文件格式是否正确 --- ### 回滚操作 **触发条件**: - 修复后发现新问题 - 不满意修复结果 - 想重新开始 **回滚方法**: ```bash # 自动回滚(使用备份) cp -r .backup/comments/* . # 或使用 Git git checkout . ``` --- ## 最佳实践 ### 检查前准备 1. **确保代码可编译** - 运行 `go build ./...` - 确保无编译错误 2. **创建分支** - 在新分支上进行修复 - 便于回滚和代码审查 3. **备份代码** - 虽然脚本会自动备份 - 但建议额外创建 Git 提交 --- ### 检查过程 1. **分步执行** - 先运行脚本检查(快速) - 再运行大模型分析(耗时) - 最后生成报告 2. **审查报告** - 仔细阅读每个问题 - 判断是否需要修复 - 勾选需要修复的项目 3. **预览修复** - 使用 `--dry-run` 预览 - 检查将要修改的内容 - 确认后再执行 --- ### 修复后处理 1. **验证修复** - 运行 `go build ./...` - 运行 `go test ./...` - 检查修复结果 2. **提交更改** - 创建清晰的 commit message - 推送到远程仓库 3. **代码审查** - 让团队成员审查 - 确保修复质量 --- ## 自动化程度 **总体自动化程度**:60% 大模型 + 40% 脚本 ### 脚本负责(40%) - ✅ 格式检查(标点、位置、存在性) - ✅ 术语一致性检查 - ✅ 包级别注释检查 - ✅ 报告生成 - ✅ 格式问题修复 ### 大模型负责(60%) - ✅ Interface 一致性检查 - ✅ 语义准确性判断 - ✅ 注释内容生成 - ✅ 注释改进建议 - ✅ 专业性保证 --- ## 技术规格 - **Go 版本**:1.16+(Go modules) - **Python 版本**:3.8+(脚本执行) - **虚拟环境**:.venv(推荐使用 python-venv-manager) - **跨平台**:Windows, macOS, Linux - **备份位置**:`.backup/comments/` 在项目根目录 - **大模型 API**:Anthropic Claude API --- ## 注意事项 1. **专业性要求** - 生成的注释必须专业准确 - 使用标准术语表述 - 保持语义一致性 2. **安全机制** - 修复前自动备份 - 支持预览模式 - 提供回滚功能 3. **性能考虑** - 大模型分析耗时较长 - 建议分步执行 - 可以只运行脚本检查 4. **二次确认** - 不自动修改代码 - 生成报告供用户审查 - 用户确认后才执行修复 --- ## 相关资源 ### 规范来源 - `.ai/rule.md.bak` - 项目注释规范原始文档 - `references/comment_standards.md` - 提取的注释规范 - `references/terminology_table.md` - 标准术语映射表 ### 示例代码 - `internal/biz/greeter.go` - 业务层示例 - `internal/server/server.go` - 服务器层示例 - `internal/service/greeter.go` - 服务层示例 ### 参考文档 - [Effective Go](https://golang.org/doc/effective_go.html#commentary) - [Go Code Review Comments](https://github.com/golang/go/wiki/CodeReviewComments) - [Kratos Framework Documentation](https://go-kratos.dev/)