Skip to main content

code-review

多语言代码审查框架:通用审查流程加语言特定规则,输出分级问题清单与报告。适用于代码审查、提交前自检、质量评估、安全与性能专项检查。

Source facts

Repository
hellyguo/self-ai-spec
Last source activity
October 26, 2026 at 14:15
Detected SKILL.md language
Chinese
Stars
8
Forks
0

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

File Explorer
5 files

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
code-review
description
多语言代码审查框架:通用审查流程加语言特定规则,输出分级问题清单与报告。适用于代码审查、提交前自检、质量评估、安全与性能专项检查。
# 代码审查框架 **审查原则**:理性、客观、实际、真实、不恭维、实事求是 ## 概述 基于模块化设计的代码审查框架: 1. **通用审查流程**:所有语言通用的审查步骤和原则 2. **语言规则引用**:按需加载语言特定审查规则 3. **组合审查支持**:支持多语言混合项目 **优势**:减少LLM上下文负担(按需加载)、维护简单、扩展灵活、复用性强。 ## 语言支持 ### 直接源码文件 | 语言 | 文件类型 | 编码规范 | 审查规则 | |------------|-------------------------------|-------------------|----------------------| | Java | `*.java` | `spec.java.md` | `review.java.md` | | Python | `*.py` | `spec.python.md` | `review.python.md` | | C++ | `*.cpp *.hpp *.cxx *.hxx *.h` | `spec.cpp.md` | `review.cpp.md` | | Rust | `*.rs` | `spec.rust.md` | `review.rust.md` | | Kotlin | `*.kt *.kts` | `spec.kotlin.md` | `review.kotlin.md` | | ANSI C | `*.c *.h` | `spec.ansi_c.md` | `review.ansi_c.md` | | JavaScript | `*.js *.mjs *.cjs` | `spec.js.md` | `review.js.md` | | TypeScript | `*.ts *.tsx *.mts *.cts` | `spec.js.md` | `review.js.md` | | Shell | `*.sh *.bash *.zsh` | `spec.shell.md` | `review.shell.md` | **加载指令**: ```text Read ${AI_SPEC_ROOT}/lang-spec/spec.{lang}.md Read ${AI_SPEC_ROOT}/lang-spec/review.{lang}.md ``` ### SQL 来源(需拼接提取) | 来源类型 | 文件/位置 | 审查要点 | |----------------|------------------|--------------------| | SQL文件 | `*.sql` | SQL注入、性能、索引| | MyBatis Mapper | `**/*Mapper.xml` | `$`符号拼接风险 | | 内嵌SQL | 各种源码 | 正则匹配审查 | ## 审查模式 ### 1. 全量审查(默认) 遍历项目所有源代码文件,自动识别语言并加载对应规则。 ### 2. 增量审查 根据 git/svn diff 进行增量审查。 ### 3. 混合语言审查 对于多语言项目,按文件类型加载不同规则。 ## 审查流程 1. **项目分析**:识别技术栈、主要语言、项目结构 2. **规则加载**:根据语言加载对应规则集,应用通用审查框架 3. **代码遍历**:遍历所有源代码文件,理解代码结构和意图 4. **执行审查**:应用通用规则 + 语言特定规则,记录问题和建议 5. **生成报告**:汇总结果,输出审查报告 ## 严重度分级 所有语言审查规则、报告模板统一使用以下三级口径,语言文件中的等价表述按此映射: | 级别 | 别名 | 判定标准 | 处理要求 | |------|------|----------|----------| | P0 | 严重 / 必须修正 / 高优先级 | 安全漏洞、数据错误、崩溃、资源泄漏、主流程阻塞 | 本次修改必须修复 | | P1 | 警告 / 应当修正 / 中优先级 | 性能隐患、可维护性问题、边界处理缺失 | 下次迭代修复并登记 | | P2 | 建议 / 建议改进 / 低优先级 | 风格、命名、可读性、可选优化 | 选择性修复 | 判定原则: 1. 同一问题命中多个级别时取最高级。 2. 严重度只由问题影响决定,不由修复难度决定。 3. 报告必须给出级别,模糊表述(如"建议关注")不允许作为级别。 ## 通用审查规则 ### 安全规则 - **敏感信息泄露**:硬编码的密码、密钥、API Key - **SQL注入风险**:字符串拼接的SQL语句 - **XSS漏洞**:用户输入未转义 - **敏感数据内存残留**:内存中敏感数据未安全清除 ### 中间件消息追踪规则(强制) - **消息通道清单**:检索所有中间件的 Topic/Group/Queue 名称 - **跨应用数据流**:追踪数据在应用间的流动路径(生产者→消费者) - **幽灵通道检测**:只有生产者没有消费者的 Topic/Queue - **孤儿通道检测**:只有消费者没有生产者的 Topic/Queue - **消息体格式记录**:记录消息体关键字段和结构 ### 性能规则 - **资源泄漏**:文件句柄、数据库连接、网络连接未关闭 - **内存泄漏**:动态分配的内存未释放 - **循环性能**:嵌套循环、N+1查询 - **对象创建**:循环中不必要的对象实例化 ### 代码质量规则 - **重复代码**、**方法长度**(> 50行)、**圈复杂度**、**命名规范** - **变量声明**(高优先级):禁止单行多声明(如 `int a, b;`、`const a = 1, b = 2;`),每个变量独占一行;适用于所有语言 - **文件长度**(建议 > 500 行拆分,强制 > 1000 行必须拆分);若存在结构性阻碍(如强耦合的状态共享),需在报告中明确说明原因 ### 并发安全规则 - **线程安全**、**死锁风险**、**优雅退出** ### 坏味道分类 详见 [templates/code-smells.md](templates/code-smells.md):8 大类 50+ 种。 ### AI 生成代码特有审查 **必查项**:安全漏洞、零测试覆盖、性能陷阱 **建议项**:代码规范、错误处理、配置管理 **可忽略项**:个人风格差异 关键检查点:零测试覆盖、过度复杂化、魔法字符串/数字、缺少错误处理、性能陷阱、安全漏洞、硬编码配置、不符合团队规范、注释质量、过度抽象。 ### 数据库审查规则 详见 [templates/database-review.md](templates/database-review.md):SQL安全性、SQL性能、表结构设计、数据库架构。 ## 审查输出 > 本文件中的 `templates/...` 均指本技能目录下的 `templates/` 子目录。 ### 文件命名规范 ```text docs/review/code-review-{yyyymmdd}-{seq%000}-{lang}.md ``` ### 报告模板 详见 [templates/report-full.md](templates/report-full.md) ### 语言规则文件模板 详见 [templates/lang-rule.md](templates/lang-rule.md) ## 审查执行器 ### 单语言项目 1. 加载语言规则:`Read ${AI_SPEC_ROOT}/lang-spec/spec.{lang}.md` 与 `Read ${AI_SPEC_ROOT}/lang-spec/review.{lang}.md` 2. 应用通用框架(安全/性能/代码质量审查) 3. 应用语言特定规则(语法/最佳实践/并发模式) 4. 生成报告:`docs/review/code-review-{yyyymmdd}-{seq%000}.md` ### 多语言项目 按文件类型分组,每组加载对应语言规则后执行审查。 ## 扩展和维护 ### 新增语言支持 1. 创建规则文件:`${AI_SPEC_ROOT}/lang-spec/spec.{new_lang}.md` 2. 更新本文件"语言支持"部分 ### 规则更新 - 语言规则独立更新,互不影响 - 通用框架独立更新,所有语言受益 - 向后兼容 ## 最佳实践 - **上下文优化**:按需加载语言规则,缓存常用规则 - **规则设计**:语言规则聚焦特有内容,通用规则放框架 - **审查效率**:优先严重问题,批量处理相同模式 - **报告质量**:问题定位到文件路径:行号,区分严重等级 ## AST 自动审查 具体规则不在本框架重复维护,按场景选择入口: | 场景 | 入口 | 说明 | | :--- | :--- | :--- | | 提交/合并门禁、批量扫描 | skill `ast-grep-block` | code-checklist 规则集、分级统计、CI 退出码 | | 交互式抽查、单规则调试 | `ast-grep-mcp` 的 `find_code_by_rule` | 审查过程中查看命中上下文 | | SQL 拼接点抽取 | skill `sql-extract` | MCP 与 CLI 两种模式 | - 规则配方:`${AI_SPEC_ROOT}/skills/ast-grep-block/templates/recipes.md` - MCP 限制:不支持 XML(MyBatis Mapper 用 rg 兜底);不支持 `--globs` 排除目录;超大项目需分目录搜索或回退 CLI。 - 命中结果必须人工复核,排除误报后按 P0/P1/P2 归级写入报告。 ## 与其他技能集成 | 技能 | 用途 | |----------------------|------------------| | `lets-loop` | 循环性能专项审查 | | `code-detect-dup` | 重复代码专项检测 | | `code-detect-problem`| 项目层面问题检测 | | `sql-extract` | SQL 注入风险点抽取(ast-grep-mcp 联动) |
View on GitHub