微软代码审查工具

您是否曾经想过全球最大的软件公司之一如何通过代码审查来确保高质量代码?

我也是。这就是为什么我们与同事一起调查了Microsoft如何进行代码审查。

这是常见的做法吗? 开发人员是否需要进行代码审查? 他们使用哪些工具?

让我们在这篇文章中找到答案,该文章是关于代码审查更大的博客系列文章的一部分,该系列文章向您展示了代码审查的最佳实践 , 代码审查的陷阱 , 代码审查在Google的工作方式等等。

我还准备了一个代码审查电子书,您可以在这里进行注册 ,其中包含所有这些文章的所有重点内容,以及其他代码审查清单和备忘单。

首先,让我给您一些有关Microsoft的关键信息。 微软拥有约140.000名员工 。 其中大约有44%,即超过60,000名员工是工程师。 成千上万的工程师同时使用相同的代码库来开发Office,Visual Studio或Windows等几种产品。

我说这些都是为了给您一些上下文和观点,以协调和管理软件开发过程。 可以想象,确保不同子团队开发的代码可以完美地协同工作是一项艰巨的任务。 而且,代码审查在Microsoft中扮演着重要的角色,以允许如此大规模的顺利协作。

Microsoft的代码审查是开发过程中不可或缺的一部分

在Microsoft进行代码审查时,重要的事实之一是它是一种被广泛采用的工程实践。 成千上万的工程师认为这是一个很好的最佳实践。 而且大多数高性能团队都花大量时间进行代码审查。

在Microsoft,代码审查是一种高度采用的工程实践,被认为是最佳的实践。 (点击发推 )

在Microsoft调查代码审查

因为代码审查在Microsoft开发过程中起着如此重要的作用,所以它是我们深入研究并真正了解这种做法的利弊的理想目标。 在Microsoft进行的有关代码审查的大规模研究中,我们采访,观察和调查了900多名开发人员的代码审查实践。

我们的目的是了解Microsoft如何进行精确的代码审查。 我们想知道,开发人员在进行代码审查时会遇到哪些代码审查陷阱 ,以及他们为克服这些挑战而开发的最佳代码实践 。

您可以从Microsoft的代码审查实践中学到什么?

对于小型团队和组织而言,大多数经验教训对于大型团队和大型组织而言都同样有价值。 如果您的团队还没有进行代码审查,我以一种向您展示该实践的好处的方式总结了我们的发现。 我还将解释代码审查生命周期的样子,以便您可以将这种实践纳入自己的开发过程中。

如果您的团队已经进行过代码审查,则可以将您的实践与Microsoft的代码审查实践进行比较。 您的代码审查生命周期看起来是否有所不同? 在下一篇文章中,您将从代码审查陷阱和代码审查最佳实践中学习 。 有了这些信息,您就可以开始查看您的团队是否已经实施了我介绍的所有最佳实践并克服了挑战。 但是,让我们开始吧:

Microsoft工程师多久执行一次代码审查?

在这项研究中,有36%的开发人员说他们一天执行多次代码审查。 另有39%的开发人员表示,他们每天至少进行一次代码审查。 12%的人每周进行多次代码审查,只有13%的人说他们在过去一周未进行代码审查。

说明文字:Microsoft开发人员多久检查一次代码?

这意味着Microsoft的开发人员将大量时间花费在代码审查上。 因此,重要的是要确保这段时间值得花费。 但是,代码审查有哪些好处?

Microsoft的开发人员将大量时间用于代码审查。 (点击发推)

代码审查有哪些好处?

开发人员提到代码审查的好处的最重要原因是提高代码质量并发现代码中的缺陷。 代码审查的另一个重要好处是知识转移。

知识转移意味着互相检查代码的团队成员会熟悉代码库的大部分。 但是,这也意味着在团队内部开发了代码审查最佳实践 。 另一个优势是,新团队成员和初级开发人员可以在查看或获得反馈的同时学习和提高他们的编码技能。

