基于后缀树的代码抄袭检测策略:国内外研究与发展趋势

需积分: 10 9 下载量 53 浏览量 更新于2024-08-10 收藏 2.29MB PDF 举报
国内外研究状况和发展趋势-合成孔径雷达成像算法与实现 在计算机科学领域,特别是在软件工程和版权保护方面,程序代码的复制检测是一个重要的课题。自从上世纪70年代起,国外的研究者就开始探索代码克隆、冗余代码检测以及代码优化等技术,这些技术逐渐发展为程序代码相似度分析的重要工具,用于防止病毒入侵和检测抄袭行为。早期的研究者如Halstead提出软件科学度量方法,通过统计程序代码的属性特征(如复杂度、可读性等)形成特征向量,使用向量空间模型来度量代码间的相似性。这种方法虽简单有效,但由于忽略了代码结构和语义信息,可能导致较高的误判率。 后来,研究人员尝试通过增加向量维度来改进基于属性计数(Attribute Counting,AC)的方法,但Verco和Wise的研究指出单纯增加维度并不能显著提升检测精确度。相比之下,基于结构度量(Structure Metrics,SM)的方法更加注重程序内部结构和部分语义信息,例如通过程序标准化,如token-based、string-based、语法树(Syntax Tree)或语义分析等手段,减少噪音,从而提高检测准确性和精度。语法树,特别是后缀语法树(Suffix Tree),在代码抄袭检测中扮演了关键角色,因为它能够捕捉代码的结构性特征,有助于更准确地识别代码的相似性。 本文关注的是在程序设计类课程中,尤其是在C语言作业抄袭问题频发的情况下,基于后缀语法树的代码抄袭检测方法的应用。作者使用ANTLR编写的C语言文法规则,构建后缀树,通过分析代码的结构模式来识别潜在的抄袭行为。这种方法能够更好地应对学生常见的抄袭策略,如代码剪切、拼接或稍作修改,从而提高抄袭检测的效率和准确性,对于维护学术诚信和提升教学质量具有重要意义。 当前的研究趋势是结合多种度量方法,尤其是结构度量,以提高程序代码抄袭检测的性能,同时考虑到语义信息和代码结构,降低误报和漏报。后缀语法树作为一种有效的结构分析工具,正在成为解决代码抄袭问题的一种前沿技术。在未来的研究中,可以预见这方面的技术和算法将继续发展和完善,以适应不断变化的信息安全需求。