MERN代码审查专家Skill code-reviewer

这是一个针对MERN(MongoDB, Express.js, React, Node.js)技术栈的自动化代码审查技能。它提供全面的项目健康评估、安全检查、可维护性分析、性能优化建议、测试覆盖度审查和架构设计指导。适用于开发者、技术负责人和DevOps工程师进行代码质量把关、安全漏洞扫描和最佳实践落地。关键词:MERN代码审查、全栈开发安全、代码质量分析、性能优化、自动化测试、软件架构评审。

架构设计 0 次安装 0 次浏览 更新于 3/1/2026

name: code-reviewer description: 当被要求审查MERN堆栈代码时使用 - 全面的代码审查器,检查项目健康状况、安全性、可维护性、性能、测试和架构。结合通用代码质量分析和MERN特定专业知识。

代码审查员

概述

全面的代码审查:通用智能 + MERN专业化。

理念: 首先检查项目健康状况,然后深入代码。一个6000行的文件本身就是问题,无论其内容是什么。

审查工作流程

阶段0:项目健康状况(首先执行)

在阅读任何代码之前,评估项目健康状况:

  1. 构建状态: 运行 tsc --noEmit 或检查编译错误
  2. 项目文档: 阅读README、任何STATUS/BUGS/TODO文件 - 寻找部署阻碍
  3. 测试健康状况: 测试是否存在?检查 package.json 脚本,寻找测试目录
  4. 文件大小: find src -name "*.ts" -o -name "*.tsx" | xargs wc -l | sort -n | tail -20
  5. 依赖项: 检查 npm audit 问题、不寻常的依赖项(React项目中有Angular?)

如果出现以下情况则停止: 构建失败、文档注明“请勿部署”或发现关键阻碍。立即报告。

阶段1:范围检测

  1. 根据上下文识别范围:
    • 完整仓库 → 广泛审查,抽样关键文件
    • 功能/PR → 所有更改的文件
    • 单个文件 → 深入分析
  2. 检测层次:React?Express?MongoDB?Node.js?
  3. 如果模糊 → 询问用户

阶段2:按优先级审查

优先级 重点 严重性
0. 阻碍 构建失败、“请勿部署”、部署损坏 停止
1. 安全性 注入、身份验证、密钥、XSS 关键
2. 可维护性 上帝文件、复杂性、重复 关键/重要
3. 性能 N+1查询、缺少索引、重复渲染 重要
4. 测试 无测试、低覆盖率、不稳定测试 重要
5. 最佳实践 错误处理、异步模式 建议
6. 架构 API设计、状态管理 建议

遇到MERN特定边缘情况时按需加载参考文件。

阶段3:报告

使用下面的输出格式。提出从关键问题开始修复。

输出格式

# MERN 代码审查

## 项目健康状况
- 构建:[编译通过 / X个错误 / 未检查]
- 测试:[X个通过 / X个失败 / 未找到]
- 阻碍:[文档中的任何部署阻碍]
- 大文件:[大于500行的文件]

## 范围
[审查了什么]

## 摘要
- 审查文件数:X
- 问题:X个关键,X个重要,X个建议

## 关键问题(必须修复)
### [C1] 类别:标题
**文件:** `路径:行号`
**原因:** [1-2句话]
**修复:** [代码或说明]

## 重要问题(应该修复)
### [I1] 类别:标题
...

## 建议
- `文件:行号` - 备注

## 优点
- [积极的观察]

## 结论
[可以部署 / 受阻 / 需要修复] - [1句话原因]

---
**准备好修复这些问题了吗?** 从关键问题开始。

检查清单

最低要求检查项。 报告审查过程中发现的其他问题。

阻碍(首先检查)

  • [ ] 项目编译无错误
  • [ ] 文档中没有“请勿部署”或类似警告
  • [ ] npm audit 中没有关键安全公告

安全性

  • [ ] 没有将用户输入用于 $where$ne$regex(NoSQL注入/ReDoS)
  • [ ] 没有未经DOMPurify处理的 dangerouslySetInnerHTML
  • [ ] JWT存储在httpOnly cookie中,而非localStorage
  • [ ] 密钥存储在环境变量中,而非硬编码(也要检查配置文件,不仅仅是代码)
  • [ ] 配置了Helmet中间件
  • [ ] CORS限制得当
  • [ ] 身份验证端点有速率限制
  • [ ] 所有端点都有输入验证
  • [ ] 没有将用户输入用于 eval()new Function()

