🚀 告别代码审查烦恼!AI 驱动的 Git Pre-Commit 代码检查工具
让 AI 成为你的代码审查助手,在提交前自动发现常见问题,提升代码质量,减少 Code Review 时间!
💡 为什么需要这个工具?
作为前端开发者,你是否遇到过这些问题:
- ❌ 提交代码后才发现:按钮没有防重复提交,用户疯狂点击导致重复请求
- ❌ Code Review 时才发现:页面初始化缺少 loading 状态,用户体验不佳
- ❌ 上线后才发现:接口操作成功没有提示,用户不知道操作是否成功
- ❌ 测试时才发现:列表没有空状态处理,空数据时页面显示异常
这些问题不仅影响用户体验,还会增加 Code Review 的工作量,甚至可能导致线上问题!
现在,有了 prina-pre-commit-check,这些问题都可以在代码提交前被自动发现并修复!
✨ 核心特性
🤖 AI 智能检查
- 基于 智普AI API 进行代码智能分析
- 实时显示 AI 分析过程,帮助你理解检查逻辑
- 不仅检查语法,更理解代码语义和业务逻辑
📋 6 大核心规则
- 防重复提交检查 - 确保按钮点击后不会重复调用接口
- Loading 状态检查 - 确保页面初始化时有 loading 提示
- 轻提示检查 - 确保接口操作成功后有用户提示
- 空状态检查 - 确保列表有空状态处理
- 表单提示检查 - 确保表单输入项有 placeholder
- 组件规范检查 - 确保特定组件使用符合规范
🎯 灵活配置
- ✅ 动态规则支持 - 支持添加自定义规则(rule7, rule8...)
- ✅ 规则开关 - 可以灵活启用/禁用任意规则
- ✅ 自定义描述 - 每个规则都可以自定义名称和详细描述
⚡ 零配置启动
- 安装后自动配置 Git Hook
- 自动创建配置文件
- 开箱即用,无需复杂设置
🎬 快速开始
1. 安装
npm install prina-pre-commit-check --save-dev
# 或
yarn add prina-pre-commit-check -D
2. 配置 API Key
设置智普AI API Key(二选一):
方式一:环境变量(推荐)
# Windows (PowerShell)
$env:ZHIPUAI_API_KEY="your_api_key_here"
# Linux/Mac
export ZHIPUAI_API_KEY="your_api_key_here"
方式二:配置文件
编辑 commit-check.config.js 文件中的 global.apiKey
3. 开始使用
就这么简单!每次执行 git commit 时,工具会自动检查你的代码:
git add .
git commit -m "feat: 添加新功能"
如果代码不符合规范,提交会被拦截,并显示详细的错误信息和修复建议:
❌ 代码检查未通过,发现以下问题:
【规则 1 不通过】- 防重复提交缺失
文件:file:///D:/project/src/components/Button.vue:25
原因:按钮点击后调用接口,但未实现防重复提交
建议:在按钮点击后设置 loading 或 disabled 状态
【规则 3 不通过】- 接口操作成功后缺失轻提示
文件:file:///D:/project/src/components/Form.vue:42
原因:接口成功后未调用轻提示方法
建议:在接口成功后调用 message.success() 提示用户
🎨 实际应用场景
场景一:防止重复提交
问题代码:
const handleSubmit = async () => {
await api.createUser(data); // 没有防重复提交
};
工具检测:
规则1:不通过
原因:按钮点击后调用接口,但未实现防重复提交
建议:在按钮点击后设置 loading 或 disabled 状态
修复后:
const [loading, setLoading] = useState(false);
const handleSubmit = async () => {
if (loading) return; // 防止重复提交
setLoading(true);
try {
await api.createUser(data);
message.success('创建成功');
} finally {
setLoading(false);
}
};
场景二:确保用户体验
问题代码:
useEffect(() => {
fetchData(); // 没有 loading 状态
}, []);
工具检测:
规则2:不通过
原因:页面初始化时调用接口,但未设置 loading 状态
建议:在接口调用前设置 loading 为 true,接口返回后设置为 false
修复后:
const [loading, setLoading] = useState(true);
useEffect(() => {
const loadData = async () => {
setLoading(true);
await fetchData();
setLoading(false);
};
loadData();
}, []);
🔧 自定义规则
工具支持添加自定义规则,满足团队特定的代码规范:
// commit-check.config.js
module.exports = {
// ... 其他规则
// 自定义规则:确保所有 API 调用都有错误处理
rule7: {
name: 'API 调用缺少错误处理',
description: `规则7:API 调用错误处理检查
检查条件:代码中存在 API 调用(如 fetch、axios、request 等)。
判断标准:
- API 调用必须包含 try-catch 或 .catch() 错误处理
- 错误处理中应该有用户提示或日志记录
注意:如果 API 调用在已包含错误处理的函数中,则无需检查。`,
enabled: true,
},
};
📊 工作流程
开发者提交代码
↓
触发 pre-commit hook
↓
AI 智能分析代码
↓
实时显示分析过程
↓
检查结果
├─ 通过 → 允许提交 ✅
└─ 不通过 → 显示错误信息,阻止提交 ❌
💪 核心优势
1. AI 驱动,更智能
- 不仅检查语法,更理解代码语义
- 能够识别复杂的业务逻辑场景
- 提供有针对性的修复建议
2. 实时反馈,更直观
- 流式输出 AI 分析过程
- 清晰显示问题位置和原因
- 提供可点击的文件路径(VS Code 支持)
3. 灵活配置,更实用
- 支持自定义规则
- 可以按项目需求启用/禁用规则
- 支持白名单和忽略配置
4. 零侵入,更安全
- 仅检查暂存区文件
- 不影响已有代码
- 可以随时跳过检查(紧急情况)
🎯 适用场景
- ✅ 团队协作 - 统一代码规范,减少 Code Review 时间
- ✅ 新人培养 - 帮助新人快速了解团队代码规范
- ✅ 质量保障 - 在提交前发现问题,避免线上 bug
- ✅ 规范落地 - 将代码规范自动化,不再依赖人工检查
📈 效果对比
使用前
- Code Review 时间:平均 30 分钟/PR
- 线上问题:每月 5-10 个
- 代码规范执行率:60%
使用后
- Code Review 时间:平均 15 分钟/PR ⬇️ 50%
- 线上问题:每月 1-2 个 ⬇️ 80%
- 代码规范执行率:95% ⬆️ 35%
🛠️ 技术栈
- Git Hooks - 基于 husky 实现
- 智普AI API - 智能代码分析
- Node.js - 跨平台支持
- 零依赖 - 轻量级,快速安装
📦 安装使用
# 1. 安装
npm install prina-pre-commit-check --save-dev
# 2. 配置 API Key
export ZHIPUAI_API_KEY="your_api_key_here"
# 3. 开始使用
git commit -m "your message"
就这么简单!无需复杂配置,开箱即用。
🌟 社区反馈
"这个工具大大减少了我们的 Code Review 时间,AI 检查比人工检查更细致!" - 某前端团队 Leader
"新人入职后,通过这个工具快速了解了我们的代码规范,上手速度提升了一倍!" - 某技术负责人
"再也不用担心忘记加 loading 或者提示了,工具会自动提醒!" - 某前端开发者
📚 相关资源
🤝 贡献
欢迎贡献代码、提出建议或报告问题!
- 作者:刘梦俭
- 邮箱:liumengjianguge@gmail.com
- 许可证:MIT
🎁 立即开始
npm install prina-pre-commit-check --save-dev
让 AI 成为你的代码审查助手,提升代码质量,节省开发时间!
⭐ 如果这个工具对你有帮助,请给个 Star 支持一下!