摘要 | 第5-6页 |
Abstract | 第6页 |
第一章 绪论 | 第10-16页 |
1.1 研究背景 | 第10页 |
1.2 研究现状 | 第10-14页 |
1.2.1 代码相似度检测技术研究现状 | 第10-12页 |
1.2.2 现有代码相似度检测系统 | 第12-14页 |
1.3 本文主要工作 | 第14-15页 |
1.4 本文组织 | 第15页 |
1.5 本章小结 | 第15-16页 |
第二章 相关技术综述 | 第16-29页 |
2.1 代码相似度检测概述 | 第16-17页 |
2.2 代码相似度检测标准 | 第17-18页 |
2.3 基于指纹生成的相关算法 | 第18-20页 |
2.3.1 n-gram | 第18页 |
2.3.2 Karp–Rabin算法 | 第18-19页 |
2.3.3 Winnowing算法 | 第19-20页 |
2.4 基于字符串相似度的相关算法 | 第20-27页 |
2.4.1 RKR-GST算法 | 第20-24页 |
2.4.2 Levenshtein距离 | 第24页 |
2.4.3 Smith-Waterman算法 | 第24-26页 |
2.4.4 LCS(Longest Common Sequence)算法 | 第26-27页 |
2.5 比较和分析 | 第27-29页 |
第三章 基于Smith-Waterman算法的代码相似度检测研究 | 第29-38页 |
3.1 概述 | 第29页 |
3.2 基于Smith-Waterman算法的代码相似度检测算法 | 第29-31页 |
3.2.1 标记化 | 第29-30页 |
3.2.2 标记序列匹配 | 第30页 |
3.2.3 相似度计算 | 第30-31页 |
3.3 改进的基于Smith-Waterman算法的相似度检测 | 第31-35页 |
3.3.1 改进思路 | 第31页 |
3.3.2 自定义标记转换规则 | 第31-32页 |
3.3.3 建立相似度检测的得分矩阵 | 第32页 |
3.3.4 按函数定义划分标记块 | 第32-34页 |
3.3.5 相似度计算方法 | 第34-35页 |
3.4 基于Smith-Waterman算法的相似度检测并行算法 | 第35-37页 |
3.4.1 并行性分析 | 第35-36页 |
3.4.2 并行算法 | 第36-37页 |
3.5 本章小结 | 第37-38页 |
第四章 基于指纹对比的代码相似度检测 | 第38-46页 |
4.1 概述 | 第38页 |
4.2 相似度检测系统的设计与实现 | 第38-41页 |
4.2.1 标记化 | 第38-39页 |
4.2.2 使用Winnowing算法生成代码指纹 | 第39-40页 |
4.2.3 求代码指纹的交集 | 第40页 |
4.2.4 计算代码相似度 | 第40-41页 |
4.3 改进的基于Winnowing算法的相似度检测算法 | 第41-44页 |
4.3.1 去除模板代码 | 第42-43页 |
4.3.2 排序求指纹交集 | 第43-44页 |
4.4 基于Winnowing算法的相似度检测并行算法 | 第44-45页 |
4.5 本章小结 | 第45-46页 |
第五章 实验与分析 | 第46-51页 |
5.1 实验环境 | 第46页 |
5.2 测试数据 | 第46页 |
5.3 实验内容 | 第46-47页 |
5.4 实验结果与分析 | 第47-50页 |
5.4.1 代码相似度检测算法的检测效果对比 | 第47-48页 |
5.4.2 代码相似度检测算法的检测效率对比 | 第48页 |
5.4.3 并行效果分析 | 第48-50页 |
5.5 本章小结 | 第50-51页 |
总结与展望 | 第51-52页 |
参考文献 | 第52-54页 |
致谢 | 第54-55页 |
附件 | 第55页 |