基于AST的代码抄袭检测方法研究
2012-11-30刘呈龙贾胜颖张丽萍刘东升
计算机工程与设计 2012年4期
刘呈龙,贾胜颖,张丽萍,刘东升
(内蒙古师范大学 计算机与信息工程学院,内蒙古 呼和浩特010022)
0 引 言
程序设计是高等院校计算机专业教学中不可或缺的实践与教学环节。作业以电子文档形式提交给教师是程序设计类课程的共同特点。学生完成作业的过程中从网上下载或拷贝其它同学的代码的现象愈演愈烈。因此,抑制抄袭现象、提高程序设计类课程的教学质量越来越重要。这就需要准确、快速的抄袭检测方法,因此,对有效的抄袭识别技术及其应用研究有重要的意义。本文主要研究基于AST的代码抄袭检测方法。首先将代码转换成AST;然后运用序列匹配[1]的方法进行相似度的计算;提取相似部分的特征生成空间向量,对生成的向量聚类分析,找到 “抄袭团伙”。
1 相关的代码抄袭检测方法
国外对程序相似度相关研究始于20世纪70年代。1976年,Halstead首先提出了用属性计数AC(attribute counting)的方法检测程序代码的抄袭问题。一年后,基于AC的代码抄袭检测系统诞生[2]。而随着程序的结构信息被加入到检测中,出现了基于程序结构的检测方法SM(structure metrics),虽然增加了空间和时间的开销,但大大提高了检测的精度。而现在的代码复制检测系统大多采用AC与SM相结合的检测方法。如德国Karlsruhe大学的JPlag[3]和美国Stanford大学的 Moss系统[4]等。
国内方面也取得了一些成果,有人提出了基于编译优化和反汇编的程序相似性检测方法[5]以及一种Java源代码和字节码都适用的剽窃检测方法[6]。内蒙古师范大学分别对源代码层面和非源码层面的相似度检测进行了较深入的研究,并取得了一些进展[7-10]。……
登录APP查看全文
