代码审查(Code Review)是软件开发中保证代码质量的重要环节,但传统的 Code Review 往往面临几个痛点:审查周期长、人工审查容易遗漏细节、团队规范执行不一致等问题。OpenCode 作为一款强大的 AI 编程助手 CLI 工具,不仅能帮你写代码,还能充当智能代码审查员,自动检查代码中的潜在问题、风格违规和安全漏洞。
本文将详细介绍如何利用 OpenCode 构建自动化代码审查工作流,涵盖从基础配置到高级技巧的完整实践。
OpenCode 的架构设计让它天然适合代码审查任务。它通过 LSP 服务器深度理解代码结构,支持自定义规则系统(AGENTS.md),还具备上下文管理能力,可以一次性分析多个文件。
相比传统的 Code Review 工具,OpenCode 有以下优势:
上下文感知:它能够理解整个项目的代码结构,而非单文件分析
可自定义审查规则:通过 AGENTS.md 配置团队特有的编码规范
支持多种编程语言:借助 LSP 服务器,支持 JavaScript、Python、Go、PHP、Rust 等主流语言
交互式审查:发现问题后可以立即追问、深入分析
首先,在项目根目录创建或编辑 .opencode/rules/code-review.md,定义代码审查的标准:
# Code Review Rules ## 通用规则 - 检查未使用的变量和导入 - 检查硬编码的敏感信息(密码、密钥、Token) - 检查错误处理是否完善 - 检查函数复杂度是否过高 ## 安全规则 - 检查 SQL 注入风险 - 检查 XSS 漏洞 - 检查不安全的文件操作 - 检查权限控制是否缺失 ## 性能规则 - 检查 N+1 查询问题 - 检查内存泄漏风险 - 检查不必要的重复计算 - 检查大对象的不合理引用
然后在 AGENTS.md 中引用这个规则文件:
## Code Review 模式 当执行代码审查任务时,加载 .opencode/rules/code-review.md 中的规则。 审查流程: 1. 先理解代码的整体结构和功能 2. 逐文件检查代码质量 3. 汇总问题并按严重程度排序 4. 给出具体的修复建议
最基础的用法是直接让 OpenCode 审查单个文件:
Review src/services/UserService.php for potential bugs and security issues.
OpenCode 会结合 LSP 分析结果,给出类似这样的回复:
## UserService.php 审查报告 ### 严重问题 1. SQL 注入风险(第 45 行) - 使用了字符串拼接构造 SQL 查询 - 建议使用参数绑定 ### 建议改进 1. 未使用的导入(第 10 行) - `use Carbon\Carbon` 未被使用 - 建议移除
对于跨文件的代码变更,可以一次性提供多个文件:
Review these files for consistency and potential issues: - src/Controllers/OrderController.php - src/Services/OrderService.php - src/Models/Order.php Focus on data flow and error handling between them.
OpenCode 会分析文件之间的调用关系,发现接口不匹配或数据流异常等问题。
审查 Git 变更时,可以先查看 diff:
Run git diff main...feature-branch and review all changes.
OpenCode 会获取 Git diff 输出,逐段审查代码变更,确保新增代码符合项目规范。
通过 OpenCode 的自定义命令功能,可以创建一键审查快捷指令。在 opencode.json 中配置:
{
"commands": [
{
"name": "review",
"description": "审查当前分支的代码变更",
"command": "git diff --cached && echo '---' && git diff HEAD --stat"
},
{
"name": "review-all",
"description": "审查整个项目的代码质量",
"command": "echo 'Reviewing all source files for code quality issues...'"
}
]
}
这样在终端中只需输入:
/review
OpenCode 就会自动获取暂存区的变更内容并进行审查。
不要试图一次审查所有内容,而是分层次进行:
第一层:语法和类型检查 — 由 LSP 自动完成,OpenCode 汇总结果
第二层:代码风格检查 — 检查命名规范、代码格式
第三层:逻辑审查 — 检查业务逻辑是否正确
第四层:安全审查 — 检查潜在的安全漏洞
第五层:架构审查 — 检查设计模式和架构合理性
高效的审查需要好的提示词。以下是一些模板:
作为资深代码审查员,请审查以下代码: [粘贴代码] 请从以下维度分析: 1. 功能正确性:是否存在逻辑错误? 2. 安全性:是否存在安全漏洞? 3. 性能:是否存在性能瓶颈? 4. 可维护性:代码是否易于理解和修改? 5. 规范遵从:是否符合 [语言/框架] 的最佳实践? 每个问题请标注严重程度(严重/主要/次要),并给出具体的修改建议。
将代码审查集成到 Git 工作流中,在 pre-commit 钩子中调用 OpenCode:
#!/bin/bash # .git/hooks/pre-commit echo "Running code review on staged changes..." staged_files=$(git diff --cached --name-only --diff-filter=ACM | grep -E '\.(php|js|py|go)$') if [ -n "$staged_files" ]; then opencode "Review these staged files for critical issues: $staged_files" fi
这样每次提交前都会自动审查,从源头拦截问题。
在团队中使用 OpenCode 做代码审查时,AGENTS.md 就成了团队规范的最佳载体。将团队的编码规范写入 AGENTS.md,所有成员都能获得一致的审查标准。
## 团队编码规范(全员适用) ### PHP 规范 - 使用 PSR-12 编码标准 - 类型声明必须完整(PHP 7.4+) - 禁止使用 `eval()`、`extract()` 等危险函数 ### 数据库规范 - 所有 SQL 查询必须使用参数绑定 - 禁止在循环中执行数据库查询 - 大表查询必须加索引提示
这样当任何团队成员发起代码审查时,OpenCode 都会自动应用这些规范进行检查,确保团队代码风格统一。
OpenCode 作为 AI 编程助手,在代码审查领域的应用潜力巨大。通过合理配置规则系统、自定义命令和 Git Hooks,可以将它打造成一个强大的自动化代码审查工具。与传统的人工 Code Review 相比,OpenCode 能更快地发现低级错误和安全隐患,让开发人员能专注于更高层面的架构和设计讨论。
关键要点:
代码审查不是为了找茬,而是为了提升团队整体代码质量。OpenCode 让这一过程更加高效和一致,值得每个开发团队尝试。