name: pre-commit-check description: 提交前质量检查技能(Lint、测试、构建的快速验证)
Pre-Commit Check Skill - 提交前质量检查技能
角色
在提交前快速执行质量检查的技能。比qa-check更轻量,适合开发过程中的频繁检查。
与 qa-check 的区别
| 项目 | pre-commit-check | qa-check |
|---|---|---|
| 目的 | 开发过程中的频繁检查 | PR创建前的最终检查 |
| 执行速度 | 高速(仅变更文件) | 通常(全量检查) |
| 测试 | 仅变更相关部分(可选) | 全量测试执行 |
| 覆盖率 | 不检查 | 80%以上必须 |
| 构建 | 可跳过 | 必须 |
| 使用时机 | 提交前 | PR创建前 |
执行流程
Phase 1: 变更文件确认
# 确认变更的文件
git status --short
# 确认已暂存的文件
git diff --cached --name-only
# 根据变更文件判断Backend/Frontend
Phase 2: Backend 检查(如有变更)
2-1. Lint执行(仅变更文件)
cd backend
# Checkstyle(仅变更文件)
./gradlew checkstyleMain checkstyleTest
# SpotBugs(仅变更文件)
./gradlew spotbugsMain spotbugsTest
2-2. 测试执行(skip_tests=false 时)
# 仅执行与变更类相关的测试
./gradlew test --tests "*[变更的类名]Test"
2-3. 编译确认
# 跳过构建,仅进行编译
./gradlew compileJava compileTestJava
Phase 3: Frontend 检查(如有变更)
3-1. Lint执行
cd frontend
# Biome Lint(全量)
pnpm run lint:check
3-2. 测试执行(skip_tests=false 时)
# 仅执行与变更文件相关的测试
pnpm run test:ci --changed
3-3. 类型检查
# TypeScript类型检查
npx tsc --noEmit
Phase 4: 结果报告
成功时
## Pre-Commit Check 完成
### Backend
- ✅ Lint: 无错误
- ✅ 测试: [执行数] 件成功
- ✅ 编译: 成功
### Frontend
- ✅ Lint: 无错误
- ✅ 测试: [执行数] 件成功
- ✅ 类型检查: 无错误
### 下一步
可以提交。
失败时
## Pre-Commit Check 失败
### Backend
- ❌ Lint: 错误 [数量] 件
- [错误内容]
- ❌ 测试: [失败数] 件失败
- [失败测试名]
- ✅ 编译: 成功
### Frontend
- ✅ Lint: 无错误
- ✅ 测试: 全部成功
- ✅ 类型检查: 无错误
### 需要修正的项目
1. 修正Backend Lint错误
2. 修正Backend 测试失败
### 下一步
请修正上述问题后重新检查。
加速要点
1. 仅检查变更文件
- 使用git diff检测变更文件
- 仅执行相关测试
- 跳过构建
2. 并行执行
- 并行执行Backend/Frontend检查
- 在可能的情况下并行执行Lint/测试/类型检查
3. 活用缓存
- 活用Gradle的构建缓存
- 活用pnpm的缓存
使用工具
必需工具
- Bash: 执行Lint/测试/编译、git操作
推荐工具
- Grep: 搜索错误模式
- Read: 查看报告文件
重要注意事项
pre-commit-check 是轻量检查
- PR创建前必须执行 qa-check
- pre-commit-check 用于开发过程中的频繁检查
- 不进行覆盖率检查
跳过测试的判断
- skip_tests=true 仅在紧急情况下使用
- 通常应使用 skip_tests=false 执行测试
- 跳过测试后必须补执行
参考文档
必需参考
documents/development/development-policy.md: 开发指南
配置文件
backend/config/checkstyle/checkstyle.xml: Checkstyle配置backend/config/spotbugs/spotbugs-exclude.xml: SpotBugs配置frontend/biome.json: Biome配置