复习

本文档是Coala审查流程的指南。

我是否足够好来进行代码评审?

Yes, 如果您已经修复了新来者的问题。

复习可以帮助您理解表的另一边,并了解更多关于Coala和Python的知识。复习时,你会认识新的人,认识更多的代码,这最终会帮助你成为一名比你自己做得更好的程序员。

您完全可以帮助我们审查源代码。特别是试着复习别人的源代码,并与他们分享你所学到的东西。您可以像其他人一样使用ack和unack corobo 甚至允许您将PR设置为WIP。有关更多信息,请查看下面的部分。

通常遵循以下流程:

  1. 检查一下这些变化是否对我们有帮助。有时,人们提出的更改只对特定的用例有帮助,但可能会破坏其他用例。概念必须是好的。如果你不确定,可以考虑参与一场关于gitter的讨论!

  2. 检查自动生成。给投稿人一些提示,告诉他如何解决这些问题。

  3. 查看实际代码。提出改进和简化建议。

一定不要重数量轻质量! 保持透明和礼貌:解释为什么某些事情必须改变,而不是无缘无故地“命令”程序员遵守准则。复查总是涉及到告诉某人他们的代码不正确,即使你不是故意的,也要非常小心不要显得粗鲁!不好的评论会吓跑其他贡献者。

备注

提交应该具有合适的大小,每个逻辑更改都应该是一次提交。如果有多个更改,则这些更改会进行多个提交。不要无缘无故地提议压制承诺!

在复查时,尽量做到彻底:如果您没有发现拉请求有任何问题,那么您很可能遗漏了一些东西。

如果您没有发现任何问题的拉取请求,并确认它,一个高级成员将检查它,并执行合并,如果一切都是好的。

审查讨论的最佳实践

  1. 公关评审后,除非进行了技术讨论,否则不要对评审发表评论,或者只有在与评审人员意见不一致的情况下才进行评论。对于有地址的状态,你可以竖起大拇指,避免评论像“谢谢”或“完成”这样的肯定。

手动审核流程

Coala的审查流程如下:

  1. 任何人都可以提交提交以供审查。这些是通过GitHub上的拉取请求提交的。

  2. 拉取请求将用一个 process 标签:

    • pending review 提交刚刚被推送,正在等待审查

    • wip 拉式请求已标记为 Work in Progress 并对如何更改提交提出了意见

    • approved 开发人员已经对提交进行了审查,可以将它们合并到主分支中

    如果您没有Coala的写入权限,可以使用更改标注 corobo mark wip <URL>corobo mark pending <URL> .

  3. 开发人员将以书面形式确认提交

    • 如果成员正在审查它,请执行以下操作:

    • Looks good to me 更广为人知的是 LGTM 以防提交准备就绪。

    • 如果维护人员正在审查它,请执行以下操作:

    • ack commit_SHAcommit_SHA is ready ,以防提交准备就绪,或者

    • unack commit_SHAcommit_SHA needs work 以防它还没有准备好,需要更多的工作或

    • reack commit_SHA 如果之前确认了提交,则在没有冲突的情况下重新基址,并且重新基址不会引入逻辑问题。

    备注

    每次提交只需要一个确认,即 ack commit_SHA .

  4. 如果提交不能线性合并到主服务器中,则重新设置基址并转到第一步。

  5. 所有提交都会得到确认,并与主服务器线性匹配。所有持续集成服务(如下所述)均通过。维护人员可以离开 @gitmate-bot ff 命令自动合并PR。

自动审核流程

只有在以下情况下才允许将拉式请求合并到master中 required GitHub状态为绿色。这包括GitMate审查以及持续集成系统。

连续集成总是针对拉式请求的最后一次提交进行的,但理想情况下应该在每次提交时都通过。

对于评论家来说

  • 所有等待审查的拉取请求都可以在以下网址找到:https://coala.io/review.

  • 检查提交消息。

  • 阅读并尝试理解代码。如果某些内容看起来无效或容易出现错误,请留下评论。如果有疑问,让代码编写者在审查者理解代码之前解释他们的推理。

  • 生成的代码不用于审查。相反,应该尝试验证生成过程是否正确。提交消息应该公开这一点。

  • 每次提交都独立于其他提交进行审查。

  • 每次提交都应该通过测试。如果您怀疑测试可能无法通过,并且持续集成没有检查提交,请尝试在本地运行测试。

  • 检查一下周围环境。在许多情况下,人们在删除某物或类似物的使用时会忘记删除导入项。通常,最好查看整个文件,看看它是否仍然是一致的。

  • 最后看看持续集成的结果,即使它们通过了。

  • 覆盖率不能下降。

  • 一定要确保测试覆盖了所有角落案例,并很好地验证了行为。例如,对于BEAR测试,仅测试好的和坏的文件是 not 足够了。 Writing Tests 解释应该如何编写测试。熊在测试过程中需要特别注意。 Testing Bears 提供了如何测试熊的指南。

  • 确保PR中的更改没有从主分支机构推送过来。如果发生了这种情况,那么删除一条评论,告诉投稿人这不是一个好的做法,但也要指出投稿人不需要关闭特定的公关,应该从下一次开始注意这一点。

备注

在查看以下项目的拉取请求或修补程序时 difficulty/low 问题,请确保修补程序解决了问题,不会产生任何进一步的问题。

您需要彻底检查代码,即了解代码的功能,检查它是否有效,并留下批判性注释。否则,不要复习!我们需要人工审查来发现不能自动发现的问题。

当您审查每个提交时,请对GitHub拉取请求中的相关代码行进行注释。审核完成后,请直接对拉流请求进行评论,如下所示:

  • 如果任何提交通过了审查,请进行以“ack”、“reack”或“Ready”(全部不区分大小写)开头的注释,并至少包含每个传递的提交散列的前6个字符,以空格、逗号或正斜杠分隔(来自GitHub的提交URL满足提交散列要求)。

  • 如果任何提交未通过审查,请发表以“unack”或“neds work”(全部不区分大小写)开头的注释,并至少包含每个传递的提交散列的前6个字符,以空格、逗号或正斜杠分隔(来自GitHub的提交URL满足提交散列要求)。

备注

GitMate仅用空格和逗号分隔。如果您复制并粘贴SHA,它们有时包含制表符或其他空格,请务必删除它们!

例子:

unack 14e3ae1 823e363 342700d

如果您有大量的提交要确认,您可以使用以下命令轻松地生成一个列表 git log --oneline master.. 并编写一条消息,如下例所示:

reack
a8cde5b  Docs: Clarify that users may have pyvenv
5a05253  Docs: Change Developer Tutorials -> Resources
c3acb62  Docs: Create a set of notes for development setup

Rebased on top of changes that are not affected by documentation
changes.