如果开发人员在代码审查期间讨论替代解决方案,则不仅会改善代码库,而且对所有相关人员都有学习作用。 因此,学习,指导和自我完善是所有将代码审查视为Microsoft有益实践的原因。

标题:代码审查的好处

开发人员进行代码审查以改进代码,查找缺陷,但主要是为了增加团队成员之间的知识传递并提高学习效果。 (点击发推)

但是开发人员通常如何进行代码审查?

代码审查可以通过多种方式执行。 有时,这就像一个开发人员走到另一个开发人员的办公桌前一起看一些代码一样非正式。 其他时候,团队会一起检查代码。 但是,在Microsoft进行代码审查时,最有可能遇到的情况是代码审查是借助工具完成的。

Microsoft的代码审查通常是通过内部工具完成的

有各种各样的代码审查工具可用,在Microsoft,团队可以自由选择他们的工具。 在2016年,89%的开发人员指示使用CodeFlow代码审查工具。 稍后,我将在Microsoft解释有关此代码检查工具的更多信息。 从那时起,随着Git的崛起,工具领域发生了变化。 只要有更新的号码,我就会立即添加。 但是,让我们考虑一个典型的审查情况:

让我们想象一下微软的一名开发人员,让我们称她为Rose。 Rose刚刚完成了功能的一部分,现在希望获得同行的反馈。

Rose如何在Microsoft启动代码审查?

好了,正如所说的,Rose准备得到一些反馈。 因此,她首先准备代码进行审查。 此步骤包括她打开代码检查工具,使她可以预览代码更改。 代码审查工具执行一些区分任务,以帮助Rose准确查看她所做的更改。

在仔细检查了这些更改之后,她准备了一条小纸条,告诉审阅者她做了什么以及为什么这么做。 此说明可帮助审阅者了解代码更改的目的及其动机。 现在,可以将代码发送给审阅者了。

Rose如何选择合适的代码审阅者?

许多经验丰富的开发人员都知道谁应该参加代码审查。 但是,对于团队中的新成员或新的工作领域,选择起来可能会比较棘手。 如果罗斯不知道自己应该添加谁,她要么看团队政策,要么问她的同事。 她还可以使用代码审查工具的推荐功能,该功能可帮助您根据经验和代码基础来选择审查者。

谁是相关的审稿人?

Rose选择了她认为可以为这段代码贡献知识的审稿人。 审阅者通常是其他开发人员,但也可以包括其他利益相关者,例如开发人员工程师,UI专家或经理。 选择一些审稿人是因为他们的专业知识,而选择其他审稿人是为了随时了解即将到来的变更。

标题:代码审查的常见步骤

Rose要求同​​龄人提供反馈

一旦选择了每个人,Rose就会发送代码审查(通过按send按钮)。 代码审查工具会自动发送通知,以通知所有人已创建了代码审查。 显然,通知将发送给所有审阅者。 但是,通常还会将其他方(例如其他团队的经理或产品经理)也添加到通知列表中,并为每次审阅自动通知他们。 这些通知使他们能够停留在循环中。 他们不需要执行审核。

接收反馈是一个反复的过程

一旦Rose的同事有时间,他们将查看代码审查。 每个审阅者都可以注释代码并添加注释。 完成评论后,审阅者会将带注释的代码发送回Rose。 Rose现在可以处理注释,并准备代码的新改进版本。

审阅者通常会寻找类似的东西:代码看起来没有错误吗? 有建筑上的问题吗? 是否有一些小问题,例如缺少评论,拼写错误? 并非所有评论都同样有价值。 但是,有几种最佳实践可以提高代码审查注释的价值。

罗斯准备了代码的新改进版本

Rose通过修正和解决建议来处理反馈。 如果罗斯发现存在一些误解或其他有争议的问题,则可以走到同事那里亲自讨论。 这有时比通过工具更容易,更个性化。

