# OpenClaw 实战:OpenClaw + Git 代码审查助手
代码审查是保证代码质量的重要环节,但手动审查既耗时又容易遗漏问题。今天,我们就用 OpenClaw 打造一个智能代码审查助手,让代码审查变得高效而全面!
—
## 一、系统概述
### 我们要做什么?
构建一个 Git 代码审查助手,它能:
– 🔍 自动分析代码变更
– 🐛 发现潜在的 bug 和问题
– 💡 提供改进建议
– 📝 生成审查报告
– ✅ 检查代码规范
– 🔒 发现安全隐患
– 📊 代码质量评分
### 技术栈
– **OpenClaw** – 核心分析引擎
– **Git** – 版本控制
– **Git diff** – 代码变更分析
– **ESLint/Prettier** – 可选的代码规范工具
—
## 二、准备工作
### 1. 创建代码审查工作目录
“`bash
# 进入 OpenClaw 工作区
cd ~/.openclaw/workspace
# 创建代码审查目录
mkdir -p code-review/{templates,reports,archives}
“`
目录结构:
“`
code-review/
├── templates/ # 审查模板
├── reports/ # 审查报告
├── archives/ # 历史归档
└── config.json # 配置文件
“`
### 2. 创建配置文件
在 `code-review/config.json` 创建:
“`json
{
“review_rules”: {
“check_bugs”: true,
“check_security”: true,
“check_performance”: true,
“check_style”: true,
“check_documentation”: true
},
“severity_levels”: {
“critical”: [“security”, “data_loss”],
“high”: [“bug”, “performance”],
“medium”: [“style”, “readability”],
“low”: [“documentation”, “nitpick”]
},
“output_format”: “markdown”
}
“`
### 3. 创建审查模板
在 `code-review/templates/review-template.md` 创建:
“`markdown
# 代码审查报告
## 基本信息
– **项目**: {{project_name}}
– **分支**: {{branch}}
– **提交**: {{commit_hash}}
– **审查时间**: {{review_time}}
– **审查人**: {{reviewer}}
## 变更概览
– **变更文件**: {{files_changed}}
– **新增行数**: {{lines_added}}
– **删除行数**: {{lines_removed}}
– **净变更**: {{net_change}}
## 审查结果
### 🔴 严重问题 ({{critical_count}})
{{critical_issues}}
### 🟠 高优先级问题 ({{high_count}})
{{high_issues}}
### 🟡 中优先级问题 ({{medium_count}})
{{medium_issues}}
### 🟢 建议 ({{low_count}})
{{low_issues}}
## 代码质量评分
– **总体评分**: {{overall_score}}/100
– **功能性**: {{functionality_score}}/100
– **可维护性**: {{maintainability_score}}/100
– **安全性**: {{security_score}}/100
– **性能**: {{performance_score}}/100
## 👍 做得好的地方
{{positive_points}}
## ✅ 审查结论
{{conclusion}}
## 📋 行动清单
– [ ] {{action1}}
– [ ] {{action2}}
—
*报告生成时间: {{timestamp}}*
“`
—
## 三、创建代码审查 Agent
### 1. 创建专门的 Agent
“`bash
# 创建代码审查 Agent
openclaw agents add code-reviewer
“`
### 2. 配置 Agent 的 SOUL.md
编辑 `~/.openclaw/workspace-code-reviewer/SOUL.md`:
“`markdown
# 代码审查专家
## 角色定位
你是一个专业的代码审查专家,精通多种编程语言,能够发现代码中的问题并提供改进建议。
## 核心能力
1. Bug 发现 – 识别潜在的逻辑错误和边界情况
2. 安全审查 – 发现安全漏洞和风险
3. 性能分析 – 识别性能问题和优化机会
4. 代码规范 – 检查代码风格和最佳实践
5. 文档审查 – 检查注释和文档完整性
6. 架构建议 – 提供代码结构和设计改进
## 审查原则
– 建设性的反馈,而不是批评
– 具体的问题定位,而不是模糊的描述
– 提供改进建议,而不是只指出问题
– 尊重开发者的工作,同时保证代码质量
– 区分问题的优先级,关注重要问题
## 支持的语言
– JavaScript/TypeScript
– Python
– Java
– Go
– 其他主流编程语言
“`
—
## 四、代码审查流程
### 1. 获取代码变更
“`bash
# 进入项目目录
cd ~/projects/my-project
# 查看当前分支状态
git status
# 查看工作区变更
git diff
# 查看某个提交的变更
git show <commit-hash>
# 比较两个分支
git diff main..feature-branch
“`
### 2. 进行代码审查
让 OpenClaw 审查代码变更:
“`
请帮我审查这个 Git 仓库的代码变更:
项目路径: ~/projects/my-project
比较分支: main..feature/new-feature
配置文件: code-review/config.json
请按以下步骤审查:
1. 获取 git diff 输出
2. 分析所有变更的文件
3. 识别以下类型的问题:
– 🔴 严重问题(安全漏洞、数据丢失风险)
– 🟠 高优先级(bug、性能问题)
– 🟡 中优先级(代码风格、可维护性)
– 🟢 建议(文档、小改进)
4. 对每个问题:
– 指出具体的文件和行号
– 说明问题是什么
– 解释为什么这是个问题
– 提供具体的改进建议
– 如果可能,提供修复后的代码示例
5. 生成代码质量评分
6. 找出做得好的地方
7. 给出审查结论和建议
8. 使用审查模板生成完整报告
审查标准:
– 功能性:代码是否正确实现了功能
– 可维护性:代码是否易读、易修改
– 安全性:是否存在安全风险
– 性能:是否存在性能问题
– 文档:注释和文档是否完整
“`
### 3. 审查报告示例
OpenClaw 会生成这样的报告:
“`markdown
# 代码审查报告
## 基本信息
– **项目**: My Awesome Project
– **分支**: main..feature/user-auth
– **提交**: abc123def456
– **审查时间**: 2026-04-19 14:30:00
– **审查人**: OpenClaw Code Reviewer
## 变更概览
– **变更文件**: 5
– **新增行数**: +234
– **删除行数**: -45
– **净变更**: +189
## 审查结果
### 🔴 严重问题 (1)
#### 问题 1: SQL 注入风险
**文件**: `src/db/user.js`
**行号**: 42-45
**问题**: 使用字符串拼接构建 SQL 查询
**代码**:
“`javascript
const query = `SELECT * FROM users WHERE id = ‘${userId}’`;
“`
**为什么这是问题**:
如果 userId 来自用户输入,攻击者可以通过输入 `’ OR ‘1’=’1` 来获取所有用户数据。
**改进建议**:
使用参数化查询:
“`javascript
const query = ‘SELECT * FROM users WHERE id = ?’;
db.query(query, [userId]);
“`
### 🟠 高优先级问题 (2)
#### 问题 2: 缺少错误处理
**文件**: `src/api/auth.js`
**行号**: 15-20
**问题**: 异步函数没有 try-catch 错误处理
**代码**:
“`javascript
async function login(username, password) {
const user = await db.findUser(username);
return verifyPassword(password, user.password);
}
“`
**为什么这是问题**:
如果 db.findUser 失败,整个应用会崩溃。
**改进建议**:
“`javascript
async function login(username, password) {
try {
const user = await db.findUser(username);
if (!user) throw new Error(‘User not found’);
return verifyPassword(password, user.password);
} catch (error) {
logger.error(‘Login failed:’, error);
throw new AuthenticationError(‘Login failed’);
}
}
“`
### 🟡 中优先级问题 (3)
#### 问题 3: 变量命名不够清晰
**文件**: `src/utils/helpers.js`
**行号**: 8
**问题**: 变量名 `d` 不够描述性
**代码**:
“`javascript
const d = new Date();
“`
**改进建议**:
“`javascript
const currentDate = new Date();
“`
### 🟢 建议 (2)
#### 建议 1: 添加 JSDoc 注释
**文件**: `src/services/user-service.js`
**建议**: 为公共函数添加 JSDoc 注释
**示例**:
“`javascript
/**
* 创建新用户
* @param {Object} userData – 用户数据
* @param {string} userData.name – 用户名
* @param {string} userData.email – 邮箱
* @returns {Promise<User>} 创建的用户对象
*/
async function createUser(userData) {
// …
}
“`
## 代码质量评分
– **总体评分**: 72/100
– **功能性**: 85/100 – 功能基本实现,但缺少错误处理
– **可维护性**: 70/100 – 代码结构清晰,但命名和注释需要改进
– **安全性**: 50/100 – 存在严重的 SQL 注入风险,需要立即修复
– **性能**: 80/100 – 没有明显的性能问题
## 👍 做得好的地方
1. 代码结构清晰,模块化做得很好
2. 使用了 async/await,异步代码易读
3. 有基本的单元测试覆盖
4. Git 提交信息写得很清楚
## ✅ 审查结论
**⚠️ 需要修改后才能合并**
主要问题:
1. 🔴 必须修复 SQL 注入漏洞
2. 🟠 建议添加错误处理
3. 🟡 改进代码命名和注释
## 📋 行动清单
– [ ] 修复 SQL 注入问题(高优先级)
– [ ] 添加错误处理(中优先级)
– [ ] 改进变量命名(低优先级)
– [ ] 添加 JSDoc 注释(建议)
—
*报告生成时间: 2026-04-19 14:35:00*
“`
—
## 五、高级审查功能
### 1. 预提交钩子
“`bash
# 创建 Git 预提交钩子
#!/bin/bash
# .git/hooks/pre-commit
echo “Running code review…”
# 获取暂存的变更
git diff –cached > /tmp/staged-changes.diff
# 调用 OpenClaw 进行快速审查
openclaw “请快速审查这些代码变更,只检查严重问题:
$(cat /tmp/staged-changes.diff)
如果发现严重问题,返回 ‘BLOCK’,否则返回 ‘OK'”
if [ $? -ne 0 ]; then
echo “Code review failed, please fix the issues.”
exit 1
fi
echo “Code review passed!”
exit 0
“`
### 2. Pull Request 审查
“`
请帮我审查这个 Pull Request:
PR 信息:
– 标题: Add user authentication feature
– 描述: Implement login, logout, and password reset functionality
仓库: ~/projects/my-project
基础分支: main
目标分支: feature/user-auth
请:
1. 比较两个分支的差异
2. 进行全面的代码审查
3. 生成详细的审查报告
4. 给出是否可以合并的建议
5. 如果不能合并,列出必须修复的问题
“`
### 3. 代码质量趋势分析
“`
请分析这个项目的代码质量趋势:
仓库: ~/projects/my-project
时间范围: 最近 3 个月
请:
1. 获取最近 3 个月的提交历史
2. 对每个重要提交进行抽样审查
3. 分析代码质量的变化趋势
4. 识别持续存在的问题
5. 生成趋势报告
6. 提供改进建议
“`
—
## 六、特定语言的审查规则
### 1. JavaScript/TypeScript 审查清单
“`
请审查这个 JavaScript/TypeScript 代码,重点检查:
✅ 类型安全(TypeScript)
– 是否正确使用了类型注解
– 是否有 any 类型的滥用
– 是否有类型断言的过度使用
✅ 错误处理
– 异步函数是否有 try-catch
– Promise 是否有 .catch()
– 是否正确处理了错误边界
✅ 性能
– 避免不必要的重渲染(React)
– 避免内存泄漏
– 合理使用防抖和节流
✅ 安全
– 避免 XSS 漏洞
– 避免原型污染
– 安全地使用 eval()
✅ 最佳实践
– 使用 const/let,避免 var
– 避免全局变量
– 合理的函数长度
– 清晰的变量命名
“`
### 2. Python 审查清单
“`
请审查这个 Python 代码,重点检查:
✅ 类型提示
– 是否使用了类型注解
– 是否使用了 dataclass
– 是否有合理的类型检查
✅ 错误处理
– 是否正确使用了 try-except
– 避免裸露的 except
– 合理的异常层级
✅ Python 风格
– 遵循 PEP 8
– 使用列表推导式
– 合理使用生成器
– 避免可变默认参数
✅ 安全
– 避免 SQL 注入
– 安全地使用 subprocess
– 避免路径遍历漏洞
“`
—
## 七、与 CI/CD 集成
### 1. GitHub Actions 集成
“`yaml
# .github/workflows/code-review.yml
name: Code Review
on: [pull_request]
jobs:
review:
runs-on: ubuntu-latest
steps:
– uses: actions/checkout@v2
– name: Get diff
id: diff
run: |
git diff ${{ github.base_ref }}…${{ github.head_ref }} > diff.txt
echo “::set-output name=diff::$(cat diff.txt)”
– name: Run OpenClaw review
uses: your-openclaw-action@v1
with:
prompt: |
请审查这个 PR 的代码变更:
${{ steps.diff.outputs.diff }}
生成审查报告,使用 Markdown 格式。
“`
—
## 八、最佳实践
### 1. 代码审查原则
– 审查是为了提高代码质量,不是批评个人
– 区分问题的优先级,关注最重要的问题
– 提供具体的改进建议,而不只是指出问题
– 承认做得好的地方,给予正面反馈
– 保持尊重和建设性的语气
### 2. 审查流程建议
– 小步快跑,频繁审查,避免大 PR
– 审查前先理解代码要解决的问题
– 审查时关注整体架构,不只是细节
– 审查后跟进修改,确保问题得到解决
### 3. 持续改进
– 定期回顾审查发现的问题
– 识别常见问题模式
– 更新审查清单和标准
– 分享审查经验和最佳实践
—
## 总结
OpenClaw + Git 代码审查助手让代码质量保证变得智能而高效:
1. 🔍 **自动分析** – 智能识别代码问题
2. 💡 **改进建议** – 提供具体的修复方案
3. 📊 **质量评分** – 量化代码质量
4. 📝 **审查报告** – 完整的审查文档
开始用 OpenClaw 做代码审查,让你的代码质量更上一层楼!🚀
—
*祝你的代码质量越来越好!💻*


暂无评论内容