Bug 分流指南

本指南讨论了在 Ruby 的 bug 跟踪器中对 bug 进行分流的建议。

有可重现示例的 Bug

这些是最好的 bug 报告。首先,考虑报告的 bug 是否真的是问题,或者是否是预期的 Ruby 行为。如果是预期的 Ruby 行为,请更新 issue,说明该行为是预期的原因,并将状态设置为“已拒绝”。

如果报告的 bug 看起来确实是 bug,请尝试使用 master 分支重现该 bug。如果您无法在 master 分支上重现该问题,请尝试在报告 bug 的分支的最新版本上重现该问题。如果您在这两种情况下都无法重现该问题,请更新 issue,说明您无法重现该问题,询问报告者是否可以使用 master 分支或更高版本重现该问题,并将状态设置为“反馈”。

如果可以使用 master 分支重现该示例,请尝试找出导致该问题的原因。如果您觉得可以胜任,请尝试为该问题编写补丁,更新 issue 并附加补丁。尝试找出应将哪个提交者分配给该 issue,并将他们设置为受让人,并将状态设置为“已分配”。

如果您无法使用 master 分支重现该示例,但可以在该分支的最新版本上重现该问题,则很可能该 bug 已被修复,但尚未向后移植。尝试确定哪个提交修复了它,并更新 issue,指出该问题已修复但尚未向后移植。如果 Ruby 版本处于安全维护阶段或不再受支持,请将状态更改为“已关闭”。此更改可以在不添加注释的情况下进行,以避免向邮件列表发送垃圾邮件。

对于可能需要不向后兼容的更改或可能受益于一般提交者关注或讨论的问题,请考虑将它们添加为下一次提交者会议的议程项 (bugs.ruby-lang.org/issues/14770)。

没有重现步骤的崩溃 Bug

许多报告的 bug 除了崩溃报告之外,几乎没有其他信息,而且通常无法重现该问题。这些 bug 很难进行分流,因为它们通常不包含足够的信息。

对于这些 bug,如果 Ruby 版本是 master 分支或该分支的最新版本,并且该分支处于正常维护阶段,请查看回溯并查看是否可以确定导致该问题的原因。如果您可以猜测可能导致该问题的原因,请查看是否可以整理出一个可重现的示例(这通常很困难)。如果您无法猜测可能导致该问题的原因,或者无法自己整理出可重现的示例,请要求报告者提供可重现的示例,并将状态更改为“反馈”。

如果 Ruby 版本不再是当前版本(例如,Ruby 2.5 分支的最新版本是 2.5.5 时为 2.5.0),请在 issue 中添加一条注释,要求报告者尝试该分支的最新 Ruby 版本并报告结果,并将状态更改为“反馈”。如果 Ruby 版本处于安全维护阶段或不再受支持,请将状态更改为“已关闭”。此更改可以在不添加注释的情况下进行。

带有第三方 C 扩展的崩溃 Bug

如果崩溃发生在第三方 C 扩展内部,请尝试找出它发生在哪个 C 扩展内部,并在 issue 中添加一条注释,以将该问题报告给该 C 扩展,并将状态设置为“第三方问题”。

非 Bug 报告

bug 跟踪器中任何不是问题报告的 issue 都应将跟踪器从“Bug”更改为“Feature”(新功能或性能改进)或“Misc”。此更改可以在不添加注释的情况下进行。

过期的 Issue

有许多 issue 已经过期,数月甚至数年都没有更新。对于处于“反馈”状态的过期 issue,如果尚未收到反馈,则可以在不添加注释的情况下将状态更改为“已关闭”。对于处于“已分配”状态的过期 issue,您可以联系受让人,看看他们是否可以更新该 issue。如果受让人不再是活跃的提交者,请将其从受让人中删除,并将状态更改为“打开”。