无论如何,一旦她完成了所有反馈,便将新版本的代码发送给审阅者。 该新的改进版本称为修订版。

如果需要,她将收到进一步的反馈。 此循环是否持续几次取决于更改的类型及其质量。 对于简单和小的代码更改,通常只需要一个代码审阅修订。 对于其他更复杂的更改或有问题的代码中的更改,可能需要几次迭代。

这是完全正常的,部分希望此代码审阅反馈周期能激发作者与代码审阅者之间的讨论。

所有审阅者都批准并Rose检入代码

在此审查周期之后,审查者将代码标记为可以,并且Rose最终可以将代码检入通用代码库。

一些团队制定了政策,允许开发人员在实际审查完成之前签入代码。 通常,这仅限于微小的变化,以便允许异步审核并加快开发速度。

我描述的所有步骤都是Microsoft典型代码审查生命周期的一部分,并由所有团队执行。 根据团队的政策,团队对每个步骤的要求都更加严格或严格。

并非所有团队都一样

可以想象,并不是所有的60,000名工程师,也不是成千上万的团队都这样做。 Microsoft的某些团队在代码检查生命周期中需要其他步骤或工具。 我想简要介绍一下团队添加到代码审查过程中的一些其他步骤。

代码审查,包括测试结果

您最想要的是通过检查“自动检测”的错误代码来浪费时间。 我的意思是,如果您可以运行自动化测试并意识到该代码无法按预期工作,那么这就是您应该做的:在检查之前运行测试。

这就是为什么一些团队要求在每次代码审查时都提交测试结果的原因。 这样,没有人会忘记运行测试。 而且它可以确保在给定的代码更改下测试实际上已经运行并通过。

其他团队甚至更进一步,以这样的方式配置了代码审查工具:开发人员提交的每个代码审查都会触发构建。 该内部版本包含该确切的更改,并且还启动了一系列自动化测试。 此构建的结果和这些测试将附加到代码审查中。 通过这种方式进行配置,可以确保已使用通用代码库中的最新代码更改对代码更改进行了测试。

代码审查,包括用户界面

如果更改影响用户界面,则要求开发人员提交屏幕截图也是一个好主意。 这样,代码审阅者可以在不运行代码的情况下看到代码更改的影响。 其次,代码审查员可以在自己的计算机上运行代码时发现差异。

代码审查,包括静态分析

静态分析工具仅与其配置一样好,但是就样式问题而言,它们可以为代码审阅者节省大量时间。 Microsoft的某些团队将自动化的静态和动态分析工具用作专用的bot审阅者。 这些机器人在代码样式和其他静态问题上发表评论。 因此,可以腾出时间让人工代码审阅者执行更多有趣的任务。

微软的代码审查工具

多年来,Microsoft进行代码审查的事实上的标准之一是内部工具CodeFlow。 这是一个复杂的代码审查工具,可支持开发人员并指导他们完成代码审查的所有步骤。 CodeFlow在代码准备过程中提供帮助,自动通知审阅者,并具有丰富的评论和讨论功能。

您可以在下面的屏幕截图中看到,CodeFlow是一个UI重工具,很像Word或PowerPoint。

文字说明:CodeFlow的屏幕截图(2016年)

CodeFlow的界面说明

如果愿意,可以跳过此步骤,但是对于所有感兴趣的人,我将带您通过上图所示的CodeFlow界面。 查看屏幕快照,在左侧(A)中,您会看到所有受影响的文档。

同样在左侧,您会看到(B)分配给该评论的评论者列表以及他们的状态(例如,已签署或待审核)。 活动文档显示在编辑器(C)中。 在底部,您可以看到(D)所有文档的注释列表。

另一方面,在活动文档(F)中只有一个注释。 此注释连接到代码的具体部分(即,一行中的一个单词)。 最后,在顶部,您将看到代码审查的总体状态。 在这种情况下,完成。 之前的数字表示不同的修订版本。 在此审查中,有五个修订。

