一、意义

在Upsource中,一次代码审查可以包含多个Revision(修订)或者整个分支,当一次审查流程发起后它将成为一个独立的实体且具有唯一ID。允许审查流程中的成员针对特定的代码交换意见或者讨论修改策略。

代码审查具有以下意义:

  1. 可以借助团队的力量保持项目代码干净清晰,可读性强,不包含严重的缺陷。
  2. 发现其他人的代码中存在的问题,借助代码审查引起他的注意。
  3. 当某部分代码有重大改变时,可以通过审查让相关人员保持跟进状态,并根据改变作出相应。
  4. 有新成员加入时可以更好的了解代码逻辑修改的原因。

二、各个角色的定义

  • Author

通常是修订的提交者,代码审查即是来检查和观察他所提交的变更。

  • Reviewer

Reviewer预计将检查作者提交的变更,并留下反馈。他可以讨论具体的行,或者添加一般性注释。他也可以完成审查,接受改变或提高对他们的关注。查看其他审查人员对审查工作流程的更改。

  • Watcher

预计不会参与审查过程的人,每当有重要的变化时,Watcher就不断更新项目的状态。请参阅由队友介绍的监视更改,以了解观察者的工作流程。

三、审查流程

代码的修改者一般作为审查流程的发起者,如果要邀请团队成员其他成员进行代码审查,需要进行以下操作:

  • 将更改内容提交到版本管理系统(Gitlab),在我们当前项目开发流程中这里可能需要发起MR。
  • 创建一个审查流程(可以设置为系统自动发起)。
  • 邀请审查参与者(Reviewer和可选的Watcher)。
  • 讨论代码的问题,审查流程参与者交换意见。
  • Author解决问题,提交版本修订,并将新的修订添加到现有的评审中。(IDEA的Upsource插件支持自动添加)
  • 当Reviewer接受你的修改后,便可以关闭审查流程。

以下详细讲解如何创建Upsource代码审查。

