基于数字指纹的C程序克隆检测技术的研究

来源 :南京理工大学 | 被引量 : 0次 | 上传用户:wffg0907
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
随着科技的发展和自动化教育水平的不断提高,涉及编写代码的地方越来越多。其中,作为培养软件开发人员摇篮的各个高校也纷纷开设了一系列编写代码的课程。由于电子文档易于复制的特性,如何减少或者防止文档拷贝、文档克隆现象的发生,一直都是教师们最为关心的问题,因而也就成为了科研人员的研究热点。为了能够合理、有效的检验学生对编程课的态度以及在课上的真实收获,就迫切需要一种能够检测代码相似度的工具来判断学生代码间是否存在抄袭。本文首先分析和研究了国内外现有的程序克隆检测技术,为了解决在代码相似度检测过程中对比双方源代码特征不明显从而导致特征选取效果不佳的问题,提出一种基于数字指纹的C程序克隆检测方法。该方法主要包含如下六个步骤:①将对比双方的源代码进行预处理,即删除双方源代码中注释、宏命令等与代码语义无关的内容;②将预处理后的双方代码进行分词,即将代码中相邻的不同类型的词之间加上空格;③将分词过后的双方代码进行格式化,即将代码中所含关键词中表征数据类型的词和标识符分别用一个形式化的词进行替换,并删除相邻词与词之间的间隔符,形成格式化代码串;④将双方的格式化代码串利用数字指纹技术转化成一系列的数值,形成数值序列;⑤首先从双方数值序列中去除已训练好的无效数值,然后从有效数值中使用最小Hash法选取出代表双方代码的数字指纹序列;⑥将对比程序双方数字指纹序列之间的相似度值来表征双方源程序之间的相似程度,从而判断出源程序对之间是否存在抄袭。事实上,上述的基于数字指纹的C程序克隆检测方法是在仔细研究数字指纹技术的各个关键环节(包括指纹粒度的大小、指纹选取策略的比较)的基础上提出来的,并最终完成了基于数字指纹的C程序克隆检测系统。实验证明,该方法计算过程简单、易于理解,能够有效的提高整体的计算速度;该方法在去除代码无效片段的基础上选取代码特征,相似度检测结果可信度高,降低了误判的概率;该方法能够识别代码中修改注释、重新排版、标识符重命名和数据类型替换等多种代码抄袭掩饰手段。
其他文献
随着嵌入式系统的迅猛发展与应用,需要存储和处理的数据量也急剧增长,于是,嵌入式数据库系统应运而生。与传统PC数据库相比,嵌入式数据库应具有占用内存资源少、与应用紧密结
随着电子商务的飞速发展,大型综合类购物网站不断壮大,各类细分领域购物网站也蓬勃式发展。葡萄酒电商领域受风投关注不断发力,竞争日趋激烈,问题也愈显突出;随着商品数量的
现代计算机信息技术的飞速发展,极大地推动了各科学研究领域的学术与科技进步,同时也积累了大量的科学数据。例如,医学与生命科学数据库、国家地理信息科学数据库、大气基础
字符串模式匹配算法是计算机科学中一个重点领域,广泛应用于搜索引擎、计算机病毒特征码匹配、网络入侵检测等领域中。首先,本文介绍了模式匹配研究的背景、意义和研究现状,
无线传感器网络是一个由大量传感器节点以自组织和多跳方式构成的无线网络。无线传感器网络可以帮助人们有效的观测目标、收集信息,并执行用户制定的策略或命令。监测轮廓提
本文对自然场景中道路交通标志检测方法进行了研究,总结出一套道路交通标志实时检测算法。主要研究内容如下:(1)禁令标志和警告标志颜色分割方法。主要研究了RGB和HSV颜色空间
学位
由于部署区域的开放性、节点资源的受限性等特性,使得无线传感网络经常面临着巨大的安全隐患。在网络中,攻击者常常可以比较容易俘获某个传感器节点,通过对该节点的分析,可以
由于室内空间越来越大且内部结构越来越复杂,移动终端用户无法在室内获得诸如GPS或北斗定位系统提供的有效位置服务,因而室内基于位置的服务(Location Based Service,LBS)逐
移动无线传感器网络具有广泛的应用。例如,把传感器节点固定在汽车上,来监测城市的路面情况,汽车携带的节点构成了移动传感器网络。节点通过汽车的震动情况获得路面平坦信息,