代码审查专家
下载地址
https://www.zhengdianxue.com/wp-content/uploads/skills/org-4t2cid8m--code-review-expert-1.zip将提示词发送给你的 AI 安装该 skills
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-4t2cid8m/code-review-expert-1。专业的代码审查工具,支持Python/JavaScript/TypeScript/Java/Go多语言。自动检测安全漏洞、性能问题、代码重复和最佳实践违规,生成详细审查报告。
阅读全文 (展开查看完整说明)
概述
一、核心能力
对源代码进行多维度专业审查,输出可操作的结构化报告,覆盖:
- 语法与规范:代码风格、命名规范、格式问题
- 安全扫描:常见漏洞、敏感信息、不安全API
- 性能分析:复杂度、内存、I/O、并发瓶颈
- 可读性:命名、注释、结构、抽象层次
- 可维护性:耦合度、重复代码、测试覆盖、扩展性
- 最佳实践:设计模式、SOLID原则、语言惯用法
支持语言:Python / JavaScript / TypeScript / Java / Go / Rust / C++ / PHP / Ruby / Swift / Kotlin(核心支持前5种)。
二、五阶段审查流程
阶段 1:语法检查 (Syntax Check)
目标:发现明显错误和规范偏离。
检查项:
| 检查项 | 说明 | 严重度 |
|---|---|---|
| 语法错误 | 无法编译/解释的代码 | 致命 |
| 缩进/格式 | 与团队规范不一致 | 提示 |
| 命名规范 | 变量/函数/类的命名是否符合规范 | 警告 |
| 导入顺序 | import 是否有序、无未使用 | 提示 |
| 文件编码 | 是否统一 UTF-8 | 提示 |
| 行尾空格 | 是否有多余空格 | 提示 |
| 文件末尾 | 是否有空行 | 提示 |
语言对应工具:
| 语言 | 工具 |
|---|---|
| Python | pycodestyle, flake8, black –check |
| JavaScript/TypeScript | ESLint, Prettier |
| Java | Checkstyle, SpotBugs |
| Go | gofmt, go vet, golangci-lint |
| Rust | rustfmt, clippy |
阶段 2:安全扫描 (Security Scan)
目标:发现潜在安全漏洞。
检查清单(详见 references/checklist.md 的安全部分):
| 漏洞类型 | 检测方式 |
|---|---|
| SQL 注入 | 检测字符串拼接的SQL语句 |
| XSS | 检测未转义的HTML输出 |
| 命令注入 | 检测 exec/system 调用的变量拼接 |
| 路径穿越 | 检测文件路径的用户输入拼接 |
| 硬编码密钥 | 检测代码中的密码、Token、API Key |
| 不安全反序列化 | 检测 pickle/yaml.load/eval |
| 弱加密 | 检测 MD5、SHA1、ECB 模式 |
| 不安全随机数 | 检测 random 模块用于安全场景 |
| SSRF | 检测未限制的HTTP请求URL |
| XXE | 检测XML解析器配置 |
| 敏感信息日志 | 检测日志中的密码、Token |
| 权限绕过 | 检测未校验的鉴权 |
严重度分级:
| 等级 | 说明 | 处置时限 |
|---|---|---|
| 致命 (Critical) | 可直接被利用的RCE/SQLi/认证绕过 | 立即修复 |
| 高危 (High) | 可能导致数据泄露/权限提升 | 24小时内 |
| 中危 (Medium) | 需特定条件才能利用 | 一周内 |
| 低危 (Low) | 信息泄露/最佳实践偏离 | 下个迭代 |
| 提示 (Info) | 加固建议 | 视情况 |
阶段 3:性能分析 (Performance Analysis)
目标:识别性能瓶颈。
检查项:
| 类别 | 检查内容 |
|---|---|
| 时间复杂度 | 循环嵌套、递归深度、排序算法选择 |
| 空间复杂度 | 大对象创建、内存泄漏、缓存策略 |
| I/O 优化 | 数据库N+1查询、文件读写批量、网络请求并发 |
| 并发问题 | 死锁、竞态条件、锁粒度 |
| 数据库 | 缺索引、SELECT *、大事务、慢查询 |
| 缓存 | 缓存命中率、缓存穿透/雪崩、TTL设置 |
| 资源泄漏 | 未关闭的文件/连接/句柄 |
| 算法选择 | 是否有更优算法 |
常见反模式(详见 references/patterns.md):
- N+1 查询
- 循环内做I/O
- 同步阻塞调用
- 大对象深拷贝
- 字符串拼接(替代StringBuilder)
- 全表扫描
- 缺失索引
- 锁粒度过大
阶段 4:最佳实践 (Best Practices)
目标:对照行业最佳实践与设计原则。
检查维度:
| 维度 | 关注点 |
|---|---|
| SOLID 原则 | 单一职责、开闭、里氏替换、接口隔离、依赖倒置 |
| DRY | 是否有重复代码可抽取 |
| KISS | 是否过度设计 |
| YAGNI | 是否有未使用的功能代码 |
| 设计模式 | 是否合理使用模式(避免滥用) |
| 错误处理 | 异常捕获是否过宽、是否有降级 |
| 日志规范 | 日志级别、上下文、敏感信息 |
| 测试覆盖 | 单元测试、边界用例、Mock使用 |
| API 设计 | RESTful、参数校验、版本管理 |
| 配置管理 | 硬编码、环境变量、配置中心 |
阶段 5:报告生成 (Report)
输出结构化报告,详见"五、报告格式"。
三、核心决策表
决策表 A:严重度评估
| 问题类型 | 影响范围 | 严重度 |
|---|---|---|
| 语法错误 | 阻断运行 | 致命 |
| 安全漏洞(RCE/SQLi) | 可被远程利用 | 致命 |
| 安全漏洞(XSS/CSRF) | 影响用户 | 高 |
| 数据丢失风险 | 业务数据 | 高 |
| 性能瓶颈(核心链路) | 用户体验 | 高 |
| 性能瓶颈(非核心) | 资源浪费 | 中 |
| 命名不规范 | 可读性 | 低 |
| 重复代码 | 可维护性 | 中 |
| 缺失测试 | 长期质量 | 中 |
| 注释缺失 | 可读性 | 低 |
| 最佳实践偏离 | 代码风格 | 提示 |
决策表 B:审查深度选择
| 代码量 | 推荐深度 | 耗时 |
|---|---|---|
| < 100 行 | 全量深度审查 | 5-10分钟 |
| 100-500 行 | 全量深度审查 | 15-30分钟 |
| 500-2000 行 | 重点审查(安全+性能) | 30-60分钟 |
| 2000-10000 行 | 抽样审查 + 工具扫描 | 1-2小时 |
| > 10000 行 | 工具扫描 + 重点模块审查 | 2小时+ |
决策表 C:审查策略选择
| 场景 | 推荐策略 |
|---|---|
| MR/PR 代码评审 | 重点关注 diff,对照变更影响 |
| 新项目首次审查 | 全量基线审查,建立规范 |
| 上线前审查 | 安全+性能为重,可读性次之 |
| 重构后审查 | 关注是否引入回归 |
| 接手老代码 | 重点可维护性 + 安全 |
| 性能优化 | 重点性能 + 数据库 |
| 安全合规 | 重点安全 + 日志审计 |
决策表 D:是否阻断合并
| 问题严重度 | 是否阻断 | 备注 |
|---|---|---|
| 致命 | ✅ 阻断 | 必须修复后才能合并 |
| 高危 | ✅ 阻断 | 除非有紧急上线豁免 |
| 中危 | ❌ 不阻断 | 但需创建修复任务 |
| 低危 | ❌ 不阻断 | 建议下个迭代修复 |
| 提示 | ❌ 不阻断 | 知会作者即可 |
四、安全规则(审查红线)
- 不修改代码:审查工具只读,不直接修改被审查代码
- 不漏报安全:发现疑似安全问题必须报告,宁错报不漏报
- 不夸大问题:避免将提示级问题报告为高危
- 保护敏感信息:报告中不展示完整密钥、Token,用
***脱敏 - 客观中立:基于代码事实,不带个人偏好
- 提供修复建议:每个问题必须有可操作的修复方案
- 标注位置:每个问题必须给出文件路径+行号
- 尊重作者:用建议性语言,不用贬低措辞
五、报告格式
完整审查报告采用以下结构:
# 代码审查报告
## 一、概览
- 文件数:xx
- 代码行数:xx
- 审查时长:xx 分钟
- 总体评分:xx/100
- 严重度分布:
- 致命:x 个
- 高危:x 个
- 中危:x 个
- 低危:x 个
- 提示:x 个
## 二、致命问题(必须立即修复)
### Issue #1: SQL注入风险
- 文件:`src/db/queries.py:42`
- 严重度:致命
- 描述:使用字符串拼接构造SQL语句,可被注入
- 问题代码:
```python
query = f"SELECT * FROM users WHERE name = '{name}'"- 修复建议:使用参数化查询
cursor.execute("SELECT * FROM users WHERE name = ?", (name,))三、高危问题
…
四、中危问题
…
五、低危问题
…
六、提示
…
七、性能分析
- 复杂度问题:xx 处
- I/O 优化:xx 处
- 数据库问题:xx 处
- 资源泄漏:xx 处
八、最佳实践偏离
- SOLID 原则违反:xx 处
- DRY 违反:xx 处
- 设计模式滥用:xx 处
九、总体评价
- 优点:…
- 待改进:…
- 建议优先级:…
十、修复清单
- [ ] 致命 #1:xxx
- [ ] 高危 #1:xxx
- [ ] …
## 六、与脚本协作
`scripts/analyze.py` 提供以下命令:
- `python analyze.py --file <path>` — 分析单个文件
- `python analyze.py --dir <dir>` — 分析整个目录
- `python analyze.py --diff <file>` — 分析Git diff
- `python analyze.py --metrics <file>` — 输出复杂度指标
- `python analyze.py --security <file>` — 仅安全扫描
- `python analyze.py --report <file> -o report.md` — 生成完整报告
脚本输出的指标包括:
- `complexity`:圈复杂度(>15 视为过高)
- `duplication`:重复代码率
- `function_count`:函数数量
- `max_nesting`:最大嵌套深度
- `long_lines`:长行数量(>120字符)
- `todos`:TODO/FIXME 数量
- `security_issues`:安全问题清单
## 七、特殊场景处理
### 7.1 Git MR/PR 审查
- 只审查 diff 部分,但分析上下文
- 重点关注:新增代码的安全、性能
- 检查是否引入新的依赖
- 检查是否有调试代码遗留
- 检查测试是否同步更新
### 7.2 老代码审查
- 不强求符合最新规范
- 重点关注:安全漏洞、数据丢失风险
- 给出渐进式重构建议
- 标注"技术债"供后续处理
### 7.3 性能敏感代码
- 算法复杂度必查
- 内存分配必查
- 锁粒度必查
- I/O 是否批量
- 是否有缓存机会
### 7.4 安全敏感代码
- 涉及用户输入:必查注入
- 涉及鉴权:必查绕过
- 涉及加密:必查算法强度
- 涉及文件操作:必查路径穿越
- 涉及网络请求:必查SSRF
### 7.5 测试代码审查
- 测试是否独立(无依赖)
- 测试覆盖边界用例
- Mock 是否合理
- 断言是否充分
- 是否有测试反模式(如睡眠等待)
## 八、质量自检清单
每次输出审查报告前,逐项确认:
- [ ] 所有文件已扫描
- [ ] 致命/高危问题已逐条列出
- [ ] 每个问题有文件路径+行号
- [ ] 每个问题有修复建议
- [ ] 严重度分级合理
- [ ] 性能问题已分析
- [ ] 安全问题已扫描
- [ ] 最佳实践已对照
- [ ] 总体评价客观
- [ ] 修复清单可执行
## 九、与其他 Skill 协作
- 配合 `chinese-copy-polisher`:审查报告文字润色
- 配合 `ppt-outline-generator`:将审查结果汇报成PPT
## 十、版本记录
- v1.0.0:初始版本,五阶段流程、决策表、清单库