名称: pr-reviewer
版本: 1.0.1
描述: 自动化的 GitHub PR 代码审查工具,支持差异分析、代码检查集成和结构化报告。适用于审查拉取请求、检查安全问题、错误处理缺失、测试覆盖率和代码风格问题。支持 Go、Python 和 JavaScript/TypeScript。要求已安装并认证了仓库访问权限的 gh CLI。
元数据:
openclaw:
requires:
bins: ["gh", "python3"]
anyBins: ["golangci-lint", "ruff"]
为 GitHub 拉取请求提供自动化代码审查。分析代码差异,检查安全问题、错误处理缺失、风格问题和测试覆盖率。
gh CLI (gh auth status)golangci-lint,用于 Python 代码检查的 ruff# 审查当前仓库中所有打开的 PR
scripts/github/pr-reviewer.sh check
# 审查特定 PR
scripts/github/pr-reviewer.sh review 42
# 将审查结果作为 GitHub 评论发布
scripts/github/pr-reviewer.sh post 42
# 检查所有打开 PR 的状态
scripts/github/pr-reviewer.sh status
# 列出未审查的 PR(适用于心跳检测或定时任务集成)
scripts/github/pr-reviewer.sh list-unreviewed
设置以下环境变量,脚本也可从当前 git 仓库自动检测:
PR_REVIEW_REPO — GitHub 仓库,格式为 所有者/仓库(默认:从 gh repo view 检测)PR_REVIEW_DIR — 用于代码检查的本地检出路径(默认:当前工作目录的 git 根目录)PR_REVIEW_STATE — 状态文件路径(默认:./data/pr-reviews.json)PR_REVIEW_OUTDIR — 报告输出目录(默认:./data/pr-reviews/)PR_REVIEW_STATE (默认:./data/pr-reviews.json) — 记录已审查的 PR 及其最新的提交 SHAPR_REVIEW_OUTDIR (默认:./data/pr-reviews/) — Markdown 格式的审查报告| 类别 | 图标 | 示例 |
|---|---|---|
| 安全 | 🔴 | 硬编码凭证、AWS 密钥、代码中的敏感信息 |
| 错误处理 | 🟡 | 被忽略的错误(Go 中的 _ :=)、空的 except:(Python)、未检查的 Close() |
| 风险 | 🟠 | panic() 调用、process.exit() |
| 风格 | 🔵 | 生产代码中的 fmt.Print/print()/console.log、超长行 |
| 待办项 | 📝 | TODO、FIXME、HACK、XXX 标记 |
| 测试覆盖率 | 📊 | 源文件变更但未同步更新对应的测试文件 |
跟踪每个 PR 的最新提交 SHA。仅在有新提交推送时重新审查。使用 review <PR编号> 可强制重新审查。
报告以 Markdown 文件形式保存在输出目录中。每份报告包含:
可集成到定期检查(心跳检测、cron 任务或 CI)中:
UNREVIEWED=$(scripts/github/pr-reviewer.sh list-unreviewed)
if [ -n "$UNREVIEWED" ]; then
scripts/github/pr-reviewer.sh check
fi
脚本中的分析模式按语言组织。可以通过在 analyze_diff() 函数的相关模式列表后追加来添加新模式:
# 添加一个新的 Go 模式
go_patterns.append((r'^\+.*os\.Exit\(', 'RISK', '直接调用 os.Exit() — 建议返回错误'))