11-项目规划、测试、代码审查实战

使用 OpenCode 完成软件工程全流程:项目规划、测试驱动开发、代码审查与质量保障。


一、AI 驱动项目管理概述

1.1 全流程覆盖

项目启动
    ↓
需求分析 → AI 辅助需求拆解
    ↓
技术方案 → AI 生成架构设计
    ↓
任务分解 → AI 生成任务清单
    ↓
开发实现 → AI 辅助编码
    ↓
测试验证 → AI 生成测试、运行测试
    ↓
代码审查 → AI 自动审查
    ↓
文档生成 → AI 生成技术文档
    ↓
项目交付

1.2 OpenCode 在各阶段的作用

阶段 OpenCode 功能 使用场景
项目规划 CLI 生成规划文件 架构文档、任务清单
开发实现 批量代码生成 多模块并行开发
测试 主 Agent 分发任务到 SubAgent 完整测试套件
代码审查 自定义 SubAgent 批量审查 项目级代码审查

二、项目规划阶段

2.1 需求分析与拆解

使用 OpenCode 进行需求分析

> 我有一个项目想法:做一个在线笔记应用,
  请帮我分析需求并生成详细的功能清单。

项目:在线笔记应用 (Online Notes App)

OpenCode 输出:
## 需求分析

### 核心功能
1. 用户系统
   - 注册/登录(邮箱+密码、OAuth)
   - 个人资料管理
   - 密码重置

2. 笔记管理
   - 创建/编辑/删除笔记
   - 富文本编辑(Markdown 支持)
   - 笔记分类(文件夹/标签)
   - 搜索功能

3. 协作功能
   - 笔记分享(链接/邀请)
   - 实时协作编辑
   - 评论系统

4. 高级功能
   - 版本历史
   - 导出(PDF、Markdown)
   - 自动保存
   - 离线支持

### 技术选型建议
- 后端:FastAPI + PostgreSQL
- 前端:React + TypeScript
- 实时:WebSocket / Socket.io
- 部署:Docker + AWS/GCP

2.2 技术方案设计

生成架构文档

> 基于刚才的需求分析,生成技术架构文档:
  1. 系统架构图
  2. 数据库设计
  3. API 设计
  4. 技术栈选型
  5. 部署架构

保存为 docs/architecture.md

2.3 任务分解与排期

生成开发任务清单

> 基于技术架构,生成详细的开发任务清单,
  包括:任务名称、优先级、预计工时、依赖关系。

保存为 docs/tasks.md

三、测试驱动开发

3.1 测试策略规划

使用 OpenCode 生成测试策略

> 为在线笔记应用生成测试策略文档,包括:
  1. 测试金字塔(单元、集成、E2E)
  2. 测试覆盖率目标
  3. 关键测试场景
  4. 测试数据策略
  5. CI/CD 中的测试流程

保存为 docs/testing-strategy.md

3.2 生成测试框架代码

> 生成测试基础设施:
  1. tests/conftest.py - pytest fixtures
  2. tests/factories.py - 测试数据工厂
  3. tests/utils.py - 测试工具函数
  4. .github/workflows/test.yml - CI 配置

3.3 批量生成单元测试

主 Agent 会自动将独立任务分发给 SubAgent 并行处理:

> 并行生成单元测试:

  1. 创建 tests/test_auth.py,测试:
     - 注册成功/失败场景
     - 登录成功/失败场景
     - Token 验证

  2. 创建 tests/test_notes.py,测试:
     - CRUD 操作
     - 权限检查
     - 搜索功能

  3. 创建 tests/test_folders.py,测试:
     - 文件夹 CRUD
     - 文件夹与笔记关系

  所有测试使用 pytest-asyncio,遵循 AAA 模式。

3.4 运行测试与分析

自动化测试流程

> 运行所有测试并生成报告:
  1. 运行 pytest
  2. 生成覆盖率报告
  3. 分析失败的测试
  4. 提供修复建议

OpenCode 执行:

[Shell]: pytest tests/ -v --cov=app --cov-report=term-missing --cov-report=html

分析测试结果:
✓ 45 个测试通过
✓ 覆盖率: 87%
⚠ 3 个测试跳过(需要 Redis)

建议:
1. 提高 routers/notes.py 的覆盖率(当前 78%)
2. 为 utils/validators.py 添加测试
3. 添加并发测试场景

四、代码审查与质量保障

4.1 配置自动化代码审查

使用 OpenCode 配置审查流程

> 配置自动化代码审查:
  1. 创建代码审查检查清单
  2. 配置自动审查脚本
  3. 集成到 Git hooks
  4. 生成审查报告模板

4.2 批量代码审查

审查整个项目的代码

> 批量审查 src/ 目录下的所有 Python 文件:
  1. 检查代码规范(PEP8)
  2. 检查类型注解完整性
  3. 检查安全漏洞
  4. 检查性能问题
  5. 生成审查报告

使用自定义审查 SubAgent 并行审查:
- @code-reviewer 审查 models/
- @code-reviewer 审查 routers/
- @code-reviewer 审查 services/
- @code-reviewer 审查 utils/

生成的审查报告:

# 代码审查报告

生成时间: 2024-XX-XX
审查范围: src/
审查标准: PEP8, mypy, security, performance

