结合动态测试和静态分析的克隆代码重构

来源 :哈尔滨工业大学 | 被引量 : 0次 | 上传用户:wangbp20021225
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
克隆代码的检测和重构是提高软件的可靠性和质量的重要方法。相对于语法相似的克隆代码而言,功能等价的克隆代码和结构语义相似的克隆代码是较为复杂的克隆代码类型,目前对这两种类型的克隆代码的检测和重构的研究还比较少。现有的功能等价的克隆代码的检测方法存在时间复杂度比较高的问题。而对功能等价的克隆代码的重构和结构语义相似的克隆代码的重构研究尚未见到文献报道。针对上述问题,本文进行了以下研究:首先,针对目前功能等价克隆代码的检测中存在的问题,设计了基于静态分析的功能等价的克隆候选代码的提取算法。首先根据从K-最近邻聚类算法所提取的内聚度高、功能独立的代码片段中提取出参数信息,然后根据输入/输出参数的数目和类型信息逐步过滤和划分得到克隆候选代码集合,并将该集合作为功能等价克隆检测部分的动态测试的输入。其次,针对功能等价的克隆代码的重构问题,提出了两种优选标准,根据优选标准选出优选函数,将静态分析和动态测试相结合以确定优选函数与非优选函数之间的参数的对应关系,进行过程替换后得到重构程序。最后,针对结构语义相似的克隆代码的重构问题,提出了表达式和控制结构的语句的标准化规则。根据标准化规则实现标准化转换后,对程序代码进行克隆检测,并根据检测的输出结果确定差异代码。根据差异代码进行差异性分析,在此过程中需要根据度量阈值确定程序是否适合重构,然后对适合重构的程序进行可变性提取,对不适合重构的程序给出建议。本文使用学生所提交的C语言小程序和开源程序对以上三个部分的研究内容进行了实验。基于静态分析的功能等价的克隆候选代码的提取的实验证明了经过静态分析之后获取到的候选代码集合能够以较低的时间复杂度进行检测得到功能等价的克隆代码。功能等价的克隆候选代码和结构语义相似的重构实验和人工验证说明了该算法能够正确实现重构。
其他文献
跨文档共指消解(CrossDocumentCoreference,CDC)是以分散在不同文本来源中的相同名词实体为对象,通过信息抽取、信息表示和聚类等技术最终判定这些名词实体与客观概念之间的
web服务是从传统中间件技术演变而来的,是能通过网络使用的自描述、自包含、开放的软件模块,能够很好的支持基于web的企业级集成。web服务的目标是构建分布式应用,能够按照不同
随着互联网和Web2.0技术的迅猛发展,社会化标签被越来越广泛地应用于个性化的信息服务系统中。标签体现了群体智慧,它有效地联系了用户与资源,同时描述了用户的兴趣爱好和资源的
随着电子信息技术的发展,个人的一些隐私信息越来越容易受到侵犯,人们在确保个人信息安全的同时,也在积极寻求新的更加安全的机制,而基于虹膜纹理特征的虹膜识别技术经过多年的发
社会网络是现实中许多真实复杂网络的抽象,社会网络中蕴含着丰富的数据信息。现实世界中,社会网络随处可见,例如Blog、FaceBook和Twitter等在线社交网站。社会网络数据发布可以
语音活动检测是指从一段包含语音的信号中准确地确定语音的起始点和终止点的技术。由于语音活动检测对语音分析、语音合成、语音编码和语音识别等技术具有关键作用,所以本文针
人类社会中各实体间的联系可以通过复杂网络进行描述,如社会接触网络、科学家合作网络、交通运输网和因特网等。复杂网络的研究不仅关注网络自身的结构,同时也非常侧重网络上发生的传播动力学过程。根据不同的研究对象,网络上的传播动力学研究可分为三类:简单生物传播、复杂社会传播和耦合传播。简单生物传播主要指信息、谣言、计算机病毒和流行病等这种单次接触足以导致传播发生的动力学过程,复杂社会传播主要关注健康行为和创
学位
囊状幼虫病是东方蜜蜂种群减少的主导因素,由于缺乏有效的预警手段,目前只能在发病后进行药物控制,导致蜂产品产量、质量的下降。风险评估是识别某一事件存在风险隐患的有效手段
随着科学技术的飞速发展,数据形式愈来愈趋于多样化,例如图片、语音、指纹等等。对于复杂形式数据的挖掘也越来越重要。科技的发展使得人类越来越渴望找到代替人类工作、思考的
软件技术和经济的飞速发展,使得传统的软件提供模式发生了巨大的变化,产生了SaaS型软件服务提供模式,同时面对网络中急剧增长的需求,众多组织和个人希望快速的切入到这一市场,为此