InfoQ

新闻

采访Clone Detective项目创始人Immo Landwerth

作者 Jonathan Allen译者 王波 发布于 2008年10月26日 上午3时51分

社区
.NET
主题
重用,
IDE
标签
重构

我们采访了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揭秘》,亦分享心得于博客

没有回复

回复

深度内容

Flex与JSON及XML的互操作

平台需要互操作性。在这篇文章中,作者仔细研究了Flex和JSON及XML的互操作性。文章也包含了使用E4X库来将XML映射到图表和表格组件的内容,还演示了如何使用as3core库来解码JSON消息。

用Qi4j进行面向组合编程

本文将简要介绍面向组合编程(COP,Composite Oriented Programming)的概念,展示它如何规避OOP存在的一些问题,并重新点燃使用可重用部件组装领域模型(Domain Model)的希望。

系统开发——新学科,新教育

一门新的计算机学科——“系统开发”,强调人性化、匠艺、设计、创意、创新和新事物的涌现,并建议用被称为“bottega”的工作室替代乏善可陈的教室。

图书聚焦:Visual Studio 2008 揭秘

Mike Snell和Lars Powers用他们最近由Sams出版的新书《Visual Studio 2008揭秘》,试图帮助大家提高开发人员的生产力。本文包括一个下载样章——第10章调试。

BPEL为何不是BPM的圣杯?

Pierre Vigneras在本文中讨论了作为标准之一的BPEL所存在的问题。Pierre先给我们大致介绍了一个简单的并行流程,接着讨论了从业者在试图以一个结构化模型为基础表达非结构化流程时遇到的一系列问题。

基于范型的多语言编程

你是否仔细思考过,为什么人们总在讨论“要正确的语言做恰当的事情”?在这篇文章中,Sadek Drobi向你解释了为什么应该在系统内部混合使用多种语言。

采访与书摘《Pro Web 2.0 Application Development with GWT》

Jeff Dwyer就关于他的新书(《Pro Web 2.0 Application Development with GWT》)、GWT1.5以及创建可搜索的Ajax应用谈了一些他的见解。

时刻准备着,迎接IT业的春天

我们需要设身处地地为客户及客户的业务本身着想,与客户同舟共济。更多创新的思路、产品和模式也同样将为IT业带来新的出路。IT业并不需要坐以待毙,在春天到来之后,市场将会更加繁荣!