作为敏捷开发的一系列重要实践,单元测试、持续集成、CodeReview……CodeReview是我们日常开发中的一个重要环节。理想状况下每次提交会必须先经过Review,通过之后才能提交。提交之后系统会自动构建并执行自动化测试,来保证持续集成以及版本的稳定性。

目前我们在项目中使用P4做为版本管理工具,使用Jenkins进行自动构建,使用Reviewboard管理CodeReview。Review使用Pre-commit Review的方式,每次开发提交必须先自测,然后通过P4插件提交Review Quset,等组员都Review通过之后再进行提交。

为什么要CodeReview

个人感觉Review对一个项目开发特别是多人的大型项目开发来说还是必不可少的,虽然很多人会说Review会降低开发效率。磨刀不误砍柴工,虽然开发前期的时间好像变长了也更繁琐了,但是能让代码写的更扎实以后的问题更少,降低技术债务,总体来说还是节省时间的,并且对整个项目成员的成长也是有极大的好处的。以下总结了一些CodeReview的好处:

版本的稳定性更强。相比直接提交,提交者会更小心,检查者也会多一层把关,更容易减少Bug的产生。一个Bug的修复时间是随着Bug的发现时间指数增长的,发现的越慢需要修复的成本越高,产生的问题约严重。

代码的设计更好。通过Review开发者会更了解整个项目,Review的时候各个模块的同学也势必会互相讨论,这样一些设计会更全面兼容性更强,也更不容易出现重复冗余的问题。

代码质量更好。因为需要被Review,代码通常会写的更符合代码规范,注释更清晰,变量名函数名起的更好。

组员的交流更强。因为阅读他人代码讲解自己的代码,每个成员都需要沟通和讨论。这样一方面能大幅提升组员的表达总结能力,另一方面也能提升项目组的氛围,而不是每天默默开发相互都不了解。当有任务变动的时候也更容易交叉替代,让开发变的更灵活。

个人能力提升更强。对程序员来说,很大的一个问题就是个人得不到成长,始终做一块的内容,经常做重复性劳动。通过Review每个人都可以了解更多的内容,能力得到全面提升。资深的能力强的同学可以指导新同学,新同学也可以通过Review资深同学的代码更好的学习。

如何使用Reviewboard的部署和配置

首先下载并安装RBTools-1.0.exe和diffutils-2.8.7-1.exe(用来生产Diff文件)。

把diff加到PATH里,一般是这个路径"C

rogram Files (x86)GnuWin32",如果报diff找不到需要重启P4。

更新配置文件,在P4根目录:

添加P4插件:

或者在目录Client/P4Tools目录下直接导入工具:

在P4中创建一条Pending,例如Reviewboard测试,然后在Pending上右键选择我们添加的工具,Reviewboard:

如果成功了会有输出Review request #6 posted的提示。如果文件没有修改,或者这条Pending已经有了会提示相应的错误信息。如果成功还会输出两个路劲,一个是这次review request的地址,一个是diff的地址,例如:

这里会出现登陆错误的问题,需要关闭Publicly accessible指定用户,这里有些奇怪:

填写这条Quest的相关信息,例如描述,内容,以及谁来review这三个地方,谁来review可以选择某个人也可以选择一个组,这一步可以在.reviewboardrc文件中设置成自动设置,不需要人工设置,也可以写脚本控制:

当填写完毕并自测之后就可以点击Publish发布,提交之后会自动发送邮件通知:

在主面板就可以看到OUTGOING自己提交但未发布的,二手游戏账号出售INCOMING,OPEN别人审核过的,ToMe别人发布给我审核的:

然后针对diff可以点前面的ID写备注,对代码的修改意见。

然后ShipIt。如果有修改意见则这条quest不会通过,会自动转给开发者,并发送邮件:

如果不通过提交方会受到一条不通过的提示,否则可以看到已经通过,如果都通过即可提交了。这一步需要自己开发插件,在提交的时候自动检查是否通过,只有通过才能上传:

以上就是reviewboard和P4的大致集成流程。不过在实际使用过程中也有一些需要讨论的点。首先就是虽然整个流程是大部分是自动的,但是实际在review的时候只靠看diff文件的差异还是很难review出问题的。没有上下文看的人可能不明白,只能review出一下代码规范,保护等错误。在这上面我们最终还是灵活一些,对于大功能,新开发的系统还是当面详细review,对迭代修复bug的内容才会直接通过diff文件review。另外就是如果每次提交都会产生ReviewQuest触发邮件通知,并且不通过就不能提交的话,可能会影响进度以及打断其他人的工作。这点上我们是通过限制Review的成员,增加随机性即可以保证每个人都能相互review有不会每个人的提交让所有人都review来解决,另外也可以通过限制提交时间的方式缓解。此外还有其他一些问题,这里就不进行深入讨论了。

