程序代码的相似度检测技术主要被分为两类:属性计数技术和结构度量技术。属性计数 技术主要思想是统计源程序中基本属性,并对统计的结果进行处理,而不考虑结构化的信息。 结构度量技术则是主要分析程序内部的结构,分析的结果可以反映出代码的内部信息。文献综述
1。2 国内外研究现状
1。2。1 国外研究现状
1。2。2 国内研究现状
1。3 研究内容
本文实现一个可以检测两份代码相似度的程序,并根据具体算法和公式算出相应的相似 度值。由于学生在基础方面多是学习 C++语言,所以本程序是以 C++语言为研究对象的程序。 本系统的主要研究内容:
1。代码的预处理 设想到一些学生可能会采取一些不正当的方式去降低检测出的相似度的结果,比如学生
会在自己的代码中加入大量的无用的空格和注释等,这些冗余的部分在检测的时候会对最终 的结果造成一定的影响,导致计算出的相似度值不准确。因此,需要在检测之前有一个对于 代码预处理的步骤,这个步骤要先对代码进行扫描,过滤掉代码中的冗余部分,方便后续的 检测。
2。代码的属性计数 本部分对于代码的物理特征向量进行统计,特征向量具体包括该程序的代码行数、词数、
字符数、操作符和操作数的数量和种类以及程序的容量。
3。相似度检测
第 4 页 本科毕业设计说明书
本部分先对代码进行标记化转换,将转换后的字符串用字符串匹配算法计算出相似度的 数值,同时将统计出的特征向量用公式算出相应的相似度。
4。相似度评估 通过计算出的两个相似度的数值,分别对程序进行评估。来~自,优^尔-论;文*网www.youerw.com +QQ752018766-
1。4 本文的组织结构
本文共分四章,内容如下: 第一章绪论。介绍了程序相似度检测的研究背景和意义,然后分析国内外在此领域进行
的研究成果与现状。最后提出了本文将要研究的内容和意义。 第二章代码相似度检测概述。首先介绍了关于代码抄袭和代码相似度的相关定义。然后
介绍了几个现状比较完善的检测系统。 第三章代码相似度检测的实现。阐述了代码检测度检测中预处理部分,属性计数部分和
字符串匹配算法部分的设计与实现。并在本章节中提出关于标记化转换的设计,并实现了该 部分的算法。
第四章实验结果与分析。用实验程序集对本文中所讲述的功能进行检测,并对检测出的 结果进行分析,得到结论。
第五章总结与展望。对本文阐述的工作内容进行总结,并提出了本文在研究中的不足之 处,与今后研究中需要改进的方向和内容。