基于抽象语法树的程序代码抄袭检测技术研究

基于抽象语法树的程序代码抄袭检测技术研究

论文摘要

抄袭是当前普遍存在的现象。近年来,该现象愈演愈烈,手段越来越隐蔽,有些人甚至对抄袭习以为常。在高等教育领域,因计算机类专业工程实践性的特点,要求众多课程围绕计算机进行实践教学与考核,而计算机上电子文本更易被复制及传播。国外有研究者曾针对澳大利亚蒙纳什(Monash)大学的程序设计类课程中程序代码抄袭现象进行调查,统计显示:高达85.4%的学生承认抄袭过他人的作业。这些问题的存在,已严重影响到学生能力的培养与教师正常教学的进行。程序代码抄袭检测技术能够高效快捷地发现有抄袭嫌疑的程序代码,有助于扼制学生不良学风的形成,保证教学质量与客观评价。本文就目前国内外现有程序代码抄袭检测技术进行了研究分析,提出了基于抽象语法树的程序代码抄袭检测方法。基本思路:借助GCC编译器为每一源程序分别构造抽象语法树,程序代码所包含的语义可以被解析至抽象语法树的各个结点中;由于抽象语法树包含许多有助于编译的细节信息,进而优化抽象语法树的结构关系,消除冗余结点,提取与程序有关的可用结点;之后进行可用结点解析,生成特征标记串文本,该标记特征串文本不再是一个线性串,而是一个含有丰富程序语义信息的结点集合;最后利用决策函数对特征标记串集进行相似性计算,完成代码检测。为了有效判定存在抄袭的程序对,还设定了相似性阈值自适应选取机制。在上述理论研究的基础上,设计并实现了一个基于抽象语法树的程序代码抄袭检测实验系统,该实验系统能够自动完成抽象语法树优化、结点解析和抄袭检测。以C语言程序代码为测试数据,并与MOSS系统的检测结果进行对比验证。实验表明,基于抽象语法树检测技术的上述试验系统,能够有效检测含有函数调用的复杂程序结构,并具有多种抄袭手段的程序代码。

