pr-reviewer
2026-03-27
新闻来源:网淘吧
围观:15
电脑广告
手机广告
PR 审阅者
为 GitHub 拉取请求提供自动化代码审查。分析代码差异以发现安全问题、错误处理漏洞、代码风格问题和测试覆盖率。
先决条件
ghCLI 已安装并完成身份验证 (gh auth status)- 仓库访问权限(至少需要读取权限,发布评论需要写入权限)
- 可选:
golangci-lint用于 Go 代码检查,ruff用于 Python 代码检查
快速开始
# Review all open PRs in current repo
scripts/github/pr-reviewer.sh check
# Review a specific PR
scripts/github/pr-reviewer.sh review 42
# Post review as GitHub comment
scripts/github/pr-reviewer.sh post 42
# Check status of all open PRs
scripts/github/pr-reviewer.sh status
# List unreviewed PRs (useful for heartbeat/cron integration)
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及其HEAD 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追踪HEAD提交SHA。仅在推送新提交时重新审查。使用review <PR编号>强制重新审查。
报告格式
报告以markdown文件形式保存在输出目录中。每份报告包含:
- PR元数据(作者、分支、变更内容)
- 提交记录列表
- 按语言/类型分类的变更文件
- 自动化差异检测结果(含文件、行号、分类和上下文)
- 测试覆盖率分析
- 本地代码检查结果(当仓库在本地检出时)
- 总结判定:🔴 安全风险 / 🟡 需重点关注 / 🔵 次要提醒 / ✅ 状态良好
心跳检测/定时任务集成
添加到定期检查中(心跳检测、定时任务或持续集成流程):
UNREVIEWED=$(scripts/github/pr-reviewer.sh list-unreviewed)
if [ -n "$UNREVIEWED" ]; then
scripts/github/pr-reviewer.sh check
fi
扩展功能
脚本中的分析模式按语言组织。通过向analyze_diff()功能:
# Add a new Go pattern
go_patterns.append((r'^\+.*os\.Exit\(', 'RISK', 'Direct os.Exit() — consider returning error'))
文章底部电脑广告
手机广告位-内容正文底部
上一篇:Tavily
下一篇:Document Pro


微信扫一扫,打赏作者吧~