406 项目复盘与优化
用 Codex 进行代码质量审查、性能瓶颈分析和安全扫描
学习目标
完成本课程后,你将能够:
一、代码质量分析
用 Codex 全面审查代码
/review 请对整个项目进行全面代码审查,关注:
1. 代码规范和一致性
2. 潜在的 Bug 和边界条件
3. 重复代码和抽象机会
4. TypeScript 类型安全
5. 错误处理完整性
6. 异步操作的竞态条件代码质量指标
| 维度 | 检查项 | Codex 命令 |
|---|---|---|
| 类型安全 | any 使用率、strictNullChecks | `/review` |
| 错误处理 | try/catch 覆盖率 | `/review` |
| 可读性 | 函数长度、嵌套深度 | `/review` |
| 重复代码 | 相似度 > 80% 的代码块 | `/refactor` |
| 依赖更新 | 过时的包、已知漏洞 | `/deps` |
| 测试覆盖 | 分支覆盖率 < 70% | `/test` |
代码坏味道识别
常见代码坏味道:
1. 超大函数(> 50 行) → 拆分为多个小函数
2. 深层嵌套(> 4 层) → 提前 return / Guard Clause
3. 魔法数字/字符串 → 提取为命名常量
4. 重复的条件判断 → 策略模式 / 查表法
5. 硬编码的环境依赖 → 依赖注入
6. 过多的函数参数(> 4 个) → 参数对象化Codex 重构示例
/refactor 请重构以下代码,减少嵌套层级,提取常量:
function calculatePrice(user, items) {
let total = 0;
if (user) {
if (user.type === 'VIP') {
if (items.length > 0) {
for (const item of items) {
if (item.price > 0) {
if (item.category === 'electronics') {
total += item.price * 0.85;
} else {
total += item.price * 0.9;
}
}
}
}
} else {
// ... 更多嵌套
}
}
return total;
}二、性能瓶颈分析
性能分析流程
1. 负载测试 → 用 k6 / Artillery 模拟生产流量
2. 火焰图分析 → 找出 CPU 热点函数
3. 慢查询分析 → 数据库最耗时的 Top 10 查询
4. 内存分析 → 找出内存泄漏点
5. 网络分析 → 大体积请求/响应、重复请求用 Codex 分析性能数据
/debug 这是 Apache Bench 的压力测试结果,帮我分析瓶颈:
Concurrency Level: 100
Time taken for tests: 45.3 seconds
Complete requests: 10000
Failed requests: 234
Requests per second: 220.75 [#/sec]
Time per request: 453.0 [ms] (mean)
Transfer rate: 1120.50 [Kbytes/sec]
Percentage of requests:
50% 320ms
90% 890ms
95% 1200ms
99% 2500ms
100% 5200ms (longest request)
错误集中在 /api/tasks/board 接口
数据库连接池耗尽 12 次常见性能问题与修复
// 问题 1:循环中的异步操作
// ❌ 串行处理 100 个任务(耗时 = 100 × 100ms = 10s)
for (const task of tasks) {
await notifyAssignee(task);
}
// ✅ 并发处理(耗时 ≈ 100ms)
await Promise.all(tasks.map(task => notifyAssignee(task)));
// ✅ 控制并发数(兼顾性能和资源)
import pLimit from 'p-limit';
const limit = pLimit(10);
await Promise.all(tasks.map(task =>
limit(() => notifyAssignee(task))
));
// 问题 2:未使用连接池
// ❌ 每次请求创建新连接
const client = new Client(connectionString);
// ✅ 使用 Prisma 内置连接池
// connection_limit=20 在 DATABASE_URL 中配置
// 问题 3:前端包体积过大
// ❌ 全量导入
import { format, parse, differenceInDays } from 'date-fns';
// ✅ 按路径导入(Tree Shaking 友好)
import format from 'date-fns/format';性能优化检查清单
三、安全扫描
用 Codex 执行安全检查
/review 请对整个项目进行安全审计,检查:
1. SQL 注入风险(使用 Prisma 通常安全,但原始查询需审查)
2. XSS 跨站脚本(检查 dangerouslySetInnerHTML)
3. CSRF 防护
4. 敏感信息泄露(API Key、密码明文)
5. 认证和授权漏洞
6. 依赖包的已知 CVE依赖安全检查
# 用 npm audit 扫描已知漏洞
npm audit --production
# 用 Codex 分析结果
/deps 我运行了 npm audit,发现 5 个高危漏洞,帮我分析修复方案:
- 2 个可自动修复(npm audit fix)
- 3 个需要手动升级大版本安全加固措施
// 1. 密码哈希(bcrypt)
import bcrypt from 'bcrypt';
const SALT_ROUNDS = 12;
// 2. 速率限制
import rateLimit from 'express-rate-limit';
const authLimiter = rateLimit({
windowMs: 15 * 60 * 1000, // 15 分钟
max: 10, // 最多 10 次
message: '登录尝试次数过多,请稍后重试',
});
app.use('/api/auth/login', authLimiter);
// 3. HTTP 安全头
import helmet from 'helmet';
app.use(helmet());
// 4. CORS 白名单
import cors from 'cors';
app.use(cors({
origin: process.env.ALLOWED_ORIGINS?.split(',') || [],
credentials: true,
}));
// 5. 请求大小限制
app.use(express.json({ limit: '1mb' }));安全检查清单
| 检查项 | 状态 | 备注 |
|---|---|---|
| JWT Secret 复杂度 | [ ] | 至少 256 位随机值 |
| 密码最小长度 8 位 | [ ] | 含大小写 + 数字 + 特殊字符 |
| HTTPS 强制启用 | [ ] | HSTS 头 |
| API Key 不在代码中 | [ ] | 使用环境变量 |
| 文件上传类型校验 | [ ] | MIME 白名单 |
| 日志中无敏感数据 | [ ] | 脱敏处理 |
四、项目复盘文档
用 Codex 生成项目总结
/docs 请为这个全栈项目生成复盘总结文档,包括:
1. 项目概况
- 技术栈:Next.js + Express + Prisma + PostgreSQL
- 开发周期:4 周
- AI 辅助占比估算
2. 架构回顾
- 做对了什么
- 有哪些可以改进
3. AI 工具使用统计
- 哪些功能 AI 生成比例最高
- 哪些需要大量人工调整
4. 经验教训
- 技术选型反思
- 开发流程改进建议
5. 后续规划
- 技术债务清单
- 功能迭代路线图复盘模板
项目复盘 — TaskFlow 任务管理平台
一、项目数据
- 代码行数:前端 8500 行 / 后端 6200 行
- AI 生成比例:前端 65% / 后端 75% / 测试 85%
- 开发效率提升:约 3.5 倍
二、AI 工具使用最佳实践
- 生成代码前先明确接口契约(输入/输出类型)
- 复杂逻辑分步骤引导,不期望一次生成全部
- 每完成一个模块立即让 AI 审查
- 测试用例几乎全部由 AI 生成
三、踩过的坑
- AI 生成的权限中间件未考虑边界条件,需要人工补充
- 首次生成的 Docker Compose 版本不兼容 Apple Silicon
- N+1 查询在原型阶段没问题,数据量增大后暴露
四、给团队的建议
- 建立共享的 Codex 指令模板库
- 定期更新 codex.yaml 项目规则
- Code Review 重点关注 AI 生成代码的错误处理五、持续优化机制
优化循环
测量(Measure)
→ 分析(Analyze)
→ 优化(Optimize)
→ 验证(Verify)
→ 回到测量用 Codex 建立优化 SOP
优化标准操作流程:
1. 每周运行 /review 检查代码质量
2. 每两周运行 /deps 升级依赖
3. 每月运行性能基准测试
4. 每次部署后对比性能指标
5. 季度安全审计六、本课总结
**核心要点:**
- `/review` 命令是代码质量的核心工具,覆盖类型安全、错误处理、代码坏味道
- 性能优化从指标出发:先测量,再定位热点,最后精准优化
- 安全检查要融入到 CI/CD 流水线中,每次提交都自动扫描
- 项目复盘文档沉淀团队知识,是组织能力资产
- 持续优化不是一次性行为,而是纳入日常开发的标准流程
**下一步:** 进入模块六 — 团队与企业落地,学习如何将 Codex 推广到整个团队