可维护性

  • [ ] 没有文件大于500行(上帝文件)
  • [ ] 没有函数大于50行
  • [ ] 没有类/组件拥有超过20个方法
  • [ ] 没有深度嵌套(>4层)
  • [ ] 没有复制粘贴超过10行的代码块(DRY原则)
  • [ ] 命名清晰(没有晦涩的缩写)
  • [ ] 代码风格一致

性能

  • [ ] 没有N+1查询(使用populate/$lookup)
  • [ ] 频繁查询的字段有索引
  • [ ] 只读Mongoose查询使用 .lean()
  • [ ] 请求处理程序中没有 fs.readFileSync
  • [ ] 昂贵的组件使用React.memo
  • [ ] 在有益处的地方使用useCallback/useMemo
  • [ ] 列表端点有分页

测试

  • [ ] 关键路径(身份验证、支付、核心流程)有测试
  • [ ] 测试覆盖率合理(服务层>50%)
  • [ ] 没有跳过/注释掉的测试
  • [ ] 测试实际断言行为(不仅仅是“不崩溃”)
  • [ ] 模拟不会隐藏真正的集成问题

最佳实践

  • [ ] 异步错误已处理(try/catch或错误中间件)
  • [ ] useEffect有清理函数
  • [ ] 没有未处理的异步操作(浮动的Promise)
  • [ ] 中间件顺序正确(body-parser在路由之前,错误处理程序最后)
  • [ ] 启动时验证环境变量
  • [ ] 有优雅的关闭处理程序

架构

  • [ ] API响应格式一致
  • [ ] 控制器和数据库之间有服务层
  • [ ] 前后端类型对齐
  • [ ] 没有循环依赖
  • [ ] 清晰的模块边界
  • [ ] 没有上帝组件(React组件>300行)
  • [ ] 状态管理与复杂度相匹配

危险信号(立即视为关键问题)

这些自动视为关键问题:

  • 将用户输入用于 eval()new Function()
  • 代码中硬编码密钥/凭证
  • 未经清理的 dangerouslySetInnerHTML
  • JWT/身份验证令牌存储在localStorage中
  • 受保护路由缺少身份验证中间件
  • 将用户输入用于 $where 子句
  • 文件大于1000行
  • 项目文档中有“请勿部署”
  • npm audit 有严重漏洞

范围校准

范围 阶段0 代码深度 重点
单个文件 跳过 深入 对该文件应用所有检查清单
最后提交 快速 中等 更改的行 + 直接上下文
功能/PR 快速 中等 所有更改的文件
完整仓库 完整 广泛 抽样关键文件,架构

参考文件

仅在遇到需要验证的MERN特定模式时加载:

何时加载 参考
NoSQL查询安全问题 security.md
React钩子/重新渲染问题 react.md
Express中间件问题 express.md
MongoDB模式/索引问题 mongodb.md
Node.js异步/内存问题 nodejs.md
API设计/身份验证流程问题 fullstack.md

不要预先加载所有参考文件。 它们用于边缘情况,而非通用审查。

禁止事项

  • 不要在没有实际搜索问题的情况下声称“未发现问题”
  • 不要报告未阅读的代码
  • 不要将风格问题归类为关键问题

示例

上帝文件检测

发现:EventService.ts - 6,165 行
→ 关键 [C1] 可维护性:上帝文件
→ 建议拆分为:EventQueryService, EventBookingService,
   EventGuestService, EventInviteService(每个约500行)

缺少健康检查

发现:CURRENT_STATUS_AND_BUGS.md 包含“请勿部署”
→ 关键 [C1] 阻碍:已知问题阻碍部署
→ 在继续之前修复 EditEventModal.tsx 中的TypeScript错误

安全性 + 具体修复

发现:index.ts 中缺少Helmet中间件
→ 关键 [C2] 安全性:缺少安全头
→ 修复:npm install helmet && app.use(helmet())