-
题名使用抽象语法树和静态分析的克隆代码自动重构方法
被引量:14
- 1
-
-
作者
于冬琦
彭鑫
赵文耘
-
机构
复旦大学计算机科学与工程系软件工程实验室
-
出处
《小型微型计算机系统》
CSCD
北大核心
2009年第9期1752-1760,共9页
-
基金
国家自然科学基金项目(60703092)资助
国家"八六三"高技术研究发展计划项目(2006AA01Z189
2007AA01Z125)资助
-
文摘
单个软件系统中以及若干个相似系统之间的代码克隆给软件维护增加了很大困难.本文针对运用克隆侦测发现的相似代码片断,提出一种基于抽象语法树和静态分析的代码自动重构方法.该方法首先为克隆代码分别构造抽象语法树,然后运用语句差异度指标建立起语法树之间流程控制语句的对应关系.在此基础上,该方法根据控制流程和基本语句块两个层次上的差异性分析,最终通过代码可变点提取实现克隆代码的自动合并.针对Java代码开发了克隆代码重构支持工具原型,并分别针对JDK1.5和一个业务系统进行了自动重构实验.初步的结果表明,该方法能够准确、有效地辅助开发者实现克隆代码的自动重构.
-
关键词
可变点提取
代码克隆
抽象语法树
再工程
逆向工程
-
Keywords
variation point extraction
code clone
abstract syntax tree
reengineering
reverse engineering
-
分类号
TP311
[自动化与计算机技术—计算机软件与理论]
-
-
题名基于相似性度量的面向对象程序方法级克隆侦测
被引量:4
- 2
-
-
作者
于冬琦
吴毅坚
彭鑫
赵文耘
-
机构
上海市智能信息处理重点实验室
复旦大学计算机科学技术学院
-
出处
《电子学报》
EI
CAS
CSCD
北大核心
2010年第B02期174-181,共8页
-
基金
国家863高技术研究发展计划(No.2007AA01Z125,2009AA010307)
国家自然科学基金(No.60703092,60903013)
上海市科学技术委员会项目(No.08DZ2271800,09DZ2272800)
-
文摘
代码克隆侦测对于代码重构以及可复用资产抽取都有着重要的作用.现有的克隆侦测方法及工具以相似代码片段为单位,给进一步的克隆分析以及代码重构带来困难.针对这一问题,本文提出了一种基于相似性度量的面向对象程序方法级克隆侦测方法,即以方法为单位进行克隆代码侦测.该方法综合利用代码中的注释、签名以及语法相似性来度量方法代码之间的克隆程度.在此基础上合并子类中的相似方法并提取到父类中,从而实现进一步的代码重构.本文通过对JDK包中代码的实验分析验证了本文所提出方法的有效性.初步的实验结果表明,本文方法能够准确、有效地辅助开发者实现方法级的克隆代码侦测.
-
关键词
面向对象
代码克隆
克隆侦测
逆向工程
重构
-
Keywords
object- oriented
code clone
clone detection
reverse engineering
refactoring
-
分类号
TP311.5
[自动化与计算机技术—计算机软件与理论]
-