基于后缀语法树的代码抄袭检测技术研究

需积分: 10 9 下载量 46 浏览量 更新于2024-08-10 收藏 2.29MB PDF 举报
“基于后缀语法树的代码抄袭检测研究” 本文主要探讨的是程序代码抄袭检测技术,特别是针对学生在编程作业中常见的抄袭行为。在当前信息技术高速发展的时代,代码抄袭变得愈发普遍且难以防范。例如,澳大利亚蒙纳什大学的调查显示,近85.4%的学生承认有过抄袭作业的行为,这对教育质量和学术诚信造成了严重影响。 抄袭手段多样,从简单的完全拷贝、更改注释到复杂的等价控制结构替换和表达式调整,这些都对抄袭检测提出了挑战。赵长海教授增加了常量替换和表达式拆分两种新手段,进一步丰富了抄袭行为的分类。这些手段按抄袭的难易程度可分为低级和高级两类,低级抄袭如完全拷贝和更改注释较易于检测,而高级抄袭如等价控制结构替换则更具有隐蔽性。 为解决这一问题,本文提出了一种基于后缀语法树的代码抄袭检测方法。该方法首先利用ANTLR工具生成C语言的文法文件,ANTLR是一个强大的解析工具,能够帮助构建语法树。语法树是表示程序代码结构的一种抽象语法表示,每个节点代表代码中的一个语法元素,通过这种方式,代码被转化为易于比较的形式。 在构建了后缀语法树后,可以对不同源代码的语法树进行比对。由于后缀语法树反映了代码的结构和逻辑,即使代码经过了重命名标识符、调整顺序等变换,也能在树结构中找到相似性。这种检测方法能有效地识别出那些经过复杂变换的抄袭代码,提高了检测的准确性和效率。 此外,文章还可能涉及如何处理和分析检测结果,以及如何在实际教学环境中应用这种检测系统,以促进学术诚信和提升编程教育质量。同时,可能还会讨论相关的法律和伦理问题,如保护原创代码的权益,以及在使用抄袭检测工具时如何确保学生的隐私。 这篇硕士学位论文深入研究了代码抄袭的现状和检测技术,特别是提出了一种创新的基于后缀语法树的方法,旨在为编程教育提供有效的抄袭防范策略。通过这种方法,可以更好地维护学术环境的公正性和教学质量。