重复代码检测技术的研究

来源 :汕头大学 | 被引量 : 12次 | 上传用户:xiaocai
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
软件会随着时间变得越来越难以理解,越来越难以维护。重构是在保持程序外部可观察行为不变情况下,对软件的内部结构进行重新改造和组织的技术,是获得软件质量的一项关键技术。然而“在哪使用哪种重构方法”始终是重构技术需解决的主要问题之一。 重复代码是程序中最常见的代码“坏味道”,Kontogiannis度量是检测重复代码的一种量化方法。然而,由于该度量方法所用的McCabe度量技术不能区分IF语句与循环语句的控制流复杂性,另外此方法不对两个比较函数的返回类型进行判断,因而在度量重复代码时会产生错误匹配。通过引入两个新的度量变量对其进行改进,提高该检测方法的准确性,并减少匹配错误。并通过引入过程蓝图改进它的检测过程,避免了要将源代码转换为抽象语法树这一复杂费时的工作,提高检测过程的效率。同时给出一种基于过程蓝图的程序环路复杂性度量实现方法,简化度量过程和实现,提高度量处理的效率。 Kontogiannis度量方法主要从代码的结构相似性识别重复代码,能识别出方法级的重复代码。Baker提出的参数化匹配方法能检测出方法级以下的重复代码,但它的空间复杂度要求过高,限制其能解决问题的范围。为此,我们引入过程蓝图改进该方法,降低程序的空间复杂度,并避免将源代码变换为后缀树这一复杂过程。 将两种方法有机地统一在同一语境下,避免在传统方法中须将它们分开处理的过程,即对相同的代码既要构造抽象语法树又要构造后缀树的过程,这样能更有效和更精确地检测出重复代码这种“坏味道”,为重构的自动定位和软件的自动重构提供一定的实现技术。
其他文献
随着互联网技术的快速发展,数字媒体的版权保护和内容认证等问题日益突出,数字水印(Digital watermarking)技术为解决该问题提供了一种有效的方法。半易损水印结合了鲁棒水印和
学位
随着社会各行业的日常运营对软件的依赖与日俱增,对这些软件系统的维护工作越来越重要。同时,这些软件系统是重要的可复用资源,越来越多的软件企业关注如何更充分地重复使用这些
随着信息技术的不断进步和发展,人们对于智能建筑中的照明要求越来越高,然而目前我国大多数建筑物在照明控制上所使用的协议不一,在系统集成以及系统间的互操作上仍存在很多
随着汽车工业的快速发展,车辆信息系统已经成为汽车电子技术的重要组成部分。车辆信息系统是一个把汽车上的各种电子设备通过车辆网络与周围世界联网,构成以车为核心,以相关
网格技术是近年来国际上兴起的一种重要信息技术,它的目标是实现网络虚拟环境上的高性能资源共享和协同工作,消除信息孤岛和资源孤岛。网格不仅提供利用强力计算机解决巨大挑
H.264是ITU-T的VCEG(视频编码专家组)和ISO/IEC的MPEG(活动图象编码专家组)的联合视频组(JVT:jointvideoteam)开发的一个新的数字视频编码标准,它既是ITU-T的H.264,又是ISO/IEC
近年来,随着数据库技术的发展和数据库规模的日益扩大,人们希望从已有的数据中提炼出有用的信息服务于决策者,决策支持系统应运而生。数据仓库技术、OLAP技术和数据挖掘技术对决
随着全球性市场竞争的日趋激烈,企业迫切需要采用先进的生产管理理论和技术来指导企业的生产。纺纱行业是一个有悠久历史的传统制造业,由于工序多,设备复杂,劳动密集型占主导等原
数据挖掘是从大量的、不完全的、有噪声的、模糊的、随机的数据中,提取隐含在其中的、人们事先不知道的、但又是潜在的有用信息和知识的过程。基于数据挖掘的KDD技术近来得到
以往在对汽车转向柱开关进行性能检测时,都是采用手工方法静态测量,也就是说在性能试验前和性能试验后用毫伏表逐个测量开关触点压降是否在允许范围内。显然这种方法是无法准确