摘要 | 第5-6页 |
Abstract | 第6-7页 |
第1章 绪论 | 第10-17页 |
1.1 课题研究的背景 | 第10-11页 |
1.2 课题研究的意义 | 第11-12页 |
1.3 国内外研究现状 | 第12-16页 |
1.3.1 国外研究现状 | 第12-14页 |
1.3.2 国内研究现状 | 第14-16页 |
1.4 课题的来源与主要研究内容 | 第16-17页 |
1.4.1 课题来源 | 第16页 |
1.4.2 主要研究内容 | 第16-17页 |
第2章 相关技术概述 | 第17-30页 |
2.1 程序在线评测 | 第17-20页 |
2.1.1 Plague系统 | 第17-18页 |
2.1.2 MOSS系统 | 第18页 |
2.1.3 SIM系统 | 第18-19页 |
2.1.4 JPlag系统 | 第19-20页 |
2.2 相似度概述 | 第20页 |
2.3 编译原理 | 第20-21页 |
2.3.1 词法分析 | 第21页 |
2.3.2 语法分析 | 第21页 |
2.4 程序相似度算法 | 第21-29页 |
2.4.1 动态分析 | 第22-23页 |
2.4.2 Levenshtein Distance算法 | 第23-24页 |
2.4.3 基于串的相似度检测 | 第24-25页 |
2.4.4 基于token串相似度检测 | 第25-27页 |
2.4.5 基于树的相似度检测 | 第27页 |
2.4.6 基于图的相似度检测 | 第27-29页 |
2.5 本章小结 | 第29-30页 |
第3章 基于语义分析的程序相似度检测方法 | 第30-52页 |
3.1 基于语义分析的程序评分模型 | 第30-31页 |
3.2 程序预处理 | 第31-34页 |
3.2.1 语句的标准化 | 第31-32页 |
3.2.2 表达式的标准化 | 第32-33页 |
3.2.3 选择结构的标准化 | 第33-34页 |
3.2.4 循环结构的标准化 | 第34页 |
3.3 程序依赖图的中间表示形式 | 第34-40页 |
3.3.1 程序依赖图 | 第35-38页 |
3.3.2 改进程序依赖图的中间表示形式 | 第38-40页 |
3.4 程序结构匹配 | 第40-42页 |
3.5 程序语句匹配 | 第42-44页 |
3.5.1 匹配节点对 | 第42-43页 |
3.5.2 树匹配算法 | 第43-44页 |
3.6 程序知识点匹配 | 第44-47页 |
3.7 实验验证与分析 | 第47-51页 |
3.7.1 实验数据与构建 | 第47-48页 |
3.7.2 实验验证与分析 | 第48-51页 |
3.8 本章小结 | 第51-52页 |
第4章 基于图和token串的大规模相似代码检测方法 | 第52-68页 |
4.1 大规模程序识别模型 | 第52-53页 |
4.2 基于程序依赖图的代码分块方法 | 第53-55页 |
4.3 启发式过滤方法 | 第55-58页 |
4.3.1 子块重叠过滤方法 | 第55-57页 |
4.3.2 Token位置过滤方法 | 第57-58页 |
4.4 大规模代码相似检测 | 第58-63页 |
4.4.1 部分索引 | 第58-60页 |
4.4.2 相似检测 | 第60-62页 |
4.4.3 候选子块验证 | 第62-63页 |
4.5 实验验证与分析 | 第63-67页 |
4.5.1 实验数据和构建 | 第63-64页 |
4.5.2 执行时间检测 | 第64页 |
4.5.3 召回率检测 | 第64-66页 |
4.5.4 准确度检测 | 第66-67页 |
4.6 本章小结 | 第67-68页 |
结论 | 第68-69页 |
参考文献 | 第69-74页 |
攻读硕士学位期间所发表的学术论文 | 第74-75页 |
致谢 | 第75页 |