审阅者的检查表

所有进入Sage的代码都经过同行评审。原因有二:

  • 因为开发者不可能一下子想到所有的事情;

  • 因为一双新的眼睛可能会发现一个数学错误、代码中的一个角落、文档不足、缺少一致性检查等等。

任何人(如你)都可以为别人的票做这项工作。本文档列出了评审人员在决定是否准备好将票据包含到Sage中之前必须检查的内容。

  • 你知道吗 trac服务器 是?如果没有, click here .

  • 你有吗 trac帐户 ? 如果没有, click here .

现在,您可以通过阅读diff代码开始复查。

阅读差异: 差异(即票证内容)可以通过单击trac票证上显示的(绿色)分支名称获得。如果该名称显示为红色(请参见 售票区 )您可以在评论中这样说,并将票证设置为 needs_work (见 票证的状态

构建代码: 当你读代码时,你可以 rebuild Sage with the new code . 如果你不知道怎么做 下载代码click here (使用git-trac)或 here (仅限于git)。

在阅读和测试代码时,通常应检查以下内容:

  • 目的 :代码是否说明车票的目的?它会带来什么新问题吗?使用各种输入(而不仅仅是文档中的示例)测试新的或固定的功能是否会给出预期的健壮的输出(没有意外的错误或崩溃)?

  • 用户文档 :用户是否清楚使用新代码?是否所有的数学概念都涉及标准,或有解释(或链接)提供?如果他/她需要新代码,他/她能很容易地找到它吗?

  • 代码文档 :代码是否有足够的注释,以便开发人员不必怀疑它到底做了什么?

  • 习俗 :规范是否尊重 Sage's conventions 是吗? Python's convention 是吗? Cython's convention 是吗?

  • 医疗保险 :是否所有函数都包含doctest?使用 sage -coverage <files> 去检查一下。新的/修改过的方法和类的所有方面都经过了测试(参见 编写可测试的示例 )?

  • 错误修正 :如果票证包含错误修复,它是否添加一个doctest来说明错误已被修复?例如,这个新的doctest应该包含票证号 See :trac:`12345 '.

  • 加速比 :票证是否可以使任何现有代码变慢?如果票证声称可以加速某些计算,那么票证是否包含代码示例来说明该声明?罚单应该解释加速是如何实现的。

  • 编写手册 :参考手册生成时是否没有错误(同时检查html和pdf)?看到了吗 Sage手册 学习如何编写手册。

  • 看看手册 :参考手册看起来还好吗?这些更改可能会有排印错误,使得文档可以在没有明显错误的情况下生成,但这可能会导致格式错误的输出或断开的超链接。

  • 运行测试 :是否所有doctest都通过而没有错误?Sage的不相关成分可能会受到这种变化的影响。检查整个库中的所有测试,包括“长”doctest(这可以用 make ptestlong )以及任何与功能相关的可选文档。看到了吗 运行Sage的博士学位 更多信息。

现在,您可以更改票证的状态(请参见 票证的状态 ):

  • 正面评价 :如果上述问题和其他合理问题的答案是 “是的” ,您可以将票证设置为 positive_review . 在“reviewer”字段中添加您的全名(请参见 售票区

  • needs_work :如果某些内容不符合要求,请在注释中列出需要解决的所有要点,并将记录单的状态更改为 needs_work .

  • needs_info :如果您不清楚某些内容,并阻止您继续进行复查,请提出您的问题并将记录单的状态设置为 needs_info .

  • 如果你 不知道该怎么办 ,例如,如果你觉得经验不足,无法做出最终决定,请在评论中说明你已经做了什么,并询问其他人是否可以看一下。

审核人承诺 :如果您可以自己解决问题,则可以以自己的名义提交,并将提交标记为审阅者的修补程序。学习如何 click here (git-trac)或 here (仅限于git)。这个贡献也必须被审查,例如由原始补丁的作者。

有关复查的更多建议,请参阅 [WSblog].

注解

“完美是善的敌人”

审查的重点是确保遵循Sage代码指南,并且实现在数学上是正确的。请避免额外的功能要求或关于替代实现的开放式讨论。如果你想用不同的方式编写补丁,你的建议应该是一个明确的、可操作的请求。

参考文献:

WSblog

William Stein,如何裁判Sage Trac罚单,http://sagemath.blogspot.com/2010/10/how-to-deference-sage-trac-tickets.html(警告:mercurial已替换为git)