专栏首页软件测试那些事GitLab的代码评审工具你用对了吗?

GitLab的代码评审工具你用对了吗?

本文讨论和点评GitLab相关的代码评审工具,使用Github的可以另行参考。

代码评审的几种方式

从代码提交的时机来看,一般会有两种模式,即开源MR/PR模式和commit模式。而这这种划分默认是在代码提交的环节进行代码评审。因此从代码提交与代码评审的关系来看,也可以有所谓的代码提交时触发的代码评审和与代码提交无关的代码评审。而从代码评审的地点来看,一般也会有两种模式,即WEB模式和IDE模式。

在开源项目维护的场景下,催生了一种通过合并请求(merge request)进行代码评审的方式。当某个参与人员完成了某项特性功能的开发或者是缺陷的修复后,将全部新增代码纳入一个合并请求,提交给项目维护者进行评审,通过后完成合并。由于github和gitlab在开源代码仓库服务上的巨大成功,这两个平台也广泛被私有化部署和使用。伴随着这两个平台成为事实上的Git代码库标准,这两个平台所内置的这种工作模式也被相当部分公司所使用。

除了开源项目维护的场景之外,对于企业内部的开发模式而言,还可以有另外一种场景,那就是针对一个commit来实施代码评审。在其从个人代码库向被团队的代码库进行提交之前,由提交者发起对于每个commit进行评审。只有在评审通过后方可进行合并。这中场景的典型工具就由Google公司开源的Gerrit系统。

当然,随着软件工程产业自身的发展,也逐渐有专注于软件评审的产品出现了,例如UPSource和CodeStream。这些产品也挖掘出一种所谓的“社交式评审”的模式,即将原先串型的与代码提交挂钩的代码评审工作变成了一种与之脱钩的,聊天式的评审,从而实现了任何时间、任何代码,想评就评的模式,也降低了代码评审带来的压力感。

而从代码评审的地点来看,一般也会有两种模式,即WEB模式和IDE模式。上述提到的三种平台,一般是通过平台提供的Web界面来进行代码评审,添加评论,进行代码合并或者拒绝合并请求的操作。由于WEB模式需要代码评审人员以及提交人员需要在Web上完成相关的工作,存在一个工作台切换的问题。对于习惯于在IDE中进行工作的开发人员来说,如果能不离开IDE进行代码评审,有助于提升其工作效率。相应地,有各种IDE的插件提供类似的能力。

本文简要介绍各种在IDEA中进行代码评审的工具。

被IDEA原厂忽略的Gitlab集成功能

IDEA作为一个主流的Java开发IDE,其VCS模块居然没有关于发起MR和进行代码评审的功能。这是比较令人诧异的。

在查阅了相关资料后,笔者找到了这样一个issue。这是一个已经存在了8年的需求,要求IDEA团队提供和Gitlab进行集成的能力,能发起MR和进行Code Review。

来源:https://youtrack.jetbrains.com/issue/IDEA-109294

然后,这个issue的状态目前还处于Open状态,尚未被解决。也有群众留言表示,既然GitHub已经被微软收购,大量的开源项目竞相涌入Gitlab,IDEA应该抓住机会来提供与GitLab集成的功能。

不过距离这个留言已经过去3年了,貌似还是不为所动。感兴趣的读者,可以去这个网址进行投票,以更早地呼唤出这个特性。

开源插件1- GitLabProject 2020

原厂留下的缝隙,很快就让开源插件给填补上了。首先介绍GitLabProject。

以下是这个插件的简单功能介绍,来自插件开发者,

GitLab Projects Plugin

Simple plugin that is adding support for GitLab specific actions to JetBrain IDEs

Features:

lGitLab Checkout support - add GitLab autocompleter to IDE Git checkout dialog

lGitLab Share dialog - allows quick import of new projects to GitLab, user can specify namespace and project visibility