## 总体评分
| 模块 | 规范 | 类型 | 安全 | 性能 | 综合 |
|------|------|------|------|------|------|
| models | 95 | 90 | 100 | 95 | 95 |
| routers | 85 | 80 | 90 | 85 | 85 |
| services | 90 | 85 | 95 | 80 | 87 |
| utils | 92 | 88 | 100 | 90 | 92 |

## 发现的问题

### 高优先级 (必须修复)

1. **src/routers/notes.py:45** - SQL 注入风险
   ```python
   # 问题代码
   query = f"SELECT * FROM notes WHERE title LIKE '%{keyword}%'"
   
   # 建议修复
   query = "SELECT * FROM notes WHERE title LIKE :keyword"
   result = await db.execute(query, {"keyword": f"%{keyword}%"})
  1. src/services/auth.py:32 - 密码明文存储
    # 问题代码
    user.password = password  # 明文存储!
    
    # 建议修复
    user.hashed_password = get_password_hash(password)
    

中优先级 (建议修复)

  1. src/routers/users.py - 缺少错误处理

    • 建议添加 try-except 块
    • 统一错误响应格式
  2. src/services/note_service.py - N+1 查询

    • 建议使用 joinedload 优化查询

低优先级 (可选优化)

  1. 部分函数缺少文档字符串
  2. 部分变量命名可以更有意义

修复建议

  1. 运行 black src/ 自动格式化
  2. 运行 mypy src/ 检查类型
  3. 添加 bandit 安全检查到 CI
  4. 为所有 API 路由添加限速

### 4.3 自动化质量门禁

**配置 CI 质量门禁**:

```bash
> 生成 CI/CD 配置:
  创建 .github/workflows/quality.yml,包含:
  1. 代码格式检查(black, isort)
  2. 代码规范检查(flake8)
  3. 类型检查(mypy)
  4. 安全检查(bandit)
  5. 单元测试(pytest)
  6. 覆盖率检查(>80%)

五、完整项目流程示例

5.1 项目启动到交付

# Week 1: 项目规划
> 创建项目结构
> 生成架构文档
> 生成任务清单

# Week 2-3: 开发阶段
> 并行开发用户模块
> 并行开发笔记模块
> 生成单元测试

# Week 4: 测试与审查
> 运行所有测试
> 批量代码审查
> 修复问题

# Week 5: 文档与交付
> 生成 API 文档
> 生成部署文档
> 创建 README

5.2 实际开发会话示例

# 会话1:项目初始化
> 初始化 FastAPI 项目 notes-app,
  包含完整目录结构、Docker 配置、CI/CD

# 会话2:需求分析
> 分析需求:在线笔记应用
  生成功能清单、用户故事、技术方案

# 会话3:数据库设计
> 设计数据库模型:
  - User, Note, Folder, Tag, Share
  生成 SQLAlchemy 模型和迁移脚本

# 会话4:API 开发
> 并行生成 API 路由:
  - Auth, Notes, Folders, Tags
  包含完整的 CRUD 和权限控制

# 会话5:测试生成
> 生成完整的测试套件
> 运行测试并修复问题

# 会话6:代码审查
> 审查所有源代码
> 生成审查报告
> 修复发现的问题

# 会话7:文档生成
> 生成技术文档
> 生成 API 文档
> 完善 README

# 会话8:部署准备
> 生成部署配置
> 生成 Docker Compose
> 创建部署文档

六、最佳实践总结

6.1 项目规划最佳实践

  1. 分阶段交付:每个阶段产出可验证的成果
  2. 文档先行:架构文档、API 文档先于代码
  3. 任务明确:每个任务有清晰的输入输出定义
  4. 风险评估:提前识别技术难点和风险点

6.2 测试最佳实践

  1. 测试先行:核心功能先写测试再实现
  2. 分层测试:单元 → 集成 → E2E
  3. 数据工厂:使用工厂模式生成测试数据
  4. 覆盖率目标:核心代码 > 90%,总代码 > 80%

6.3 代码审查最佳实践

  1. 自动化优先:CI 中集成代码检查
  2. 分层审查:AI 初筛 → 人工深度审查
  3. 问题分级:高/中/低优先级
  4. 修复跟踪:确保所有高优先级问题修复

七、工具对比与选择

7.1 项目规划阶段

任务 OpenCode Cursor Claude Code 推荐
架构文档 自然语言指令生成 Composer 自然语言指令生成 OpenCode
任务分解 自然语言指令生成 Composer 自然语言指令生成 OpenCode
技术讨论 自然语言 Chat 自然语言 Cursor

7.2 测试阶段

任务 OpenCode Cursor Claude Code 推荐
测试策略 自然语言指令生成 Chat 自然语言指令生成 OpenCode
批量测试 主 Agent 分发 SubAgent Inline Edit SubAgent OpenCode
单文件测试 文件操作 Inline Edit 文件操作 Cursor

7.3 审查阶段

任务 OpenCode Cursor Claude Code 推荐
批量审查 自定义 SubAgent Review SubAgent OpenCode
单文件深度 文件操作 Review 文件操作 Cursor
安全扫描 CLI 集成 LSP CLI 集成 OpenCode

推荐组合

  • 复杂架构设计 → OpenCode 生成
  • 批量代码生成 → OpenCode 为主
  • 单文件深度审查 → Cursor 为主

八、下一步

掌握软件工程全流程后,你可以:

  1. 使用 OpenCode 管理完整项目生命周期
  2. 建立团队标准化开发流程
  3. 持续优化代码质量和开发效率

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