摘要 | 第1-7页 |
ABSTRACT | 第7-8页 |
第一章 绪论 | 第8-11页 |
1.1 前言 | 第8页 |
1.2 研究动机 | 第8页 |
1.3 相关工作 | 第8-9页 |
1.3.1 重构定位 | 第9页 |
1.3.2 重复代码检测 | 第9页 |
1.3.3 过程蓝图 | 第9页 |
1.4 本文工作 | 第9-10页 |
1.5 论文组织 | 第10-11页 |
第二章 重复代码概述 | 第11-14页 |
2.1 重复代码产生的原因 | 第11页 |
2.2 程序中的重复代码 | 第11-12页 |
2.3 检测重复代码的方法 | 第12-13页 |
2.3.1 基于纯文本的方法 | 第12页 |
2.3.2 参数化匹配方法 | 第12页 |
2.3.3 基于语法树的方法 | 第12-13页 |
2.4 小结 | 第13-14页 |
第三章 基于度量的重复代码检测技术及其改进 | 第14-23页 |
3.1 软件度量 | 第14-17页 |
3.1.1 度量的定义 | 第14-15页 |
3.1.2 度量的目标 | 第15页 |
3.1.3 软件度量理论 | 第15-16页 |
3.1.4 度量准则的评估 | 第16-17页 |
3.2 重复代码检测的度量理论 | 第17-22页 |
3.2.1 基于相似性分析的度量方法 | 第17-18页 |
3.2.2 方法代码的比较 | 第18-19页 |
3.2.3 Kontogiannis度量方法的改进 | 第19页 |
3.2.4 实例研究 | 第19-22页 |
3.3 分析讨论 | 第22页 |
3.4 小结 | 第22-23页 |
第四章 基于过程蓝图的重复代码检测及环路复杂性度量 | 第23-32页 |
4.1 过程蓝图概述 | 第23页 |
4.2 基于过程蓝图的重复代码检测过程 | 第23-24页 |
4.3 MCCABE度量方法 | 第24-26页 |
4.3.1 控制流图的构造 | 第25页 |
4.3.2 控制流图的环路复杂性计算 | 第25-26页 |
4.4 基于过程蓝图的环路复杂性度量 | 第26-28页 |
4.5 实例研究 | 第28-30页 |
4.6 分析讨论 | 第30-31页 |
4.7 小结 | 第31-32页 |
第五章 基于过程蓝图的参数化重复代码的检测 | 第32-39页 |
5.1 参数化匹配榆测技术的理论 | 第32页 |
5.2 基于过程监图的参数化重复代码检测 | 第32-37页 |
5.2.1 基于抽象实现结构图的重复代码的检测 | 第33-36页 |
5.2.2 算法的分析 | 第36-37页 |
5.3 实例研究 | 第37-38页 |
5.4 分析讨论 | 第38页 |
5.5 小结 | 第38-39页 |
第六章 重复代码的重构及其检测工具的设计 | 第39-60页 |
6.1 重构的定义 | 第39页 |
6.2 数学预备知识 | 第39-40页 |
6.3 分析函数(ANALYSIS FUNCTIONS) | 第40-43页 |
6.3.1 原始分析函数 | 第40-41页 |
6.3.2 派生分析函数 | 第41-42页 |
6.3.3 一阶谓词逻辑(First Order Predicate Logic) | 第42-43页 |
6.4 重复代码的重构 | 第43-44页 |
6.4.1 重构同一个类中的重复代码 | 第43-44页 |
6.4.2 兄弟类中的重复代码 | 第44页 |
6.4.3 不相关类中的重复代码 | 第44页 |
6.5 重构方法 | 第44-53页 |
6.5.1 Move Field方法 | 第44-45页 |
6.5.2 Move Method方法 | 第45-46页 |
6.5.3 Extract Method方法 | 第46-47页 |
6.5.4 Parameterize Method方法 | 第47-49页 |
6.5.5 Pull Up Method | 第49-50页 |
6.5.6 Form Template Method | 第50-51页 |
6.5.7 Extract Superclass | 第51-52页 |
6.5.8 Extract Class | 第52-53页 |
6.6 重复代码自动探测工具的设计 | 第53-54页 |
6.7 工具的系统结构 | 第54-55页 |
6.8 工具的功能模块 | 第55-59页 |
6.8.1 代码分析接口 | 第55页 |
6.8.2 重复代码检测器 | 第55-58页 |
6.8.3 数据管理中心 | 第58-59页 |
6.9 小结 | 第59-60页 |
第七章 结论与展望 | 第60-61页 |
主要参考文献 | 第61-63页 |
致谢 | 第63页 |