基于后缀数组的克隆代码检测研究

来源 :内蒙古师范大学 | 被引量 : 0次 | 上传用户:gaoxuan1234
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
克隆代码是指软件中相同或相似的源代码段,其在软件开发与维护中具有重要的影响。近十年来,克隆代码的检测已成为软件维护中的一项重要研究内容。学者们也相继提出了许多克隆检测方法与技术,也实现了一些优秀的检测工具。然而,随着软件规模不断增大,现有克隆检测技术在时空效率上仍然不高。本文基于后缀数组这一简单而高效的数据结构,结合Type-1和Type-2函数克隆的句法特征,以重点开展具有低时空复杂度的克隆检测技术的设计研究。首先,根据函数克隆的相似性定义,设计相应的词法分析程序以消除源代码表面上的差异,识别并标记其中的函数或方法,进而转换成标准化的Token串。其次,采用前缀倍增算法构造Token串的后缀数组。然后,根据比较单元为函数这一特征,改进现有的计算最长公共前缀算法,以构造出公共函数前缀数组。接着,设计重复函数子串的查找算法,进而检测出Token串中所有的重复函数子串。最后,结合词法分析阶段的位置信息,以克隆群的形式过滤并反馈软件中的函数克隆。基于上述研究成果,本文设计并实现了一款与程序设计语言无关的克隆检测工具FCD。本文也利用FCD检测了24款C语言的开源软件,从多个维度深入地分析了这些系统的克隆特点。通过大量的实验结果验证了FCD具有很低的时空复杂度,能快速地地检测大规模软件系统,同时保证了较为理想的误报率与漏报率。
其他文献
诸如银行业务、航空预定、通信、网络支付、在线文件传输、在线视频会议等诸多行业对服务器要求甚高,几分钟的服务中断可能对这些行业造成数以万计美元的损失。服务器全天候24
随着数字化和信息化社会的发展,人们对信息安全的重要性认识不断提高。正如电子购物、电子邮件、网络银行等悄悄地融入普通百姓的日常生活中,人们自然要关注其安全性如何。信
在地球系统模式研究领域中,地球系统模式数据包含四部分:海洋数据、大气数据、陆地数据和海冰数据。这些数据中存在很多的标量场,我们可以通过研究和分析这些标量场来加深对全球
随着互联互通技术的高速发展和智能移动终端的广泛普及,人类已经进入了信息爆炸时代,信息量的指数级增长导致了信息过载问题的产生。如何在浩如烟海的互联网内容中找到真正需要
随着网络技术的飞速发展,越来越多的网络业务需要对数据包进行快速、准确的分类,包分类已经成为高速路由器的一个性能瓶颈,如何在良好的时间和空间性能下进行快速、高效的包分类
近年来,随着多媒体技术及实时通信技术的广泛应用,图像及视频的传输和存储效率对通信系统实时性及可靠性的影响日益显著。目前,大多数的图像及视频数据是以压缩的形式存放和
二十一世纪,计算机产业的发展是信息化过程中不可或缺的部分。随着软件产业的不断发展和进步,软件的需求越来越复杂,规模也越来越庞大。为满足软件功能、性能等要求,软件质量已成
随着计算机和网络在人们的工作,学习和生活中占据着越来越重要的位置,慢慢趋向于一个不可替代的地位。在这种时代大背景下,数字签名算法在现代密码系统中发挥着核心的作用。顾名
卫星遥感观测对环境的治理和规划有着重要的意义,与地基观测相比卫星遥感观测具有覆盖面积广、观测时间连续、可持续动态观测等优势。卫星遥感可以分为极轨卫星遥感和静止卫星遥感,极轨卫星以天为重访周期限制了的时间分辨率,无法进行实时观测,而静止卫星则有较高时间分辨率,特别是随着新一代静止卫星的升空,进一步提高了静止卫星的观测能力。本文使用的新一代静止卫星Himawari8与传统静止卫星相比有更多的光谱通道,
协作分集技术是近来无线通信系统中被广泛关注的技术。网络编码理论作为信息领域中的重要突破,成为无线网络中的新兴研究方向。鉴于协作分集技术与网络编码技术存在共同的通信