lGitLab Merge Request dialog - user can quickly create new merge requests from current branch

lGitLab Merge Request List dialog - user can list and accept all open code reviews

创建MR

可以看到, 这个插件的主要功能之一就是创建MR。安装完这个插件后,从VCS->Git->Gitlab->Create Merge Request 就能唤起创建MR的界面。

在选择完目标代码库之后,就进入了真正创建MR的环节,选择分支、批准人,描述等,整个界面功能和在Gitlab页面上完成时高度一致的,当然还包括了在合并后删除原分支以及差异查看的功能。

在Diff这个代码比对的场景,可以逐个对待合并的部分代码差异进行比对。

确认无误后,就点击提交就实现了MR的创建,在IDEA中会有提示框闪现。

代码评审和批准

作为代码评审者,可以从VCS->Git->Gitlab->List Merge Requests 进入代码评审和审批界面。

首先,在点击这个按钮后会读取并展示这个代码库中的所有待评审的MR。选择某个MR,点击底部的Code Review按钮,就可以唤起代码评审的浮窗。

类似的,评审者可以通过Diff比对两个MR的差异,通过Comments 来阅读MR的消息(包括来自CI/质量门禁的消息)并填入审批人的审批意见。

当然,最后就是点击Merge 按钮来审批通过了。

合并完成,IDEA还是会有消息条弹出。

碍于条件所限,笔者并没有测试评审人员是否在MR创建后以及提交人在MR被批准后能否在IDEA中收到通知消息。通知功能既然没有列在功能列表中,可能并没有吧。感兴趣的读者可以为这个插件提交ISSUE或者参与维护

https://github.com/wudeyong/GitLabProjects

开源插件2-Merge Request Integration CE/EE

如这个插件的名字所言,这个插件的主要功能就是进行MR时的代码评审和批准/撤销。相对于上一款开源插件来说,MR相关的功能提供得更为细致,

What you can do:

Check approval statuses of merge requests which are waiting for your approval.

Filter Merge Requests which are assigned to you, belongs to your colleagues, etc

Check pipeline status and approval status.

Do code review, navigate code with Diff View right in your IDE.

Address review comments, navigate comments in editors.

Add and reply a comment

Approve/revoke your approval

More and more features will be coming soon :)

其中的回应评论、检查流水线结果、撤回批准等功能是非常贴心的。以下是这个插件所展示的某个MR的基本信息,还可以在不同的tab页中看到描述、评论和具体的commits信息。

所以,这个插件的主要使用目标用户就是那些专门做代码评审的工程师或者技术主管了。因为这个插件忽略了一个重要的功能,就是创建MR。对于那些即需要提交MR,又需要进行评审的工程师来说,为了能在IDEA中完成所有上述工作,需要额外再安装一个别的插件,如GitLabProject。

当然,这个产品也有EE版本,个人用户收费为$1/M。

先介绍到这里了。下一篇将介绍收费的产品。

文章分享自微信公众号:
软件测试那些事

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!