评论功能

CodeFlow的最佳功能之一是其注释功能。

代码审阅者可以非常精确地选择她要评论的代码部分。 例如,审阅者甚至可以仅突出显示一行中的一个或两个字符,而不是突出显示整行。 然后,审阅者可以对该选择附加评论。

通知该注释的代码作者或其他审阅者,并且可以围绕该注释的线程形式开始对话。

讨论功能

这种评论功能感觉就像在诸如Twitter或Facebook之类的社交媒体平台上评论。 因此,CodeFlow中的评论体验非常自然,可以进行丰富的对话和讨论。 另一个不错的好处是可以为每个注释线程分配状态。 该状态例如可以是“将不修复”,“已解决”或“打开”。

代码审查修订之间的比较

一个有用的功能是可以选择两个不同的代码审阅版本,并比较两者之间的差异。 这意味着您可以准确地看到代码审查作者在一个代码审查修订版和另一个代码审查修订版之间进行了哪些更改。 跟踪审核进度非常方便。

代码审查分析工具

开发人员花费大量时间在Microsoft进行代码审查。 为确保充分利用这段时间,Microsoft拥有自己的代码审查分析平台。

该平台存储所有代码检查数据,从正在检查的代码开始,到代码检查中涉及的开发人员,再到开发人员的所有注释。 甚至每个修订的代码更改都可以追溯。

此代码审查数据是 Microsoft对代码审查进行一些实证研究的基础 。 许多产品团队还使用它来跟踪他们的生产率并了解他们自己的代码检查实践。 另外,我在此博客文章系列中分享的许多关于Microsoft代码审查的见解都来自涉及该代码审查数据的研究和分析。

微软代码审查的未来

随着Micorosft的参与和对GitHub的收购,变更是不可避免的。 例如,Microsoft广泛采用Git作为源代码控制工具,就可以看到这一变化。 但是,这也意味着在Microsoft,以请求请求形式进行的代码审查正在增加。

我一定会在以后计划使用请求请求解决代码审查问题。

是否需要更多有关代码审查的信息?

了解Google如何审查代码 , 行之有效的代码审查最佳实践 , 代码审查陷阱 ,或如何提高您的代码审查反馈 。

为了保持循环,让我们在Twitter上进行连接 。

另外,还可以访问我为电子邮件订阅者准备的独家代码审查电子书 。 它包含备忘单,代码检查清单以及Google和Microsoft的案例研究。 还没有订阅者吗? 只需在这里注册 。

信用到期的地方:

我想提到我和微软以及维多利亚大学的出色同事,他们是这项研究的一部分: 克里斯·伯德 贾赛克 · 切尔旺卡 劳拉·麦克劳德 玛格丽特·安妮·斯托里 我很乐意与您合作♥

翻译自: https://hackernoon.com/how-code-reviews-work-at-microsoft-qe1t327y

微软代码审查工具

