Atlassian 的 Pete Moore 阐述 Clover 2 的新特性

  • Scott Delap
  • 曹云飞

2007 年 10 月 29 日

话题:Java语言 & 开发

Atlassian 在今年前些时候并购了 Cengqu 并发布了 Clover 2。Clover 是一个 Java 代码覆盖工具。

Clover 2 这个版本有以下特征:

  • 测试结果与代码覆盖率的充分集成
  • 每个测试都有代码覆盖率报告
  • 覆盖云图显示测试热点
  • 彩色的 HTML 格式的报告,可以进行方法缩放,等等
  • 对每个方法都有覆盖分析
  • 复杂性分析
  • 简化的 Ant 任务
  • 集成的历史报告
  • 聚集的包分析
  • 可配置报告栏目,栏目格式与栏目阀值
  • 提高了运行时记录覆盖率的性能
  • 新增了运行时配置选项用来控制记录覆盖率
  • 全新的 Eclipse plugin

Clover 2 针对 IntelliJ, Netbeans 和其他 IDE 的更新 plugin 即将发布。InfoQ 与 Atlassian 的 Pete Moore 讨论了 Clover 2 以及最近的并购。第一个问题是为什么 Cenqua 与 Atlassian 合作多年后同意被并购 :

Cenqua 是一个 dot com 咨询公司的私生子。它的核心目标不是盈利,而是让咨询客户满意和减少工作时间。基本上是 Brendan, Matt, Conor 和我决定使用一些在公司业务蓬勃发展期间完善过的内部工具来进行运营……开发人员的确可以成为一起工作的有趣的顾客,对吧?

经过飘忽的四年之后,我们有了四个产品,数以千计的顾客和少量职员。我们尽力的维持公司,但是最初激励公司的生活方式的因素已经变得衰弱了。Atlassian 始终是激情洋溢的,我们喜欢他们的东西,与他们合并就像过桥一样自然,这样做是有意义的。

接下来 InfoQ 询问了 Cenqua 作为 Atlassian 的一部分后发生了哪些变化:

开会,很多令人精疲力尽的会。但是严肃的来说,我们迅速的壮大了我们的团队,有了专门的支持资源,慢慢的提高了我们的速度。总之,我们开始实现某些我们已经期待已久的特征。

然后话题转移到 Atlassian 如何保持 Clover 的激动人心的特性。Moore 解释说 Clover 不仅仅是覆盖工具,而且增加了许多其他 Clover 的克隆产品所没有的重要的价值。他提到的特征中有新的 Quick Winds 和项目风险覆盖云图。Quick Wins覆盖云图显示了可以快速提升你的整个项目的测试覆盖率的重点类,你可以把精力重点放到测试这些类上。 项目风险覆盖云图能够高亮包含了最复杂且未经测试的代码的类,这些类往往是项目中风险最高的部分。InfoQ 随后和 Moore 讨论了 Atlassian 的顾客使用 Clover 2 的一些有趣的方式。下面是其中一些回答:

  • 预构——在开始重构之前,使用 Clover 2 的报告找出哪些测试会受到重构的影响,这些测试的质量,洞察预计的变化并帮助评估重构。
  • 使用覆盖云图从遗留代码的基础上构建一套测试。从云图中挑选 bug 最多,最红的类来写测试,然后重新生成覆盖云图并重复这一过程。

有相当多的人说他们喜欢有鲜艳色彩的,交叉引用的可以导航的 HTML 版本的代码覆盖报告。覆盖注解仅仅是锦上添花而已。

最后 Moore 谈了 Clover 2 的下一步打算是什么:

首先是一定要发布它!然后我们有了一些打算,例如:

  • 作为持续集成测试优化(从 Bamboo 开始)的使能者
  • 明确的找出使得测试失败的那寥寥几行代码
  • 为 Intellij 开发一个 Clover 2 的 plugin
  • 用我们加入复杂性指标的类似方法来合并其他指标。(比如识别出 findbugs 中有坏气味的代码的可怜的覆盖率,会对测试有所帮助)
  • 用 Clove 来为 Crucible 代码审核增加自动分析功能
  • 其他有趣的覆盖率检查,不仅仅是当覆盖率低于例如 a% 的时候才亮红灯。还可以在对新代码的覆盖不符合原则的时候或者代码改变降低了覆盖率的时候亮红灯。

我们不断的提出有趣的想法,谢谢 Atlassian 使得我们现在有时间来实现这些想法。

查看英文原文Atlassian's Pete Moore Discusses The New Features of Clover 2 
译者简介曹云飞,西安交通大学计算机软件硕士。现就职于Ethos,热衷于新技术的钻研,软件架构与敏捷开发,目前从事 Home Control 方面的工作。参与 InfoQ 中文站内容建设,请邮件至china-editorial[at]infoq.com
Java语言 & 开发