低代码到底是不是行业毒瘤?一线大厂怎么做的?戳此了解>>> 了解详情
写点什么

采访 Clone Detective 项目创始人 Immo Landwerth

2008 年 10 月 26 日

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

2008 年 10 月 26 日 03:51522
用户头像

发布了 87 篇内容, 共 17.2 次阅读, 收获喜欢 0 次。

关注

评论

发布
暂无评论
发现更多内容

第十周作业 (作业二)

Geek_83908e

架构师一期

架构师训练营第六周总结:

xiaomao

【架构师训练营第 1 期 10 周】 学习总结

Bear

极客大学架构师训练营

第6周作业

Rocky·Chen

CAP原理

Week_10 作业

golangboy

极客大学架构师训练营

Architecture Phase1 Week10:HomeWork

phylony-lu

极客大学架构师训练营

架构师训练营第十周课程笔记及心得

Airs

架构师训练营第十周学习总结

文智

极客大学架构师训练营

第十周作业

熊桂平

极客大学架构师训练营

《Python数据科学入门》PDF免费下载

计算机与AI

Python 学习 数据科学

第十周作业

TheSRE

极客大学架构师训练营

第十周 模块分解作业

钟杰

极客大学架构师训练营

架构2期-第六周作业(1)

浮生一梦

极客大学架构师训练营 2组 第六周作业

CAP 原理简述

jorden wang

第 6 周 系统架构作业

心在那片海

第 6 周 系统架构总结

心在那片海

模块分解-微服务,组件设计原则,领域驱动开发

garlic

极客大学架构师训练营

第六周作业总结

hunk

极客大学架构师训练营

六、CAP

Geek_28b526

第六周作业

hunk

极客大学架构师训练营

第十周作业 (作业一)

Geek_83908e

架构师一期

第10周作业

alpha

极客大学架构师训练营

【架构师训练营 1 期】第十周作业

诺乐

架构一期第十周作业

Airs

第10周总结

alpha

极客大学架构师训练营

架构师训练营 1 期 -- 第十周作业

曾彪彪

架构师训练营 1 期 - 第十周作业(vaik)

行之

极客大学架构师训练营

面试被问Mybatis底层实现:你连这个知识点都说不明白?

小Q

Java 编程 程序员 架构 mybatis

第十周学习总结

熊桂平

极客大学架构师训练营

身为一名优秀的程序员,如何避免满屏的写 if else!

Java架构师迁哥

Week 6 学习总结

evildracula

学习 架构

2021 ThoughtWorks 技术雷达峰会

2021 ThoughtWorks 技术雷达峰会

采访Clone Detective项目创始人Immo Landwerth-InfoQ