采访 Clone Detective 项目创始人 Immo Landwerth

  • Jonathan Allen
  • 王波

2008 年 10 月 26 日

话题:.NETIDE重构语言 & 开发架构

我们采访了 Visual Studio 开源项目Clone Detective 的创始人 Immo Landwerth。该项目利用 ConQAT 分析副本的 C# 代码

最初是什么促使你创建 Clone Detective 呢?

克隆检测是非常通用但仍未得到充分利用的质量工具。代码复制可有多种不同的原因,有懒惰开发人员在编程语言中过度的复制粘贴,也有架构的约束。今天,由于没有工具支持,克隆检测并没得到广泛使用。我们项目的目标就是把克隆检测直接带给开发者——这就是我们创建与 Visual Studio 集成而非独立工具的原因。

Clone Detective 给开发者提供了三项重要功能。前两项非常明显:它允许你运行检测和浏览生成的克隆报告。第三项就没那么明显了。如果今天你开始使用 Clone Detective,你的项目就会有若干份克隆。移除副本会导致开销和风险,所以你现在不能马上移除它们。你会找到一种方式来处理它们。第二项功能就在此处发挥作用。Clone Detective 标记所有源代码,复制的代码在页边距中会有一紫色条形图。听起来虽不是很形象,但它考虑了最普通的维护用例。某些开发人员正修复项目中的 bug。在编码的时候,他注意到紫色条形图,并记住了这表示一份克隆。现在,该开发人员可快速查看其它克隆代码并检查他是否必须对它们应用 bug 修复。这是处理克隆的一种非常简单方式:保留它们但确保源代码保持一致。

Clone Detective 的下一版本甚至能够找到“模糊克隆”。这些克隆几乎是一样的,但有些不同。这些克隆特别有趣,因为它们也许在你的基础代码中表现的并不一致。

对于你提到的备份代码保留问题,可以使用 Clone Detective 通知维护人员需要检查该克隆。这项技术是你初始目标的之一,还是你事后发现的呢?

在 Munich 科技大学的软件能力中心已经有许多使用克隆检测的经验。那意味着对于 Clone Detective,保留和维护克隆的问题已经众所皆知,所以这已是一项前提条件。

Clone Detective 和 ConQAT 之间有何联系?

ConQAT是一个连续的质量评估工具包——伴有其他重要特性,例如架构分析——能够执行克隆检测。ConQAT 被设计成一种工具,它集成到你的构建过程以生成高级别信息,该信息可以用于创建项目考核中心网站。

Clone Detective 是一款 Visual Studio 托管的用于 ConQAT 克隆检查的图像用户界面。ConQAT 完成所有克隆检测的繁重工作,例如读取和分析源文件。Clone Detective 提供可视化和集成功能,以便人们能够快速创建和浏览克隆报告。

现在你们计划暴露其他的 ConQAT 功能到 Visual Studio 吗?

没有。然而,我们会暴露出 ConQAT 所有关于克隆检测的特性,例如文件过滤器、黑名单和模糊克隆等。

查看英文原文:Interview with Clone Detective's Immo Landwerth


译者介绍:王波 匆匆 IT 过客,涉足于.net 编程技术,常驻于 51cto 论坛.net 版块 ,潜心研究和译书,现与友人共译《C# 3.0 揭秘》,亦分享心得于博客

.NETIDE重构语言 & 开发架构