错误分类和问题管理#

问题跟踪器对于项目中的 沟通很重要,因为它是提出功能请求、报告错误、确定要处理的主要项目以及讨论优先级的集中位置。因此,整理问题列表、为问题添加标签并关闭已解决或无法解决的问题非常重要。

对问题进行分类不需要任何特殊的 Matplotlib 内部专业知识,对项目非常有价值,我们欢迎任何人参与问题分类!但是,不属于 Matplotlib 组织的人员无权更改里程碑、添加标签或关闭问题。如果您没有足够的 GitHub 权限做某事(例如添加标签、关闭问题),请留下 @matplotlib/triageteam您的建议的评论标记!

解决问题以改进它们#

改善问题会增加他们成功解决的机会。可以在此处找到提交好的问题的指南。第三方可以提供有用的反馈,甚至可以就问题添加评论。以下操作通常很有用:

  • 记录缺少元素的问题以重现问题,例如代码示例

  • 建议更好地使用代码格式(例如,markdown 中的三次反引号)。

  • 建议重新制定标题和描述,使它们更明确地说明要解决的问题

  • 链接到相关问题或讨论,同时简要描述它们之间的关系,例如“另请参阅#xyz 以了解类似的尝试”或“另请参阅#xyz,其中报告了相同的事情”提供上下文并帮助讨论

  • 验证问题是否可重现

  • 将问题分类为功能请求、长期存在的错误或回归

分流小组#

如果您想加入分诊团队:

  1. 正确分类 2-3 个问题。

  2. 请分诊团队中的某个人(公开或私下)将您推荐给分诊团队。如果您与某人一起处理分类问题,他们将是一个很好的人选。

  3. 负责任地锻炼你的新力量!

任何拥有提交或分类权限的人也可以提名一个用户被邀请加入分类团队。

核心和分类团队成员的分类操作#

除了上述之外,核心团队和分诊团队的成员还可以执行以下重要任务:

  • 更新问题和 PR 的标签:查看可用的 github 标签列表。

  • 分诊问题:

    • 重现问题,如果发布的代码是错误标签,则带有“状态:已确认错误”的问题。

    • 识别回归,确定报告的错误是否在最新版本的 Matplotlib 中按预期工作,如果是,则确定最后一个工作版本。回归应该是下一个错误修复版本的里程碑,并且可以标记为“发布关键”。

    • 关闭使用问题并礼貌地指示记者使用 话语或 Stack Overflow 并标记为“社区支持”。

    • 在检查它们确实是重复的之后,关闭重复的问题。理想情况下,原始提交者将讨论转移到较旧的重复问题

    • 在留出时间(至少一周)添加额外信息后,关闭无法复制的问题

用于对问题进行分类的典型工作流程#

以下工作流程[ 1 ]是处理问题分类的好方法:

  1. 感谢记者开题

    问题跟踪器是许多人与 Matplotlib 项目本身的第一次交互,而不仅仅是使用该库。因此,我们希望它是一种热情、愉快的体验。

  2. 这是一个用法问题吗?如果是这样,请用礼貌的信息关闭它。

  3. 是否提供了必要的信息?

    检查发帖人是否填写了问题模板。如果缺少关键信息(Python 版本、使用的 Matplotlib 版本、操作系统和后端),请礼貌地要求原始发布者提供信息。

  4. 问题是否最小且可重现?

    对于错误报告,我们要求报告者提供一个最小的可重现示例。请参阅Matthew Rocklin 的这篇有用的帖子 以获得很好的解释。如果示例不可重现,或者显然不是最小的,请随时询问报告者是否可以提供示例或简化提供的示例。请承认编写最少的可重现示例是一项艰苦的工作。如果记者遇到困难,您可以尝试自己写一个。

    如果提供了可重现的示例,但您看到了简化,请添加更简单的可重现示例。

    如果您无法重现该问题,请连同您的操作系统、Python 和 Matplotlib 版本一起报告。

    如果我们需要此步骤或上一步的更多信息,请将问题标记为“状态:需要澄清”。

  5. 这是回归吗?

    虽然我们努力打造一个没有错误的库,但回归是最高优先级。如果我们破坏了以前可以工作的用户代码,我们应该在下一个补丁版本中修复它!

    尝试通过针对旧版本的 Matplotlib 运行重现代码来确定回归何时发生。这可以通过 Matplotlib 的已发布版本(以获取它最后工作的版本)或使用git bisect查找它被破坏的第一个提交来完成。

  6. 这是一个重复的问题吗?

    我们有许多未解决的问题。如果新问题似乎是重复的,请指向原始问题。如果它是明确的重复,或者一致认为它是多余的,请关闭它。确保仍然感谢记者,并鼓励他们就最初的问题发表意见,也许尝试解决它。

    如果新问题提供了相关信息,例如更好或略有不同的示例,请将其作为评论或对原始帖子的编辑添加到原始问题。

    用“状态:重复”标记已关闭的问题

  7. 确保标题准确反映问题。如果您有必要的权限,如果不清楚,请自行编辑。

  8. 添加相关标签,例如当问题是关于文档时添加“文档”,如果显然是错误则添加“Bug”,如果是新功能请求则添加“新功能”,...

    如果问题被明确定义并且修复看起来相对简单,则将问题标记为“良好的第一个问题”(并且可能是修复的描述或关于在代码库中从哪里开始寻找的提示)。

    另一个有用的步骤是标记相应的模块,例如相关时的“GUI/Qt”标签。

处理 PR 以帮助审查#

也鼓励审查代码。欢迎贡献者和用户按照我们的审查指南参与审查过程。

致谢#

此页面轻微改编自scikit-learn 项目