如何使用Reviewboard进行代码Review?相关推荐

  1. 由学习《软件设计重构》所想到的代码review(二)

    前言 对于一个程序员来讲如何来最直接的来衡量他的技术能力和产出呢?我想最直观的作法是看他的代码编写能力,就拿我经常接触的一些程序员来看,他们买了很多技术重构类书籍,但是看完后代码编写能力并没有显著提高 ...

  2. 如何有效地进行代码 Review?

    研发都知道代码 Review 的重要性,在腾讯代码 Review 也越来越受大家重视,作为腾讯专有云平台研发的一员,我参与了大量的代码 Review,明显地感受到有效的代码 Review 不但能提高代 ...

  3. 代码review,瑞出事来了!

    不久之前,部门进行了一次代码评审. 代码整体比较简单,该吹B的地方都已经吹过了,无非是些if else的老问题而已.当翻到一段定时任务的一步执行代码时,我的双眼一亮,觉得该BB两句了. 谁知这群家伙, ...

  4. Gerrit代码Review高阶实战

    Gerrit代码Review高阶实战 Gerrit代码Review高阶实战 Gerrit 是一个免费.开放源代码的代码审查软件,使用网页界面.利用网页浏览器,同一团队的程序员,可以相互审阅彼此修改后的 ...

  5. Gerrit代码Review入门实战 1

    Gerrit代码Review入门实战 库 代码审核 Android Gerrit 经验分享 阅读23889  代码审核(Code Review)是软件研发质量保障机制中非常重要的一环,但在实际项目执行 ...

  6. 代码REVIEW的一般方法

    代码REVIEW的工作是软件工程中不能忽视的工作,是软件质量活动之一,对保障和改善软件工程质量有比较明显的作用,特别是对团队进行开发的软件工程.本文主要以C代码的视角描述CODE REVIEW的一般方 ...

  7. 研发团队如何借助Gitlab来做代码review

    代码review是代码质量保障的手段之一,同时开发成员之间代码review也是一种技术交流的方式,虽然会占用一些时间,但对团队而言,总体是个利大于弊的事情.如何借助现有工具在团队内部形成代码revie ...

  8. 如何进行代码REVIEW

    一.代码REVIEW的利与弊 软件工程中,最后都落实在代码的实现上,软件要运行的没有问题,除了软件架构和系统设计设计到位,代码实现也是至关重要的一部分,再好的设计如果软件代码实现有问题,软件也不能跑起 ...

  9. java code review 工具_两款好用的代码Review工具 | 学步园

    最近团队内部呼吁代码质量的声音越来越高,项目组引入了代码Review机制.上次我由于不了解主站URL替换的规则,险些造成客户端图片读取错误,而代码Review则有助于帮我们发现代码潜在的问题. 主讲的 ...

  10. 代码REVIEW的流程化工作

    一.CODE REVIEW工作组织建立 代码REVIEW的工作,多数人认为是程序员的事情,其实恰恰理解的不充分,代码作为软件最基本要素之一,仅仅是之一,软件其实还有很多方面,设计,推广,销售,服务等等 ...

最新文章

  1. 【Arduino】Nano功能引脚 PWM IIC UART 中断
  2. 通过Web Services上传和下载图片文件
  3. 2020年短视频用户价值研究报告
  4. 作者:王学志(1979-),男,中国科学院计算机网络信息中心副研究员。
  5. 收起虚拟键盘的各种方法 -- IOS
  6. php之前代码,PHP语法检查源代码前控制
  7. 用python写用手机发邮件_如何用python写发邮件?
  8. c# 傅里叶变换 频域_如何学会傅里叶变换?
  9. android ionic框架,移动App开发框架—Ionic
  10. 2021-06-14 Socketio学习使用搭建一个聊天室
  11. 装饰器模式:藏在漫威电影里的设计模式
  12. Scratch少儿编程案例-算法练习-实现加减乘除练习题
  13. [转载]当猫忧郁的时候
  14. 最新精华版申请苹果开发者账号-企业版
  15. 优酷youku 1080P 视频下载方法
  16. (CVPR-2020)GaitPart:基于时间部分的步态识别模型(一)
  17. arduino教程-7.脉冲宽度调制【变频】pwm
  18. HI3518E SDK安装并编译osdr
  19. 大数据精准投放+优质内容营销 帮你找到用户更能留住用户!
  20. Fast load times系列翻译——将性能预算合并到构建过程中

热门文章

  1. java更改exif信息_照片EXIF信息的读取和改写的JAVA实现
  2. centos7.5 gnome3的主题优化
  3. 大学web基础期末大作业~仿品优购页面制作(HTML+CSS+JavaScript)
  4. aptana+php++插件,aptana插件
  5. mybatisplus删除操作引起的selectBatchIds报错
  6. katana材质的制作-1
  7. 高德地图获取城市所有小区的POI
  8. 使用Navicat连接Oracle数据库教程
  9. ReactNative第三方组件库
  10. 云服务器查看物理MAC地址的方法