基于程序依赖图的代码克隆检测算法研究

来源 :中国科学技术大学 | 被引量 : 0次 | 上传用户:intaaag
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
近年来,随着开源软件项目的兴起和迅猛发展,代码克隆检测已经成为软件工程领域一个越来越重要的研究课题,很多软件工程下游应用如代码重构、软件维护、bug和恶意代码以及软件剽窃检测都需要将此作为第一步。目前高级别的代码克隆检测仍然是一项困难工作,PDG(Program Dependence Graph)代码克隆检测可应用于语法、语义和结构功能上相似代码检测,属于高级别代码检测。这类研究中存在着候选PDG对规模大以及子图同构判定时间长等问题。为此,本文在基于PDG结构优化、特征向量过滤和克隆判定算法上进行了深入研究。主要工作和贡献包括:(1)提出并实现了一个基于PDG的代码克隆检测工具CCSharp针对现有典型的基于PDG代码克隆检测方法存在PDG图规模较大、候选PDG对数多的问题,本文设计了 PDG图优化和候选PDG对过滤方法。首先,我们对PDG生成工具产生的PDG图进行结构优化,采取去除节点和合并节点的方式来降低PDG图规模,从而减少PDG同构判定的时间消耗。其次,在优化后的PDG上,我们设计了一种PDG特征向量过滤算法来去除掉非克隆的PDG对以降低候选PDG对数。最后,在优化和过滤方法基础上设计了一种基于PDG的代码克隆检测工具CCSharp。计算实验表明,PDG图优化方法能使PDG图规模平均缩小超过1/3;特征向量过滤方法比传统的GPALG过滤效果提高了上百倍;CCSharp方法同其他三种代码克隆检测工具相比,在less和Postgresq1数据集上分别能达到91.7%和99.3%的准确率以及91.7%和89.8%召回率。(2)提出并实现了一种基于图核相似度计算的机器学习PDG代码克隆检测方法虽然对传统PDG代码克隆检测方法进行优化和过滤之后,代码克隆检测时间有明显提升,但仍然存在处理时间消耗长的问题,我们尝试将非精确的图相似度计算方法(图核函数)和机器学习方法应用于PDG代码克隆检测中。对于一个或一组图核函数,我们设计一个或一组PDG相似度矩阵,作为机器学习方法的输入,再通过对数据集的人工标记后,应用SVM训练出一个分类模型来进行PDG克隆判定。计算实验表明,分类模型预测的精度能达到70%-95%,同时其时间消耗要比子图同构判定方法要少。
其他文献
本文基于空间内生增长理论本文基于空间内生增长理论,通过LS模型并结合56个国家1997—2013年国家级层面的发展数据数据,运用门槛估计模型,研究了市场制度差异下的本土市场规
在预应力混凝土连续箱梁悬臂施工过程中,为保证梁体施工期间结构稳定和安全,需对梁体施工时实施临时固结措施.该文结合高速公路匝道桥上跨客运专线悬臂施工实例,详细介绍临时
目的:通过对肥厚性心肌病的病因病机和辨证施治分析,了解中医在治疗肥厚性心肌病的现状。方法:对已有的肥厚性心肌病文献中的中医病因病机和辨证施治进行总结归纳。结果:中医
数形结合思想即将数学中的语言以及数量关系和直观的几何图形联系在一起,进而达到轻松解题的目的。在小学数学教学中,需要有针对性地运用数形结合思想,尤其是在数学概念、数
系统地介绍了卟啉及金属卟啉类化合物在分子结构设计、合成方法和应用研究方面的最新进展及展望。基于大量文献及本课题组的研究工作,特别指出了这类化合物在合成方法上的改
<正>新型农村金融的发展一直是国家重点关注的问题。农村金融的发展得益于一系列的金融改革,但是作为我国金融体系中的薄弱一环,或多或少都有这样那样的问题存在,我国新型农
目的分析胸腰椎骨折后路钉棒内固定复位不良的原因,探讨钉棒的应用技巧。方法对胸腰椎骨折72例钉棒内固定术后15例复位不良的X线片进行分析,应用图像处理软件进行模拟复位和
<正>快速消费品行业与广大消费者息息相关,客户群的广度是其他行业难以比拟的,而且客户需求的多样性,造成产品的多样性、周期短、定制化等特点,使得快速消费品企业推出新品的
在我国零售业"跑马圈地"的外延式扩张已经大幅放缓的背景下,总结我国大型零售企业的成长途径,结合相关统计资料,探索连锁企业成长的特点,分析影响零售企业成长的因素,寻求新
汞的污染因其具有持久性、生物富集性及毒性而备受关注,目前已成为环境科学界的热点研究课题之一。东平湖是南水北调东线工程重要的调蓄水库之一,本文选取东平湖表层沉积物为