| name | code-reviewer |
| description | 专业的代码审查技能,支持多语言代码的全面性能分析和质量评估。包含详细的磁盘IO、网络IO、死锁风险分析,统一的接口规范和注释标准检查。用于代码Review、性能优化建议、代码质量评估等场景。 |
Code Reviewer
专业的多语言代码审查工具,提供全面的性能分析和代码质量评估。
适用场景
- 代码Review和代码走查
- 性能瓶颈识别和优化建议
- 接口规范性检查
- 注释完整性评估
- 并发安全风险检测
- 代码质量评分
核心能力
-
性能深度分析
- 时间/空间复杂度评估
- 磁盘IO模式分析(缓冲、流式、批量)
- 网络IO分析(超时、重试、连接池、并发)
- 并发安全检测(死锁、race condition、锁粒度)
- 内存管理分析(泄漏、循环引用)
-
接口一致性检查
- 命名规范(PascalCase、camelCase、snake_case)
- 参数顺序和类型一致性
- 返回值类型统一性
- 函数签名规范性
-
注释规范检查
- 模块/类/函数注释完整性
- 参数和返回值文档
- 异常说明
- 使用示例
-
综合质量评估
- 错误处理健壮性
- 代码风格和复杂度
- 安全性检查
- 综合评分和等级
使用方法
标准Review流程
1. 读取待Review的代码文件
2. 分析代码结构和功能
3. 按维度进行详细检查
4. 生成结构化Review报告
报告格式
支持两种输出格式:
Markdown报告(默认):assets/report-template.md
JSON报告:
- 结构化数据便于后续处理
- 包含完整的评分维度和问题详情
Review维度详解
1. 接口一致性
检查命名规范、参数一致性、返回值一致性。
参考:references/code-quality-checklist.md 第1节
2. 注释规范
检查模块注释、类注释、函数注释、内联注释。
参考:references/code-quality-checklist.md 第2节
3. 性能分析
3.1 时间/空间复杂度
- 识别低效算法(O(n²)以上)
- 检测内存使用问题
- 评估递归深度风险
3.2 磁盘IO
- 检查文件读取模式(流式 vs 一次性)
- 评估批量操作优化
- 检测资源泄漏风险
参考:references/performance-analysis.md 第3节
3.3 网络IO
- 检查超时设置
- 评估重试机制
- 检测连接池使用
- 分析并发请求模式
参考:references/performance-analysis.md 第4节
3.4 并发与锁
- 死锁风险检测:嵌套锁顺序、回调锁内调用
- 锁粒度评估:全局锁 vs 细粒度锁
- Race Condition检测:非原子操作、共享数据访问
- 线程安全类型:检查非线程安全集合使用
参考:references/performance-analysis.md 第5节
3.5 内存管理
- 内存泄漏风险(全局缓存、事件监听)
- 循环引用检测
- 大对象处理评估
- 对象池使用建议
参考:references/performance-analysis.md 第6节
4. 代码质量
- 错误处理完整性
- 代码风格一致性
- 安全性检查(注入、敏感信息)
- 复杂度控制
参考:references/code-quality-checklist.md 第3-5节
评分标准
性能维度评分(满分100)
| 子维度 | 权重 | A(100) | B(85) | C(70) | D(50) | F(30) |
|---|
| 时间复杂度 | 25% | < O(n log n) | O(n log n) | O(n) | O(n²) | > O(n²) |
| 空间复杂度 | 20% | O(1) | O(log n) | O(n) | O(n²) | > O(n²) |
| 磁盘IO | 15% | 流式/异步 | 有缓冲 | 标准 | 频繁小IO | 泄漏风险 |
| 网络IO | 15% | 连接池+并发 | 有超时重试 | 同步 | 无超时 | 阻塞 |
| 并发安全 | 15% | 无锁/细粒度 | 正确使用 | 粒度粗 | 使用不当 | 死锁风险 |
| 内存管理 | 10% | 对象池 | 及时释放 | 标准GC | 循环引用 | 内存泄漏 |
质量维度评分(满分100)
| 子维度 | 权重 | A(100) | F(30) |
|---|
| 接口一致性 | 20% | 完全一致 | 混乱 |
| 注释质量 | 20% | 完整规范 | 无注释 |
| 错误处理 | 25% | 完善健壮 | 无处理 |
| 代码风格 | 20% | 优雅简洁 | 混乱 |
| 安全性 | 15% | 无漏洞 | 严重漏洞 |
综合评级
总分 = 性能得分 × 0.5 + 质量得分 × 0.5
S级:95-100分(卓越)
A级:85-94分(优秀)
B级:70-84分(良好)
C级:60-69分(及格)
D级:40-59分(需改进)
F级:< 40分(不合格)
问题分级
| 级别 | 标识 | 定义 | 响应要求 |
|---|
| P0 | 🔴 严重 | 功能缺陷、安全风险、明显死锁 | 必须立即修复 |
| P1 | 🟠 重要 | 性能问题、代码异味、潜在风险 | 建议下个迭代修复 |
| P2 | 🟡 一般 | 风格问题、注释缺失 | 可选修复 |
| P3 | 🟢 建议 | 优化建议、最佳实践 | 参考采纳 |
示例输出
死锁风险报告示例
### 并发与锁分析
**评分**: 65/100 | **等级**: C
| 检查点 | 状态 | 风险等级 |
|--------|------|---------|
| 死锁风险 | ⚠️ 发现风险 | **高** |
**死锁分析报告**:
潜在死锁场景:
函数: process_order() 第45-52行
锁获取顺序: order_lock -> inventory_lock
函数: cancel_order() 第78-85行
锁获取顺序: inventory_lock -> order_lock
风险: 两个线程分别以不同顺序获取锁,可能导致死锁
建议修复方案:
1. 统一锁获取顺序(推荐:按资源ID排序后获取)
2. 使用超时锁 try_lock(timeout)
3. 考虑使用无锁数据结构替换
磁盘IO报告示例
### 磁盘IO分析
**评分**: 45/100 | **等级**: D
| 检查点 | 状态 | 说明 |
|--------|------|------|
| 缓冲/流式处理 | ❌ 未使用 | 第120行一次性读取大文件 |
| 资源释放 | ⚠️ 有风险 | 第88行文件句柄未使用with语句 |
**问题列表**:
- [P1] process_large_file() 一次性读取整个文件到内存
- 当前: data = open(path).read() # 可能导致OOM
- 建议: 使用生成器逐行读取
```python
with open(path) as f:
for line in f:
process(line)
## 多语言支持
本Skill支持以下编程语言(按分析深度排序):
1. **Python** - 完整支持所有分析维度
2. **Go** - 完整支持,重点关注goroutine和channel
3. **Java** - 完整支持,重点关注线程和锁
4. **JavaScript/TypeScript** - 完整支持,重点关注Promise和异步
5. **C/C++** - 基础支持,重点关注内存管理
6. **Rust** - 基础支持,重点关注所有权系统
7. **其他语言** - 通用分析(复杂度、注释、接口)
## 使用约束
1. **文件大小**:建议单文件 < 5000行,超大文件可能截断分析
2. **分析时间**:复杂文件可能需要较长时间,请耐心等待
3. **假阳性**:静态分析可能产生误报,需人工确认
4. **动态行为**:无法分析运行时性能,仅能静态推断