代码审查员
Code Reviewer
用于分析拉取请求 (PR)、检测代码质量问题并生成审查报告的自动化代码审查工具。
---
技能组织结构
code-reviewer/
SKILL.md ← 当前文件 (工具 + 分发表)
rules/
universal.md ← 通用规则:安全、异步、资源、异常、性能 — 适用于所有语言
languages/
python.md ← Python 特定规则 + 惯用法
typescript.md ← TypeScript / JavaScript 特定规则 + 惯用法
go.md ← Go 特定规则 + 惯用法
swift.md ← Swift 特定规则 + 惯用法
kotlin.md ← Kotlin 特定规则 + 惯用法
csharp.md ← C# / .NET 特定规则 + 惯用法
java.md ← Java 特定规则 + 惯用法
c.md ← C 特定规则 + 惯用法
cpp.md ← C++ 特定规则 + 惯用法
rust.md ← Rust 特定规则 + 惯用法
ruby.md ← Ruby 特定规则 + 惯用法
php.md ← PHP 特定规则 + 惯用法
dart.md ← Dart / Flutter 特定规则 + 惯用法每次审查的加载顺序
1. 本文件 (SKILL.md) — 工具与阈值
2. rules/universal.md — 始终加载,适用于所有语言
3. 匹配的 languages/*.md — 根据下方的扩展名表加载一个文件
无论范围如何,始终仅加载 2 个额外文件。
| 扩展名 | 加载文件 |
|---|---|
| .py | languages/python.md |
| .ts, .tsx, .js, .jsx, .mjs | languages/typescript.md |
| .go | languages/go.md |
| .swift | languages/swift.md |
| .kt, .kts | languages/kotlin.md |
| .cs, .csx, .razor, .cshtml | languages/csharp.md |
| .java | languages/java.md |
| .c, .h | languages/c.md |
| .cpp, .cc, .cxx, .hpp, .hh, .hxx | languages/cpp.md |
| .rs | languages/rust.md |
| .rb, .rake, .gemspec, .ru | languages/ruby.md |
| .php, .phtml | languages/php.md |
| .dart | languages/dart.md |
---
工具
PR Analyzer (PR 分析器)
分析分支间的 git diff,以评估审查复杂度并识别风险。
# 分析当前分支与 main 分支的差异
python scripts/pr_analyzer.py /path/to/repo
比较特定分支
python scripts/pr_analyzer.py . --base main --head feature-branch
输出 JSON 格式以便集成
python scripts/pr_analyzer.py /path/to/repo --json检测内容(通用 — 语言特定信号请参阅相应的语言文件):
- 硬编码的密钥(密码、API 密钥、令牌、连接字符串)
- SQL / 查询注入模式
- 遗留在生产代码中的调试语句
- Lint / 分析器抑制注解
- TODO/FIXME 注释
语言特定检测 定义在每个 languages/*.md 文件中。
输出内容包括:
- 复杂度评分 (1-10)
- 风险分级 (critical, high, medium, low)
- 审查顺序的文件优先级
- Comm
it 消息校验
---
代码质量检查器 (Code Quality Checker)
分析源代码中的结构性问题、代码异味(code smells)以及对 SOLID 原则的违背。
# 分析目录
python scripts/code_quality_checker.py /path/to/code
分析特定语言
可选值:python, typescript, javascript, go, swift, kotlin, csharp, java, c, cpp, rust, ruby, php, dart
python scripts/code_quality_checker.py . --language java
JSON 输出
python scripts/code_quality_checker.py /path/to/code --json通用阈值:
| 问题 | 阈值 |
|-------|-----------|
| 函数过长 | >50 行 |
| 文件过大 | >500 行 |
| 神类 (God class) | >20 个方法 |
| 参数过多 | >5 个 |
| 嵌套过深 | >4 层 |
| 复杂度过高 | >10 个分支 |
特定语言的检查定义在各 languages/*.md 文件中。
---
评审报告生成器 (Review Report Generator)
将 PR 分析结果和代码质量检查结果整合为结构化的评审报告。
# 为当前仓库生成报告
python scripts/review_report_generator.py /path/to/repo
Markdown 输出
python scripts/review_report_generator.py . --format markdown --output review.md
使用预计算的分析结果
python scripts/review_report_generator.py . \
--pr-analysis pr_results.json \
--quality-analysis quality_results.json判定标准:
| 分数 | 判定结果 |
|-------|---------|
| 90+ 且无高危问题 | Approve (通过) |
| 75+ 且高危问题 ≤2 个 | Approve with suggestions (通过但有建议) |
| 50-74 | Request changes (要求修改) |
| <50 或存在严重问题 | Block (拦截) |
---
添加新语言
评审指南(必填):
1. 参考现有语言文件,创建 languages/<name>.md。必须包含以下章节:PR Analyzer Signals, Code Quality Checks, Security, Async, Resource Management, Exception Handling, Performance, Idioms。
2. 在上方的分发表中添加对应的扩展名行。
以上是 Agent 驱动评审所需的全部内容。
确定性分析器支持(可选,推荐): 随附的脚本仅标记其明确识别的语言。若要使 code_quality_checker.py 支持对新语言的评分:
3. 在 scripts/code_quality_checker.py 的 LANGUAGE_EXTENSIONS 中添加扩展名(这也会将其添加到 --language 选项中)。
4. 在同一文件中为该语言添加 function / class / method 的正则表达式条目;否则将回退到 Python 模式。
5. (可选)添加 check_<name>_specific_smells(...) 检测器(参考 C#、Java 和 C 的实现),并在 analyze_file 中调用它。
6. 添加 assets/sample_<name>_smells.<ext> 和 _clean 测试用例,并将预期的 --json 输出提交至 expected_outputs/ 目录,作为回归测试保障。
---
回归测试用例 (Regression Fixtures)
带标签的测试用例存放在 assets/ 中,其提交的 --json 输出存放在 expected_outputs/ 中(如 C#、Java 和 C)。如果输出与提交的 JSON 不一致,则表明分析器的行为发生了变化:
python scripts/code_quality_checker.py assets/sample_java_smells.java --json \
| diff - expected_outputs/sample_java_smells_quality.json