代码静态测试:高效同行代码评审最佳实践(4)

发表于:2012-12-20来源:IBM作者:Jason Cohen点击数: 标签:
规范,或者重量级的 检查已经流行了 30 年。它已经不是评审代码的有效形式了。重量级检查平均花费的时间是每 200 行代码 9 个小时。尽管它很有效,但

  规范,或者重量级的 检查已经流行了 30 年。它已经不是评审代码的有效形式了。重量级检查平均花费的时间是每 200 行代码 9 个小时。尽管它很有效,但是严格的过程需要三到六个参与者,并进行一系列繁琐的会议以讨论具体的细节。不幸的是,尽管需要繁琐的过程,但是大多数的公司没有条件将编程人员集成起来,进行长时间的会议。最近的几年,许多开发公司已经完全放弃了会议安排,纸质代码阅读,以及繁琐的作品收集工作,转而采用新型轻量级过程,以从规范的会议及老式重量级过程的重压中解放起来。

  我们使用在 Cisco 中的案例研究,来确定轻量级技术与规范过程比较的特点。结果显示轻量级代码评审所需要的时间只是规范评审的五分之一(甚至更少),而且前者能够发现更多的错误(bug)。

  尽管轻量级代码评审拥有很多的方法,例如实时评审和电子邮件评审,但是最有效的评审方法还是使用协作性的软件工具来促进评审,这些软件工具例如 SmartBear 的 CodeCollaborator(见于图 4)。

  图 4 的大图

  图 4. Cisco 研究中所使用到的轻量级代码评审工具,CodeCollaborator

  CodeCollaborator 是与 IBM® Rational Team Concert 工作流程相集成的唯一代码评审工具。它将源代码评审与聊天形式的协作集成起来,从而使开发人员从联系注释与私人代码行的繁琐活动中解放了出来。当程序员向工作项添加更改项进行评审时,在 CodeCollaborator 中将会自动创建评审,并分配适当的批准者。团队成员可以直接注释代码,与代码开发者聊天,并就每一个问题进行协作,追踪错误(bug)并修复缺陷。整个过程不需要会议,打印,或者安排日程。

  有了基于 Rational Team Concert 与 CodeCollaborator 的轻量级评审过程,团队就可以进行更有效的评审,并实现代码评审的有利点。

  CodeCollaborator 获得了 "Ready for IBM Rational Software" 针对 Rational Team Concert V2 和 V3 的认证,以及针对 IBM® Rational® ClearCase® 和 IBM® Rational® Synergy® 的认证。

  到现在为止,您已经被经实践证明有效的经验从头到尾武装起来了,以确保从过程和社会的角度来看,团队在代码评审过程之中能够节省大量的时间。当然,您必须确实完成了 代码评审,以实现这些便利。对 100% 的代码使用评审的规范方法(有人对这个百分比存在异议,简单来说是不现实的。集成到 Rational Team Concert 环境之中的工具支持轻量级代码评审,提供了最强大的功能,因为它提供了一个有效的方法去搜索缺陷,而且不会涉及到开发员头痛的一些问题。有了正确的工具和这些实践方式,您的团队就可以对所有的代码进行同行评审,并在软件达到 QA 阶段之前就找到成本极高的错误(bug),这样您的客户每次都能够得到顶级品质的产品了。

  为了方便您查看,下面总结了在一个简单列表中最容易保持的 11 项实践方式:

  一次评审少于 200~400 行的代码。

  目标为每小时低于 300~500 LOC 的检查速率。

  花足够的时间进行正确缓慢的评审,但是不要超过 60~90 分钟。

  确定代码开发者在评审开始之前就已经注释了源代码。

  为代码评审和获取制度建立可定量化的目标,这样您才能改进流程。

  使用检查列表,因为它可以极大地改进代码开发者和评审者的作品。

  确认缺陷确实得到修复了。

  培养良好的代码评审文化氛围,在这样的氛围中搜索缺陷被看做是积极的活动。

  警惕“老大”效应。

  最少评审一部分代码,就是您不能评审全部的代码,以从 Ego Effect 中受益。

  采用轻量级,能用工具支持的代码评审。

关于作者

  Jason Cohen 是 CodeCollaborator 的初始架构师和 SmartBear Software 的创建人。在他的公司被收购之后,他继续参与许多新的 SmartBear 软件的战略发起人,并且经常进行有关同行代码评审收益的演讲。他也是其它三个公司的创建人,包括 WPEngine 和 ITWatchDogs。更多有关 SmartBear Software 的信息,请访问www.smartbear.com。

原文转自:http://www.ltesting.net