【摘 要】
:
最近的研究表明在大规模程序中含有许多重复代码,它们中的大部分是由拷贝-粘贴行为造成的。这些重复代码不仅降低了系统软件的可维护性,而且会给软件引入大量的bug。然而,现
论文部分内容阅读
最近的研究表明在大规模程序中含有许多重复代码,它们中的大部分是由拷贝-粘贴行为造成的。这些重复代码不仅降低了系统软件的可维护性,而且会给软件引入大量的bug。然而,现有的重复代码查找工具或因消耗的时间和内存过多而无法面向大规模软件,或无法找出那些经过重命名、插入或删除修改的重复代码。通过对比各种重复代码检测技术的优缺点,本文选用基于token串的分析方法,引入了数据挖掘技术,实现了一个重复代码检测模型。首先,分析源代码创建一个序列数据库,将重复代码检测问题转化成为一个序列模式挖掘问题。然后,使用改进的CloSpan算法查找支持度至少为2的频繁子序列,这些子序列对应于程序中的重复代码段。最后,改进检测结果,去除不太可能是重复代码的结果,并合并相邻的重复模块,组成较大的重复代码段。与其它方法相比,基于token串的方法和CloSpan算法的算法复杂度较低,时间和内存开销较低,因此适合于分析大规模程序;模型在词法分析之后忽略标识符的真实名字,将类型相似的标识符都映射为相同值,从而可以检测标识符重命名的拷贝-粘贴片段;由于频繁子序列在其支持序列中是可以中断的,因此在设置gap阈值之后可以准确地识别出进行过插入删除操作的拷贝-粘贴片段。实验结果表明,本模型能够在40分钟内从Httpd 2.2.2(280,000行)中检测出约3000组重复代码,其中包括经过各种(重命名、插入和删除)修改后的重复代码。
其他文献
随着本体在信息科学领域的广泛应用,现代知识密集型企业内部产生了大量的本体。企业要想在激烈的市场竞争中取得优势,就需要集成这些局部本体,以获取更好的知识服务。现有的
在油田勘探、开发生产过程中,移动环境下的生产数据传输频繁、传输数据量大,数据处理复杂度高。但是各生产单位地理位置偏远、环境复杂,所采用的通信设备种类繁多、网络条件
粗糙集理论是一种处理不精确、不确定和不完备信息的数据分析方法,现实应用中数据的规模和复杂程度不断增大,限制了粗糙集理论与技术的应用和拓展。决策信息系统分解作为一种数
无线传感器网络作为传感器技术、微电子技术和无线通信技术相结合的产物,成为计算机科学领域一个活跃的研究分支,在军事和民用中开始得到广泛的应用。无线传感器网络由大量低
随着数据库技术的迅速发展和信息系统的广泛应用,企业管理效率提高的同时也促成了海量数据的积累,一些大规模的系统,如证券、银行和人口统计等系统的数据量甚至超过了TB级。
随着物联网日益普及,对智能终端、智能传感器等智能设备的需求迅速增长,嵌入式微处理器和嵌入式实时操作系统(Real-Time Operating System,RTOS)是智能设备的核心,物联网的应
在勘探开发技术领域,众多石油公司正面对着越来越复杂的地质情况、越来越繁杂的项目数据和以及越来越紧迫的决策周期。因此,调整业务结构,优化工作流程,大力提升信息化建设和
云计算是并行计算、分布式计算和网格计算的发展,使并行技术走进了人们的生活。云计算、个人高性能计算机(PHPC)等技术的深入发展,使许多技术人员开始从单机工作模式向并行计
随着信息技术特别是网络技术的发展,电子媒体的传播极为迅捷,人们越来越容易获取数字多媒体信息,与此同时,数字多媒体信息的版权、保密等问题也变得日益突出起来,因此,多媒体的信息
软件复用是目前解决软件危机比较现实可行的方法之一。构件及构件库的开发是软件复用的前提。实践中构件数量不断增加,构件也随技术发展而不断更新,如何实现对构件库中大量的