--- name: 0011-verification-commit description: 测试与版本提交,运行测试并执行 Git 提交 --- # 技能:测试与版本提交 (Verification & Git Commit) ## 元数据 (Metadata) - **name**: verification-commit - **description**: 测试与版本提交,运行测试并执行 Git 提交 - **version**: 1.0.0 - **author**: SSOT Architect - **lastUpdated**: 2026-01-15 ## 触发与定位 (Triggers & Scope) ### 触发条件 (Triggers) 当以下情况发生时,AI 应当"觉醒"本技能: 1. **代码变更完成**: 完成代码编写和变更记录后,需要测试和提交 2. **功能开发完成**: 功能开发完成,需要测试和提交 3. **Bug 修复完成**: Bug 修复完成,需要测试和提交 4. **代码重构完成**: 代码重构完成,需要测试和提交 5. **工作流阶段 8**: 用户进入工作流的"测试与版本提交"阶段 ### 定位范围 (Scope) - **适用模块**: 所有 Datai 项目模块 - **影响操作**: 测试运行、Git 提交 - **相关技能**: skill-retrospective, skill-define-requirements ## 核心指令集 (Instructions) ### 架构约束 (Architecture Constraints) 1. **测试要求**: - 确保代码通过所有单元测试 - 满足阶段 1 定义的验收标准(AC) - 确保代码质量符合项目规范 2. **提交原子性**: - 确保本次提交仅包含当前任务的变更 - 不包含无关的代码变更 - 不包含调试代码或临时文件 3. **文档同源**: - 提交必须包含代码变更 - 提交必须包含上述步骤产生的所有文档变更(Requirements, ADR, Prompts, Session Logs, Retros) 4. **Commit Message 规范**: ``` (): - Implements: [需求链接/ID] - Decision: [ADR 链接/ID] - Context: Based on session [Session Log ID] ``` ### 业务逻辑 SOP (Business Logic SOP) #### 步骤 1: 运行测试 ```markdown ## 运行测试 ### 单元测试 ```bash # 运行所有单元测试 mvn test # 运行特定测试类 mvn test -Dtest=ClassName # 运行特定测试方法 mvn test -Dtest=ClassName#methodName ``` ### 集成测试 ```bash # 运行集成测试 mvn verify # 运行特定集成测试 mvn verify -Dit.test=ClassName ``` ### 测试覆盖率 ```bash # 生成测试覆盖率报告 mvn jacoco:report # 查看覆盖率报告 open target/site/jacoco/index.html ``` ### 验收标准验证 | 验收标准 | 测试方法 | 结果 | 状态 | |----------|----------|------|------| | [AC1] | [测试方法] | [测试结果] | [通过/失败] | | [AC2] | [测试方法] | [测试结果] | [通过/失败] | | [AC3] | [测试方法] | [测试结果] | [通过/失败] | ``` #### 步骤 2: 代码质量检查 ```markdown ## 代码质量检查 ### 静态代码分析 ```bash # 运行 Checkstyle mvn checkstyle:check # 运行 SpotBugs mvn spotbugs:check # 运行 PMD mvn pmd:check ``` ### 代码格式检查 ```bash # 检查代码格式 mvn spotless:check # 自动格式化代码 mvn spotless:apply ``` ### 代码规范检查 - [ ] 命名规范 - [ ] 注释规范 - [ ] 异常处理规范 - [ ] 日志记录规范 - [ ] 安全规范 ### 代码审查清单 - [ ] 代码逻辑正确 - [ ] 没有硬编码 - [ ] 没有重复代码 - [ ] 没有未使用的代码 - [ ] 没有安全隐患 - [ ] 性能合理 - [ ] 可维护性好 ``` #### 步骤 3: 检查变更文件 ```markdown ## 检查变更文件 ### 查看变更 ```bash # 查看工作区变更 git status # 查看暂存区变更 git diff --cached # 查看未暂存变更 git diff ``` ### 变更文件清单 | 文件 | 变更类型 | 说明 | |------|----------|------| | [文件1] | [新增/修改/删除] | [说明] | | [文件2] | [新增/修改/删除] | [说明] | ### 代码变更 - [ ] 仅包含当前任务的代码变更 - [ ] 不包含无关的代码变更 - [ ] 不包含调试代码 - [ ] 不包含临时文件 ### 文档变更 - [ ] 需求文档已更新 - [ ] ADR 文档已更新 - [ ] Prompt 文档已更新 - [ ] Session Log 已更新 - [ ] Retro 文档已更新 - [ ] CHANGELOG 已更新 - [ ] docs/index.md 已更新 ``` #### 步骤 4: 暂存变更文件 ```markdown ## 暂存变更文件 ### 暂存代码变更 ```bash # 暂存所有变更 git add . # 暂存特定文件 git add path/to/file1.java git add path/to/file2.java # 暂存特定目录 git add path/to/directory/ ``` ### 暂存文档变更 ```bash # 暂存需求文档 git add docs/requirements/REQ-XXX.md # 暂存 ADR 文档 git add docs/decisions/adr/ADR-XXX.md # 暂存 Prompt 文档 git add docs/prompts/PROMPT-XXX.md # 暂存 Session Log git add docs/sessions/YYYYMMDD-TaskName.md # 暂存 Retro 文档 git add docs/retros/YYYYMMDD-Review.md # 暂存 CHANGELOG git add CHANGELOG.md # 暂存 docs/index.md git add docs/index.md ``` ### 验证暂存 ```bash # 查看暂存区变更 git diff --cached # 确认暂存内容正确 ``` ``` #### 步骤 5: 编写 Commit Message ```markdown ## 编写 Commit Message ### Commit Message 格式 ``` ():