创建Review

  1. 登录upsource服务(http://www.wuzguo.com ),然后选中需要进行审查的项目。

  1. 单击项目名称打开,项目主页视图显示按时间顺序列出所有修订:

  1. 向下滚动列表,或者通过搜索功能找到对应的修订。
  2. 将光标移动到对应的修订条目,将出现一个Review changes链接:

  1. 单击Review changes,然后从弹出菜单中选择Create Review。一个新的评审被创建后,它将拥有一个全局唯一的ID显示在左上角(如:AEE-CR-7 )。

邀请参与者

  1. 默认的审查标题与修订提交到VCS的内容相同,可以自定义编辑修改标题。在接下来的步骤中,需要指派至少一个Reviewer进行代码审查。

  1. 可以添加多个参与者,在审查流程发起后任何时刻也可以对审查人员就行增改,被添加的用户将通过电子邮件或 Upsource news feed (通知流)得到通知。

设置期限

  1. 您可以选择设置审查的最后期限提醒评审人员完成代码审查。(一般情况下管理员设置默认值)

参与讨论

你可以发表评论或者向其他参与者发表意见,并回复其他人留下的评论。

Review进展

在审稿人的图标下面有一个进度条,可以看到每个审查者的审查进度。鼠标悬停在它上面,看看有多少文件已经被审查者查看。

审查决议

当审查人员接受(accept )或关注(raise concern)变更时,他们的决议用相应的标志表示:

添加新修订

如果最初提交的修订没有得到Reviewer的Accept,可以按照Reviewer的要求处理这些问题并提交代码的修订到gitlab,然后可以将一个或几个新的修订附加到原始审核中以获得Accept。

注意:如果增加的修订来自不同的提交者,那么所有这些提交者也会作为Author添加到审查流程中。这样整个讨论和修订的历史都包含在一个审查流程中,并且只要审查流程是打开(Open)的,在不同的修订过程中始终可以看到它。

当一个新的修订添加到审查流程的时候,你只看到那些修订的差异。如果想在评审中显示或隐藏任何额外的修订,可以使用修订选择器快速切换:

要从审查中移除修订,在review视图中单击修订名称旁边的detach图标。

在IDE中打开Review

当我们在IDE(如:IDEA)中安装并配置Upsource插件时,可以通过点击这个链接在IDE中对应的tab中查看对应Review所包含的评论和修改并进行评审操作。

关闭评审

一旦所有Reviewer都Accept了你的更改,您可以通过单击右侧窗格中的相应按钮来关闭这次评审流程。

Review 状态

一个评审流程可以分为三个不同阶段:

  • Pending :评审流程被创建并且分配人员完成。
  • Completed: 所有审阅者通过接受(accept )或关注(raise concern)变更的时候。
  • Closed :由作者关闭的,不再需要参与者采取进一步的行动的评审流程。

删除Review

不管你是因为失误创建了一个Review,还是想要清理过时的评论,不管它目前的状态是什么,你都可以删除它。

四、审查他人的变更

如果你是审查人员,通常需要执行以下操作:

  • 进入评审并检查变更。
  • 留下你的反馈,参与讨论。
  • 有选择地邀请其他参与者。
  • 通过点击 (accept )或(raise concern)来完成变更的评审。

检查修改

当有人邀请你参加审查时,你会收到一封电子邮件的通知或者受到upsource的消息提醒,里面包含了对该评论的直接链接。点击链接可以进入评审页面,面板上的 **Review summary ** (概览)列出了与审查相关的所有事件和评论。

**Overview **选项卡下面显示更改的文件列表。单击文件名可以显示文件的修改内容。

您可以通过按下相应的按钮来进行差异比较或查看整个文件。这些视图可以让你更好的查看代码。按下 ESC按钮可以返回摘要视图(summary view)。

参与讨论

你可以发表评论,向其他参与者发表意见,并回复其他人留下的评论。

邀请参与者

如果你先让其他人参与评审流程,你可以根据实际情况增加Reviewer或Watcher。

你也可以在发布评论的时候添加Watcher,在文本框中输入@ 便可以选择对应的人员。你可以添加任意数量的参与者,被添加的用户将通过电子邮件和Upsource news feed得到通知。

选择修订

当新的修订被添加到评审中,您只会看到这次修订的差异,并且可以继续进行评审,而不必再次检查以前提交的更改。如果您想在评审中显示或隐藏其他额外的修订,使用修订选择器可以快速切换修改。

完成审查

如果你对作者的修改感到满意,那你就可以点击Accept。如果你觉得这些问题值得怀疑,那就点击Raise concern

五、监视审查过程

作为一个观察者,您通常执行以下任务:

  • 进入评审并定位更改。
  • 阅读评论并有选择地参与讨论。

当有人邀请你参加审查时,你会收到一封电子邮件的通知(或者的Upsource的 News Feed),其中包含了对该评论的直接链接。您还将在此评审中更新任何结果更改。点击链接可以进入评审页面。主面板列出了与审查相关的所有事件和评论。

**Overview **选项卡下面显示更改的文件列表。单击文件名可以显示文件的修改内容。

从这里,您可以通过按下相应的按钮来进行代码的比较或查看整个文件。

参与讨论

你也可以发表评论或者向其他参与者发表意见,并回复其他人留下的评论。

取消消息推送

如果想停止对评论的监视,停止接收消息通知,可以从观察者列表中删除你自己。

如果不想删除自己,可以设置为Mute review(消息免打扰),这样这个评审后续的讨论信息就不会出现在你的News Feed中了。不过链接到评审中还是可以看到的。

六、讨论和评论

你可以发表评论,向其他参与者发表意见或者回复其他人的评论。也可以直接在评论区@其他人(不一定是评审参与者)。

有三种不同类型的注释(comment,评论):

  • 评审评论

评审评论没有与任何特定的文件或代码的任何部分联系在一起,它的主题可能是评审范围内的任何内容。

  • 代码块评论

代码块评论是对一个文件中的一个特定的代码片段的注释。

  • 行评论

行注释与特定的代码行相关联。

提交评论

  • 评审评论

在Review页面上,选择Review summary(默认视图)。在文本框中输入您的消息,并单击Add comment按钮。

  • 行评论

在Review页面中,选择添加行注释的文件:

然后选中对应的你需要添加评论的行。

  • 代码块评论

打开文件然后按住左键选中代码段,然后在弹出的页面中选中”Comment on selection”添加评论。

代码块注释和行注释嵌入在代码中,并以黄色突出显示。

评论的选项

将光标置于评论之上,就可以看到评论的选项。

下面介绍各个选项的用途:
编辑这条评论。
链接到该文件中(如果是文件中的评论)该评论的位置。
点击添加对该评论的反应(表情包)。

Resolve 当某次讨论主题达成共识时,点击Resolve 链接标记讨论的问题得到解决(Resolved )。

回复这条评论。
为讨论添加一个标签。