网淘吧来吧,欢迎您!

返回首页 微信
微信
手机版
手机版

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 SHA
  • PR_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

相关文章

您是本站第291676名访客 今日有273篇新文章/评论