Bug Triaging 指南
本指南讨论了在 Ruby 错误跟踪器中进行 Bug Triaging 的建议。
带有可重现示例的 Bug
这是最好的 Bug 报告。首先,请考虑报告的 Bug 实际上是否是一个问题,还是预期的 Ruby 行为。如果是预期的 Ruby 行为,请在问题中说明为何该行为是预期的,并将状态设置为“已拒绝”。
如果报告的 Bug 似乎是一个实际的 Bug,请尝试使用 master 分支重现该 Bug。如果您无法在 master 分支上重现该问题,请尝试在报告 Bug 的分支的最新版本上重现该问题。如果您在这两种情况下都无法重现该问题,请在问题中说明您无法重现该问题,询问报告者是否可以使用 master 分支或后续版本重现该问题,并将状态设置为“需要反馈”。
如果您可以使用 master 分支重现示例,请尝试找出导致问题的根源。如果您感觉可以胜任,请尝试修复该问题,更新问题并附上补丁。尝试找出应该将哪个提交者分配给该问题,并将他们设置为负责人,并将状态设置为“已分配”。
如果您不能使用 master 分支重现示例,但在分支的最新版本上可以重现该问题,那么该 Bug 很可能已经修复,但尚未向后移植。尝试确定是哪个提交修复了该问题,并在问题中说明该问题已修复但尚未向后移植。如果 Ruby 版本处于安全维护阶段或不再受支持,请将状态更改为“已关闭”。此更改可以在不添加注释的情况下进行,以避免垃圾邮件邮件列表。
对于可能需要向后不兼容更改或可能受益于提交者总体关注或讨论的问题,请考虑将其作为下一个提交者会议的议程项(bugs.ruby-lang.org/issues/14770)。
没有重现器的崩溃 Bug
许多报告的 Bug 除了崩溃报告外没有多少信息,通常也无法重现问题。这些 Bug 很难进行 Triaging,因为它们通常包含的信息不够。
对于这些 Bug,如果 Ruby 版本是 master 分支或分支的最新版本,并且该分支处于正常维护阶段,请查看回溯信息,看看是否能确定可能导致问题的根源。如果您能猜出可能导致问题的根源,请尝试创建一个可重现的示例(这通常非常困难)。如果您无法猜出可能导致问题的根源,或者无法自己创建可重现的示例,请要求报告者提供可重现的示例,并将状态更改为“需要反馈”。
如果 Ruby 版本不再是最新的(例如,当 Ruby 2.5 分支的最新版本为 2.5.5 时,报告的是 2.5.0),请在问题中添加一条注释,要求报告者尝试使用该分支的最新 Ruby 版本并反馈,并将状态更改为“需要反馈”。如果 Ruby 版本处于安全维护阶段或不再受支持,请将状态更改为“已关闭”。此更改可以在不添加注释的情况下进行。
带有第三方 C 扩展的崩溃 Bug
如果崩溃发生在第三方 C 扩展内部,请尝试找出发生在哪个 C 扩展中,并在问题中添加一条注释,报告该问题给该 C 扩展,并将状态设置为“第三方问题”。
非 Bug 报告
错误跟踪器中任何不是问题报告的问题,都应将跟踪器从“Bug”更改为“功能”(新功能或性能改进)或“其他”。此更改可以在不添加注释的情况下进行。
过时的问题
有很多问题已经过时,几个月甚至几年都没有更新。对于处于“需要反馈”状态但尚未收到反馈的过时问题,您可以将状态更改为“已关闭”,而无需添加注释。对于处于“已分配”状态的过时问题,您可以联系负责人,看看他们是否可以更新该问题。如果负责人不再是活跃的提交者,请将其移除,并将状态更改为“已打开”。