⚖ 校验关卡 · 变更校验
核心原则
code
变更 = 代码改动 + 文档更新 + 理由记录 无理由的变更是隐患,无记录的变更是灾难 每一次变更都是历史,每一个决策都要留痕
自动分析
运行变更分析脚本(跨平台):
bash
# 在 skill 目录下运行 python scripts/change_analyzer.py # 分析工作区变更(默认) python scripts/change_analyzer.py --mode staged # 分析暂存区变更 python scripts/change_analyzer.py --mode committed # 分析已提交变更 python scripts/change_analyzer.py -v # 详细模式 python scripts/change_analyzer.py --json # JSON 输出
检测能力
自动检测项
| 检测项 | 说明 |
|---|---|
| 文件分类 | 自动识别代码/文档/测试/配置文件 |
| 模块识别 | 识别受影响的模块 |
| 文档同步 | 检测代码变更是否同步更新文档 |
| 测试覆盖 | 检测代码变更是否有对应测试 |
| 影响评估 | 评估变更规模和影响范围 |
触发警告的情况
- •⚠️ 代码变更 > 50 行但 DESIGN.md 未更新
- •⚠️ 代码变更 > 30 行但无测试更新
- •⚠️ 新增文件但 README.md 未更新
- •⚠️ 配置文件变更未记录
- •ℹ️ 删除文件需确认引用已清理
变更前置检查
在修改任何模块前,必须:
- •读取 README.md — 理解模块定位
- •读取 DESIGN.md — 理解现有决策
- •评估影响范围 — 此变更影响哪些部分
- •确认变更理由 — 为什么要改
变更后置检查
代码修改完成后,必须:
README.md 更新检查
- • 模块职责是否变化 → 更新职责描述
- • 依赖关系是否变化 → 更新依赖说明
- • 使用方式是否变化 → 更新示例代码
DESIGN.md 更新检查
- • 新增设计决策 → 记录决策及理由
- • 修改现有设计 → 记录变更及原因
- • 引入新限制 → 更新已知限制
- • 添加变更记录 → 更新变更历史
变更记录格式
在 DESIGN.md 的变更历史中添加:
markdown
## 变更历史 ### [日期] - [变更标题] **变更内容**: 简述改了什么 **变更理由**: 为什么要改 **影响范围**: 影响哪些功能/模块 **决策依据**: 为何选择此方案(如适用)
自动触发时机
| 场景 | 触发条件 |
|---|---|
| 设计级变更 | 修改架构、接口、数据结构 |
| 重构完成 | 重构任务完成时 |
| 代码变更 > 30 行 | 较大规模代码修改 |
| 提交前 | 代码提交前检查 |
校验流程
code
1. 运行 change_analyzer.py 自动分析 2. 识别变更文件和受影响模块 3. 检查文档同步状态 4. 评估变更影响 5. 输出变更校验报告
校验报告格式
code
## 变更校验报告 ### 变更概览 - 变更文件数: N - 代码变更行数: +X / -Y - 受影响模块: [模块列表] ### 文档同步状态 - README.md: ✓ 已同步 / ⚠️ 需更新 - DESIGN.md: ✓ 已同步 / ⚠️ 需更新 ### 测试覆盖 - 测试文件变更: ✓ 有 / ⚠️ 无 ### 结论 可提交 / 需补充文档后提交