heydeer
GitHub 上的审查

解读审查结果

了解 HeyDeer 审查在 GitHub 和 HeyDeer 中各部分的含义。

HeyDeer 发布的内容

HeyDeer 以 GitHub PR 审查的形式发布发现的问题,并在每个问题涉及的代码行上添加行内评论。

审查正文以结论开头,并链接仍需关注的此前问题。末尾是折叠的关于本次审查部分:审查摘要、风险等级、审查深度、触发方式,以及在 HeyDeer 中查看和配置链接。

正文中还包含审查说明、待澄清下的疑问,以及无法作为行内评论发布的问题。GitHub 只接受 diff 中代码行上的行内评论,因此涉及其他代码的问题(例如被此次改动破坏、但本身未改动的调用方)会显示在其他问题下。

完整报告位于 HeyDeer Review 检查和 HeyDeer 中的审查页面。如果审查内容太长,一条 GitHub 评论放不下,其余内容会保留在完整报告中。

只有开启自动批准时,HeyDeer 才会批准 PR。

关闭在 PR 中发布审查评论后,审查结果只显示在检查中。参见发布结果。

HeyDeer 发布的所有内容都使用仓库的审查语言。

单个问题的结构

src/sync/retry.ts
18for (let attempt = 1; ; attempt++) {
19 const res = await fetch(url);
20 if (res.ok) return res;
21 await sleep(backoff(attempt));
heydeerbot
🟠 高(可靠性):遇到 404 时重试循环不会停止
fetchWithRetry() 会重试每个失败的响应,包括永远不会成功的 404,导致同步任务一直循环到超时。
建议修改
- if (res.ok) return res;
+ if (res.ok) return res;
+ if (res.status < 500 && res.status !== 429) throw new HttpError(res);
了解更多
修复建议: 只重试服务器错误和 429 响应,其他客户端错误直接抛出。
用 HeyDeer 修复
部分显示内容
标题严重程度、类别和标题,例如“🟠 高(可靠性):遇到 404 时重试循环不会停止”。
说明哪里有问题,以及会造成什么后果。
建议修改可直接提交的具体修改,在评论恰好位于要替换的代码行上时显示。
了解更多默认折叠:问题成因、修复建议、无法在此提交的修改的只读 diff,以及提出该问题的仓库检查。
相关代码评论不在相关代码行上时,指向这些行的链接。

严重程度(严重、高、中或低)表示问题的影响,与确信程度相互独立;确信程度表示 HeyDeer 对问题确实存在有多大把握。要发布更少或更多问题,请调整结合两者进行筛选的反馈范围。

如需让 HeyDeer 在独立的 PR 中修改代码,由你检查并合并,请使用用 HeyDeer 修复。

类别

类别表示发现的问题会损害什么,与严重程度无关。符合多个类别时,HeyDeer 选用本表中最先符合的一项。

类别损害什么
安全有人能做到或看到不该做、不该看的东西。
正确性代码在正常使用中给出错误结果。
可靠性代码在出错、并发、高负载、重试或部分失败时出现故障。
性能代码耗费过多时间或资源。
可维护性没有出错,但代码更难修改、测试或阅读。

审查说明

审查受到限制时,HeyDeer 会在审查正文的审查说明下、检查摘要中以及审查页面上说明原因。

审查说明处理方法
部分问题已省略每次审查根据确信程度和严重程度,只保留优先级最高的问题。修复已显示的问题或决定不处理,然后重新发起审查。
匹配的仓库检查过多HeyDeer 按文件名顺序应用匹配的检查,并跳过其余检查。请缩小它们的文件模式,然后重新发起审查。
部分仓库检查无效HeyDeer 会跳过无效的检查并列出它。请修复后重新发起审查。
部分仓库检查未能完成重新发起审查。
部分发现的问题或此前的问题未能完整评估重新发起审查以获得完整结果。

带有审查说明的审查是不完整的,因此 HeyDeer 不会批准它,它的检查也不会报告成功。

关于审查说明的更多帮助,参见故障排除。

导览

GitHub 上的审查在用 HeyDeer 修复旁边有一个导览按钮。点击后在 HeyDeer 中打开导览:相关改动归为一组,重要改动突出显示。每组改动说明要检查什么,并展示所审查提交中的这段代码。

相关的组会放在同一个标签页中。如果一个标签页中的改动涉及系统的多个部分,例如浏览器、服务器和数据库,该标签页会以一张图开头:展示这些部分如何连接,或它们之间按顺序发生的步骤。选择该图即可放大。

每组改动会标记为必读、建议阅读或略读。主线之外的改动(例如测试、文档和重复性修改)会连同原因列在其他下。审查跳过的生成文件列在其他末尾;同一 PR 的后续审查会标记自上次审查后有变更的改动组。

导览用于说明变更,而不是发现的问题清单。HeyDeer 中的审查页面也可通过导览打开它。可在审查规则中通过导览关闭。

勾选文件上的已查看即可将其折叠。当文件的所有部分都已勾选时,HeyDeer 也会在 GitHub 上将该文件标记为已查看,而文件变更时 GitHub 会清除该标记。

HeyDeer 中的审查

每次审查在 HeyDeer 中都有一个页面。可以从审查记录、检查的 Details 链接,或审查正文中的在 HeyDeer 中查看打开。

审查页面会显示触发方式,以及审查覆盖的是新改动还是整个 PR。页面还会列出反馈范围内的每个发现的问题,以及已在讨论中决定不处理下的问题。

审查运行时,审查进度会显示各个阶段以及每个审查员正在做什么。审查结束后,折叠的审查过程面板会保留每个阶段、审查耗时以及每个审查员做了什么。

当另一种反馈范围会保留不同的问题时,你可以在不改变任何内容的情况下预览:在发现的问题旁选择该范围,或在未发现问题的结果下选择预览。有写权限的人可以通过取消审查停止审查;已消耗的积分不会退回。