基于序列匹配的代码克隆分析系统设计与实现

来源 :大连理工大学 | 被引量 : 0次 | 上传用户:shanxidongfang
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
随着计算机技术的发展和软件需求的不断增加,在软件快速开发和再工程中越来越频繁地强调代码复用。好的代码复用方式能反映出好的设计意图,节省开发成本,提高软件质量,而不好的复用方式会对整个软件系统的开发和维护带来很多不利因素,因此对于代码复用的分析显得越来越重要。代码克隆分析作为衡量代码复用的一种有效方式,在软件开发、维护以及质量保证中发挥着重要作用。代码克隆检测技术是对源代码中的复用代码进行检测和分析的技术,它通过使用各种检测算法,在不同粒度上对源代码的文本结构或语义逻辑进行分析,并找出相似的代码结构。代码克隆检测已经应用到软件工程的各个领域,如程序分析、软件理解、软件质量评估、程序剽窃检测、系统演化追踪、软件再工程等。本文设计的系统就是以代码克隆检测技术为基础,采用Smith-Waterman匹配算法进行克隆检测。在实际应用中,常用的克隆检测技术是基于文本或者语法树的检测,前者速度快、准确率低而后者的准确率高、计算代价也高。本文考察了源代码的抽象表示方法,克隆检测粒度,克隆检测技术,在介绍克隆检测流程和常用匹配算法的基础上,利用语法树和序列匹配相结合的方式,给出了一种基于抽象语法树的代码序列生成方法和一种基于序列匹配的克隆检测方法。本文最后设计和实现一个代码克隆分析系统。在前端预处理系统中,对生成的抽象语法树进行了压缩处理,这样就使得程序经过词法分析、语法分析之后,输出的语法树中的内部节点数目大大减少,同时,将转换后的代码以序列的形式存储到哈希表中,有效地控制了检测粒度,减少了匹配算法的输入数据。在后端分析系统中实现了克隆点阵图的显示,给出了文件条码形式的克隆可视化方法,实现了一个完整的可扩展的语法高亮代码浏览器。由于系统提供文本、CSV、XML多种输出方式,在此基础上开发新的后端分析工具或与其他系统整合是很容易的。本文设计的系统为软件开发人员理解程序、软件再工程和软件质量分析提供了帮助和依据。
其他文献
【摘 要】问题教学的关键是教师以问题为线索组织学习活动。“问题”如何获得?既有教师有目的有情境的设问,又有学生在教师激发下的提问,目的都在于让学生在提问过程中产生求知欲,主动深入进行学习探究活动。  【关键词】问题教学 提出问题 激发问题  “有问题”的高中地理教学,这个说法没有任何问题,其含义是指在高中地理教学中进行问题教学实践。  问题教学,即教学内容以呈现或激发问题的形式出现在学生的面前,使
黄金周期间,某晚报一则“奢华新闻”几乎占去了一个版面。该新闻详细报道了香港女星陈慧琳与男友刘建浩的婚礼盛况,文章配发了“新郎与新娘甜蜜热吻”的大幅照片,还列出“豪
随着智能交通系统的发展和我国经济的飞速发展以及城市化进程的明显加快,21世纪交通发展的趋势已经越来越明显,私家车辆的增加给我们的生活水平带来了提高,但是与此同时也带
资源管理是网络控制的重要组成部分,特别是随着各种网络新业务的出现,使得其在网络控制中的地位日益突出。由于网络资源的有限性,如何提高用户满意度,获得资源的最合适配置,
2013年8月,在工行计划打造全国性的电子商务平台初期,就将壳壳果作为平台的首批目标客户。壳壳果至此开始尝试“经销商、电商并重”的双重销售模式。经过一年多的融e购平台运
随着网络安全领域研究的深入和网络服务的广泛应用,人们对网络攻击数据集需求量逐渐增大。由于攻击数据的敏感性和隐私性,使得获取攻击数据十分困难。目前,人们通过收集攻击
随着日常生活网络化水平的提升和移动互联网的广泛传播,Android系统已经成为智能移动市场使用最广泛的操作系统。但与此同时,恶意软件的大肆传播也让安全问题越来越不容小觑。
随着计算机技术和电子商务的高速发展,企业可获取的信息数量和类型有了极大的增长,数据的采集、存储、处理和传播的数量也与日俱增。同时,由于大型企业、政府部门等大型信息
本文针对当前无线传感器网络中缺乏信任管理机制,将信任管理引入到无线传感器网络的管理体系,整个网络以节点信任度作为基础来组建,并以信任度作为网络各种行为的依据。提出
学位
随着网络带宽的不断提高,视频、音频这样的多媒体内容开始逐渐遍布到互联网上。网络视频会议、网络电视直播和影视点播等基于互联网的应用和服务在近年来变得非常热门。这些