基于K-最近邻聚类的功能等价的重复代码的检测方法研究

来源 :哈尔滨工业大学 | 被引量 : 0次 | 上传用户:purelife100
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
软件的高质量、高可靠性是系统开发和维护工作的一个不可或缺的重要方面,重复代码(也称为克隆代码)检测则是保证软件的高质量和高可靠性的一项重要任务。在软件系统中,重复代码的存在使代码量增大,软件系统架构变得比较臃肿,导致软件系统的维护存在一定的困难。而功能等价的重复代码作为重复代码的一种,因为涉及到复杂的程序语义分析,目前还缺少有效的检测方法。针对目前方法存在的不足,本文提出了基于K-最近邻聚类算法的功能等价的重复代码的检测方法。本文方法首先对源程序进行词法分析和语法分析分别建立抽象语法树AST和控制依赖图CDG,并在此基础上进行特定的数据流分析得到函数语句中变量的定值-使用信息集合,然后利用K-最近邻聚类方法获取得到功能独立的易于提取的代码片段,并在识别得到代码片段的输入变量和输出变量的基础上,对代码片段进行过程提取,将不能编译的代码片段转换为能够编译执行的函数,接下来为函数的输入变量实现自动随机赋值,最后对函数执行动态测试并根据输出变量的结果对函数进行分类,由此将代码片段划分到不同的集合中,得到功能等价的代码片段集合。本文使用学生在C语言课程作业中提交的程序和Simens开源代码对基于K-最近邻聚类的功能等价的重复代码的检测模型进行了测试,并且与参考文献中的利用滑动窗口方法获取候选代码片段的方法进行了对比,证明本文中的方法能够以较低的时间复杂度获取功能内聚的代码片段,然后从获取的代码片段中进一步检测得到功能等价的重复代码。
其他文献
到目前为止IETF已公布的网络协议有5000多种,面对增长速度逐渐加快的网络协议数量,健壮性测试的难度日益加大;对于每个具体协议的测试同样困难,为了达到完全测试,其要求的测试
火灾环境中的应急疏散问题一直以来都是国内外公共安全领域研究的热点,该问题自从被提出后,国内外学者取得了一定的研究进展和成果。在初期阶段,研究者们相继提出的例如社会
信息资源是社会发展的重要战略资源,随着国民经济以及社会信息化的全面加速发展,信息化正在深入到我国政治、军事、经济、社会、企业、生活各个领域,涌现出了大量的数字化业
结构光三维重建技术属于一种非接触主动测量技术,具有低成本、高精度、大视场、实时性好和抗干扰能力强等特点,在工业自动化测量、机器人导航、大规模复杂三维场景重建、医学
随着计算机技术和电子商务系统的不断发展,灵活的界面设计技术在网站建设中应用得越来越广泛。传统的基于JSP的电子商务系统存在页面显示和业务逻辑强耦合的情况,造成系统开
盲源分离又称为盲分离,是在不需要太多的源信号和信道先验信息的情况下,仅根据观测到的混合输出信号,分离出各输入源信号的过程,是信号处理领域的一个前沿问题,广泛应用于图
为满足用户移动通信需求,第三代合作伙伴计划3GPP(Third GenerationPartnership Project)组织提出了长期演进计划LTE(Long Term Evolution),以实现3G到4G的演进。本文围绕LTE系统性
近二十年间,随着计算机相关技术尤其是图形学技术的发展,计算机图形学产生了巨大的变革,三维图形学在各领域的应用也日趋广泛。与此同时计算机图形硬件也遵从着摩尔定律飞速发展
数据挖掘是从海量数据中发现蕴含其中的有用信息和知识的过程,应用广泛。关联规则分析作为数据挖掘的主要功能之一得到了广泛应用,对关联规则算法的深入研究具有很高的理论价
随着无线通信、嵌入式系统、分布式信息处理以及微电子等技术的快速发展,使得具有信息感知、信息处理和无线网络通信等能力的传感器节点以及由这些传感器节点构成的传感网得到