摘要 | 第5-6页 |
ABSTRACT | 第6-7页 |
第一章 引言 | 第10-13页 |
1.1 研究动因 | 第10-11页 |
1.2 研究现状 | 第11-12页 |
1.3 本文工作 | 第12页 |
1.4 论文结构 | 第12-13页 |
第二章 基于抽象语法树的代码差异分析 | 第13-34页 |
2.1 Pyreview分析流程 | 第13-14页 |
2.2 基础知识 | 第14-16页 |
2.2.1 树的编辑脚本 | 第14-15页 |
2.2.2 抽象语法树上结点的大小 | 第15-16页 |
2.3 代码结构化比较功能的实现原理 | 第16-21页 |
2.3.1 结点的相似度 | 第17-19页 |
2.3.2 树的基本操作的表示 | 第19页 |
2.3.3 结点序列的匹配 | 第19-21页 |
2.4 针对Psydiff算法的优化 | 第21-28页 |
2.4.1 移动结点的检测 | 第21-23页 |
2.4.2 Bi-gram字符串相似度算法的使用 | 第23-26页 |
2.4.3 带缓存实现的结点列表匹配 | 第26-28页 |
2.5 实验评估 | 第28-33页 |
2.5.1 实验对象 | 第28-30页 |
2.5.2 实验综述 | 第30页 |
2.5.3 代码结构化比较的实验结果 | 第30-31页 |
2.5.4 与Psydiff算法的比较 | 第31-33页 |
2.6 本章小结 | 第33-34页 |
第三章 Pyreview代码变更类型分析 | 第34-41页 |
3.1 背景介绍 | 第34-35页 |
3.2 变更类型分析功能的实现 | 第35-39页 |
3.2.1 结点的角色和类型 | 第35-36页 |
3.2.2 结点变更类型规则 | 第36-38页 |
3.2.3 变更类型分析流程 | 第38-39页 |
3.3 实验评估 | 第39-40页 |
3.4 本章小结 | 第40-41页 |
第四章 Pyreview代码克隆检测 | 第41-50页 |
4.1 背景介绍 | 第41页 |
4.2 现有工作的不足 | 第41-43页 |
4.3 代码克隆检测功能的实现 | 第43-46页 |
4.3.1 Anti-unification算法 | 第43-44页 |
4.3.2 Pyreview中的实现算法 | 第44-46页 |
4.4 实验评估 | 第46-49页 |
4.4.1 与Clonedigger实验数据的比较 | 第48-49页 |
4.5 本章总结 | 第49-50页 |
第五章 总结与展望 | 第50-52页 |
5.1 工作总结 | 第50页 |
5.2 未来工作 | 第50-52页 |
参考文献 | 第52-54页 |
致谢 | 第54-55页 |
攻读硕士学位期间主要的研究成果 | 第55-56页 |