论文目录

  • 中文摘要
  • ABSTRACT
  • 第一章 绪论
  • 1.1 研究意义
  • 1.2 国内外研究及现状分析
  • 1.2.1 国内外研究现状
  • 1.2.2 研究现状分析
  • 1.3 本文的主要工作
  • 1.4 本文的组织结构
  • 第二章 抄袭检测相关研究
  • 2.1 抄袭手段
  • 2.2 抄袭检测概述
  • 2.2.1 抄袭检测概念
  • 2.2.2 抄袭检测技术
  • 2.2.3 字符串比较算法在抄袭检测中的应用
  • 2.3 现有抄袭检测系统简介
  • 2.3.1 Plague 系统
  • 2.3.2 YAP 系列
  • 2.3.3 SIM 系统
  • 2.3.4 MOSS 系统
  • 2.3.5 JPlag 系统
  • 2.4 小结
  • 第三章 基于抽象语法树的抄袭检测
  • 3.1 相关介绍
  • 3.1.1 抽象语法树
  • 3.1.2 GCC 简介
  • 3.1.3 GCC 抽象语法树
  • 3.1.4 抽象语法树结构
  • 3.1.5 抽象语法树包含的静态信息
  • 3.2 抄袭检测关键技术
  • 3.2.1 抽象语法树相关定义
  • 3.2.2 优化冗余结点
  • 3.2.3 结点解析
  • 3.3 标记特征串文本
  • 3.4 相似性计算函数
  • 3.5 阈值的选取
  • 3.6 小结
  • 第四章 抄袭检测实验系统
  • 4.1 系统实现
  • 4.1.1 基本思路
  • 4.1.2 开发环境选择
  • 4.1.3 系统实现
  • 4.1.4 用户界面
  • 4.2 关键算法
  • 4.3 小结
  • 第五章 实验与结果分析
  • 5.1 实验数据选取
  • 5.2 实验及分析
  • 5.2.1 实验程序集 A 分析
  • 5.2.2 实验程序集 B 分析
  • 5.2.3 实验数据说明
  • 5.3 小结
  • 第六章 总结
  • 6.1 研究工作总结
  • 6.2 不足与进一步的工作
  • 参考文献
  • 致谢
  • 攻读学位期间发表的学术论文
  • 相关论文文献

    • [1].基于抽象语法树分析的版本控制分支合并算法[J]. 计算机系统应用 2015(03)
    • [2].一种改进的基于抽象语法树的软件源代码比对算法[J]. 信息网络安全 2014(01)
    • [3].抽象语法树在属性计算中的应用[J]. 安庆师范学院学报(自然科学版) 2008(04)
    • [4].基于抽象语法树的数据泥团自动检测研究[J]. 计算机应用与软件 2017(01)
    • [5].基于抽象语法树的修改影响分析方法[J]. 长春工业大学学报(自然科学版) 2012(04)
    • [6].基于代码变更块和抽象语法树的两种重构模式识别[J]. 智能计算机与应用 2019(03)
    • [7].基于抽象语法树的C克隆代码重构应用与研究[J]. 上海师范大学学报(自然科学版) 2018(04)
    • [8].基于线索抽象语法树的程序依赖图自动生成算法[J]. 武汉大学学报(理学版) 2015(02)
    • [9].Ckit系统分析及应用[J]. 电脑知识与技术 2017(27)
    • [10].基于中文语法树的概念图挖掘研究[J]. 大连海事大学学报 2012(04)
    • [11].基于语法树的程序相似度判定方法[J]. 吉林大学学报(信息科学版) 2014(01)
    • [12].C程序控制流程模型的提取技术与实现[J]. 计算机科学 2014(05)
    • [13].使用抽象语法树和静态分析的克隆代码自动重构方法[J]. 小型微型计算机系统 2009(09)
    • [14].克隆代码自动重构的抽象语法树及静态分析[J]. 数字技术与应用 2016(02)
    • [15].基于抽象语法树的Javascript混淆器[J]. 硅谷 2015(02)
    • [16].简化GCC抽象语法树的新型算法[J]. 计算机科学 2015(S1)
    • [17].建立抽象语法树模型评测C++代码[J]. 计算机应用 2015(S1)
    • [18].基于抽象语法树和最优映射算法的克隆代码映射研究[J]. 内蒙古大学学报(自然科学版) 2018(05)
    • [19].一种优化GCC抽象语法树的方法[J]. 电子技术与软件工程 2017(06)
    • [20].基于JavaCC的抽象语法树的构建与实现[J]. 计算机工程与设计 2016(04)
    • [21].一种基于GCC抽象语法树的程序特征提取方法[J]. 电子技术与软件工程 2013(20)
    • [22].消除GCC抽象语法树文本中冗余信息的算法研究[J]. 计算机科学 2008(10)
    • [23].基于语法树和JavaCC的程序题自动评分系统[J]. 计算机技术与发展 2012(01)
    • [24].使用抽象语法树匹配分析Java程序演化[J]. 计算机应用与软件 2011(08)
    • [25].简化GNU编译器套件抽象语法树的算法研究[J]. 上海师范大学学报(自然科学版) 2018(04)
    • [26].CPCC抽象语法树的三地址码生成[J]. 电脑知识与技术 2013(34)
    • [27].静态测试中C/C++抽象语法树的生成[J]. 长春工业大学学报(自然科学版) 2008(03)
    • [28].基于软件历史仓库和抽象语法树的相似缺陷识别方法[J]. 系统工程与电子技术 2020(10)
    • [29].基于语法树高度的汉语韵律短语预测[J]. 计算机工程与应用 2010(36)
    • [30].基于符号执行的软件静态测试研究[J]. 计算机技术与发展 2013(06)

    标签:;  ;  ;  ;  ;  ;  

    基于抽象语法树的程序代码抄袭检测技术研究
    下载Doc文档

    猜你喜欢