作者:风月同天测试人
原始发表时间:2021-10-22
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • 用 GitLab 的 Merge Request 做代码评审

    在目前已使用的质量内建的工程实践中不可否认的一个实践为代码审查 它被用作提高产品交付质量和提高开发过程效率的有效措施。

    DevOps时代
  • 6种展示代码的工具,你学会了吗?

    如果你喜欢VS Code,那么这个适合你!Polacode 是一个VS Code扩展,可以直接从 VSCode 获取漂亮的代码屏幕截图。

    王小婷
  • 做营销的你,用对数据分析工具了吗?

    一个流程会很容易让人养成一个习惯,而若无意识或干预的话,习惯可能就不会再被改变了。

    iCDO互联网数据官
  • 你的大数据项目的工具用对了吗?

    工具/产品/解决方案是数据科学家洞察数据的利器。KDNuggets网站对此观点进行了年度调查,来分析数据科学家在用哪些类型的工具,并提供了调查的匿名原始数据。

    华章科技
  • 【工具】这么好用的代码阅读器你装了吗?

    作为一名程序员,我们不仅要多动手编代码,而且还应多阅读一些优秀的代码,如C语言的一些第三方库文件、嵌入式中Linux内核源码以及一些项目的代码等。这些源码往往都...

    正念君
  • 你的adonis用对了吗?不同因素的顺序竟然对结果有很大影响

    PERMANOVA原理解释:这个统计检验可用于判断PCA/PCoA等的分群效果是否显著!

    生信宝典
  • 你的代码完成了吗?(末篇)——对系统总体的影响以及安全性

    当编写和修改一个程序的时候,由于一般来说它都是存在于一个更大的系统之中,而不是孤立的单个程序,所以,在编写或者修改完了之后,就必须检查它从总体上对系统的影响。

    全栈程序员站长
  • 听说你的多智能体强化学习算法不work?那你用对MAPPO了吗?

    近些年,多智能体强化学习(Multi-Agent Reinforcement Learning,MARL)取得了突破性进展,例如 DeepMind 开发的 Al...

    机器之心
  • CI/CD 工具选型:Jenkins 还是 GitLab CI/CD?

    近十年来,持续集成(Continuous Integration,CI)和持续交付(Continuous Delivery,CD)领域都取得了很大的进步。Dev...

    Guide哥
  • 新工具lobe也许能满足你对深度学习的所有幻想,重要的是不用写代码

    Lobe由一家位于美国旧金山的创业公司打造,其发明者认为,建立深度学习模型是一个非常缓慢且复杂的过程,其中最难的地方是找到一个起点,可供学习的语言有很多,甚至当...

    崔庆才
  • ReviewBoard代码评审实践总结 顶

    代码评审(CodeReview),顾名思义是对代码进行评审,是软件工程的活动之一。

    donghui
  • 干货 | 携程Hybrid代码评审服务

    苏玲,5年软件配置管理及7年持续集成经历。曾在苏州科达科技和大众点评任资深配置管理工程师,目前为携程代码中心负责人,专注于代码相关的平台建设,致力于提高研发效率...

    携程技术
  • 说透代码评审

      代码如熵,不加外力很容易就会随着代码的不断堆积而发生腐烂和溃败。我们不是不知道代码问题,而是对既成事实难有改变。但是如果站在迭代的角度思考下一次升级,如何确...

    架构之家
  • SonarQube是开源免费的吗?

    SonarQube除了开源的社区版之外,还有开发者版、企业版和数据中心版等不同的发行版本,以满足不同类型的客户需求。以下是根据SonarSource官网整理的各...

    Antony
  • 那些年不加班的开发团队的秘密,原因竟是因为持续集成!

    持续集成,让很多开发团队又 「 爱 」 又 「 恨 」 。爱,在于整个流程对项目的交付价值大有裨益,尽最大可能地减少不必要的加班;恨,在于成本过大,部署的困难、...

    架构师小秘圈
  • GitLab CI/CD 自动化构建与发布实践

    CI/CD 是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法。CI/CD 的核心概念是持续集成、持续交付和持续部署。这篇文章中,我将会介绍基于 Gi...

    Se7en258
  • 基于Gitflow分支模型自动化Java项目工作流

    2019年2月13日更新*:本文的最初版本引起了很大的反响,大多数是正面的,有些则不是。争论的焦点在于我们在包含手动组件的环境中使用了“持续交付”这个术语。如果...

    全栈程序员站长
  • Gitlab+Jenkins+SonarQube计算增量覆盖率

    当要求质量内建、测试左移、持续集成、DevOps,代码的增量覆盖率几乎是必定会被提出来的话题。这个方案明确了"谁的代码谁负责"的原则,和当年“小岗村包产到户”一...

    Antony

扫码关注腾讯云开发者

领取腾讯云代金券