错误分流指南

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

有可复现示例的错误

这些是最佳错误报告。首先,考虑报告的错误实际上是否是一个问题,或者是否是预期的 Ruby 行为。如果是预期的 Ruby 行为,请使用预期的行为原因更新问题,并将状态设置为已拒绝。

如果报告的错误似乎是一个实际错误,请尝试使用主分支复现该错误。如果你无法在主分支上复现该问题,请尝试在报告错误的分支的最新版本上复现该问题。如果你在这两种情况下都无法复现该问题,请更新问题,说明你无法复现该问题,询问报告者是否可以使用主分支或更高版本复现该问题,并将状态设置为反馈。

如果你可以使用主分支复现该示例,请尝试找出导致该问题的原因。如果你有信心,请尝试针对该问题进行修补,更新问题并附加修补程序。尝试找出应将哪个提交者分配给该问题,并将其设置为受让人,并将状态设置为已分配。

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

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

没有重现程序的崩溃错误

许多已报告的错误几乎没有任何内容,除了崩溃报告,通常没有办法重现问题。这些错误难以分类,因为它们通常不包含足够的信息。

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

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

带有第三方 C 扩展的崩溃错误

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

非错误报告

错误跟踪器中任何不是问题报告的问题都应将跟踪器从“错误”更改为“功能”(新功能或性能改进)或“其他”。可以进行此更改而不添加注释。

陈旧问题

有很多问题已经陈旧,几个月甚至几年都没有更新。对于反馈状态下的陈旧问题,其中尚未收到反馈,你可以将状态更改为已关闭,而无需添加注释。对于已分配状态下的陈旧问题,你可以联系受让人,看看他们是否可以更新问题。如果受让人不再是活跃的提交者,请将其从受让人中移除,并将状态更改为打开。