微软代码审查工具_Microsoft如何进行代码审查?相关推荐

  1. 代码审查工具 sonarqube 简介

    目录 1. 什么是SonarQube? SonarQube的功能 1.糟糕的复杂度分布 2.重复 3.缺乏单元测试 4.没有代码标准 5.没有足够的或者过多的注释 6.潜在的bug 7.糟糕的设计(原 ...

  2. 20最佳代码审查工具-专门为开发人员准备

    程序员总是面临最后期限的压力和很多延误软件设计相当不稳定,整个产品是不稳定的.这种不稳定性的设计软件的原因是,它是不能正常测试.来的工作代码审查工具.的代码审查工具可以帮助web开发人员指出他们哪些区 ...

  3. 代码审查工具【Review Board】在Windows环境下安装与配置

    前言 Review Board是基于Web的代码审查工具. 官方网站:https://www.reviewboard.org/ Review Board在Windows环境下安装是一件比较困难的事情, ...

  4. docker搭建upsource代码审查工具,通过gitlab检出项目

    docker搭建upsource代码审查工具,通过gitlab检出项目 机器配置 docker搭建upsource代码审查工具,通过gitlab检出项目 拉取镜像 创建挂载目录 启动容器 配置账号密码 ...

  5. Upsource 一个新的代码审查工具-安装使用指南

    为什么80%的码农都做不了架构师?>>>    Upsource 一个新的代码审查工具(Polyglot code review tool),Upsource安装.配置及使用介绍-- ...

  6. 微软同步工具 for linux,使用SyncToy 同步Windows数据到linux

    SyncToy v2.1 - 微软同步工具:它可以让您的文件在不同的磁盘和文件夹中保持同步并且可以随意处理,甚至可以输入UNC以处理网络驱动器上的文件和任何设备上的信息 . 1. 安装SyncToy ...

  7. 使用微软官方工具下载最新系统(win10为例)

    本文将教你使用微软官方工具下载最新系统(win10为例)以及制作win10的安装引导U盘. 1.工具下载地址: https://www.microsoft.com/zh-cn/software-dow ...

  8. (微软官方工具)局域网键鼠共享工具:Mouse without borders

    局域网键鼠共享工具:Mouse without borders(微软官方工具) 安装 官方下载地址:https://www.microsoft.com/en-us/download/details.a ...

  9. 转:微软COFEE工具近日泄漏到网上

    Cofee介绍的地址:http://www.microsoft.com/industry/government/solutions/cofee/default.aspx 作者:丁丁出处:搜狐IT200 ...

  10. 微软官方工具安装Win10的教程

    这是两年前,铅锤哥出的Win7教程,至今已经帮助上万的网友成功重装系统,但是Win7毕竟已经过时了,很多粉丝开始呼吁铅锤哥出Win10的教程. 所以今天,它来了. 这次Win10的重装系统教程更简单, ...

最新文章

  1. 使用dstat命令的插件查看mysql的io状态
  2. android socket 发送byte_如何正确地创建和销毁网络通讯程序中的Socket类的对象实例...
  3. 1.6 语言模型和序列生成
  4. 西北师范大学知行学院计算机科学与技术,西北师范大学知行学院电子信息工程专业...
  5. 错过了秋天的第一杯奶茶,不要错过秋天第一场黑客松
  6. 英特尔将开源进行到底!
  7. Python黑帽编程2.7 异常处理
  8. mysql 拼音查询_MySQL拼音首字母查询
  9. 利用MATLAB解特征方程,并画出特征根的分布,便于分析系统的稳定性
  10. Cesium 角度计算
  11. SQL 限定返回行数
  12. 视频工厂:如何拍摄优质的餐饮宣传片之品牌植入篇
  13. 运维工程师都在做什么?
  14. python自动化办公 51cto_用Python开发钉钉群机器人,自动办公神器
  15. python发送邮箱_利用Python自动发送电子邮件
  16. python操作网页界面_python3 操作页面上各种元素的方法
  17. 电信云RDS数据库注册金蝶云星空产品数据库账套
  18. 电大计算机试题及答案形成性,国开电大机械CAD/CAM形成性作业1答案
  19. matlab实现微信dat文件解码
  20. 牛客SQL练习-7-查找薪水变动超过15次的员工号emp_no以及其对应的变动次数t

热门文章

  1. 运放分析--虚短与虚断
  2. swfobject.js
  3. 指派问题java实现_指派问题及实现代码示例.ppt
  4. 软件测试 (5) 数据库语句
  5. python菜鸟教程 | for 循环
  6. 华为崔景龙:FNV是下一代MBB网络演进的技术驱动
  7. Visio科学图形包下载以及安装详细教程
  8. python身份证号码共18位_涨姿势:用Python完成15位18位身份证的互转
  9. 三款免费的直播推流软件介绍
  10. 常用元器件使用方法3:电平转换芯片74LVC1T45的使用方法