代码克隆检测及克隆Bug发现研究

来源 :中国科学技术大学 | 被引量 : 0次 | 上传用户:mario0798
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
在软件开发过程中,对代码进行复制、粘贴和修改是一种常见的行为。虽然代码复用可以提高软件开发效率,节省软件开发时间,但是其会导致大量相同或相似的代码产生,这一类的代码被叫作代码克隆。代码克隆不仅会造成软件系统中的冗余,导致软件维护问题,而且会对软件的质量产生影响,导致Bug的引人和繁衍。已有的代码克隆检测研究都是找相同或几乎相同的克隆代码,这样会导致克隆分析不全面和不深入,也会导致克隆Bug筛选不充分。本文围绕以下三方面问题,分别开展研究工作,主要内容和贡献包括:(1)Large-gap代码克隆检测算法研究当代码克隆中的差异较大时,我们称其为Large-gap(大差异)代码克隆。差异较大的代码克隆不仅可以更好地反映相似代码间的差异,体现代码功能的扩展(比如,修改和优化),而且可以使代码克隆分析更加全面和深入,帮助筛选和发现代码克隆相关的Bug。但是,Large-gap代码克隆的检测难度较高,已有的基于文本或词法的方法无法对其进行检测,而基于语法树或程序依赖图的方法也受制于大差异的影响。因此,针对这个问题,本文提出了一种全新的Large-gap代码克隆检测算法,并将其实现为代码克隆检测工具CCAligner,来高效地检测差异较大的代码克隆。与已有方法不同的是,我们考虑使用连续的代码片段,而不是单个的词法元素,来作为比对的基本单元。并且,我们进一步设计了一种带误配的索引技术,允许代码片段基于一定的误配进行匹配,来增强对差异代码克隆的检测能力,同时加快比对的速度和提升比对的精度。此外,配合使用非对称的相似度度量技术,我们的方法可以更好地度量差异较大的代码克隆的相似性。实验结果表明,CCAligner对差异较大的代码克隆的检测能力显著优于现有最流行的检测工具。对一般的代码克隆,CCAligner的表现也与最好的方法在时间、可扩展性、召回率和精确率上相当。(2)代码克隆度量分析软件系统中的代码克隆数量庞大,十分不利于软件维护者的理解和管理。需要对代码克隆进行进一步的度量和分析,来帮助和指导从大量的代码克隆中筛选较感兴趣的那些克隆。基于我们提出的最新的Large-gap代码克隆检测工具CCAligner,可以发现更多的Large-gap代码克隆,可进行更深入和全面的代码克隆分析。因此,本文基于CCAligner,进一步开展了代码克隆的度量分析研究。首先,通过与软件工业界交流并结合他们的实际需求,我们首次提出了代码克隆度量的三个指标:克隆强度、克隆频度和克隆距离,来反映克隆的程度和分布。克隆的程度过高,分布过于集中,都属于代码的坏味道(Bad Smell)。然后,我们设计了相应的算法来分析和度量每个指标,并将它们集成到我们的克隆检测工具CCAligner中,作为我们克隆度量分析的研究工具。接下来,基于该工具,我们开展了代码克隆分析的实证研究,来检验工具的效果和探索真实软件系统中代码克隆分布的情况。我们对不同软件、同一软件不同版本进行了实证研究分析,实验结果表明,不同的软件系统中,质量较高(发展时间长)的软件要在三个指标上明显好于其他软件。同时,同一软件随着版本的演进,三个指标表现出越来越好的趋势,意味着软件质量的不断提升。我们的克隆度量分析工具可以从代码克隆的角度,有效地对克隆分布和软件质量进行分析。(3)代码克隆相关Bug检测研究由于代码克隆会导致Bug的引入和繁衍,因此克隆Bug发现研究可以帮助发现软件系统中由克隆引发的问题。克隆Bug同样存在多种类型,大多数已有工作都是针对特定的Bug类型,人工设计和提取特征来进行检测。这些方法只能检测特定类型的Bug,无法检测未知的Bug类型。因此,针对这个问题,本文提出了一种基于深度学习的方法DeepCbd,来自动学习尽可能多的相关特征,同时应用差异克隆算法来提取差异部分代码作为差异信息输入。由于Bug可以体现在代码的语法和词法层面,我们相应地提取了代码的语法树和词法向量表示作为模型的输人。在模型设计上,我们使用了Tree-LSTM来对语法树进行处理,且基于词法向量表示,使用了注意力机制来增强学习的效果。此外,通过改造CCAligner,我们提取了差异代码部分的词法向量表示,将其与模型得到的特征向量进行拼接,来进一步增强检测的能力。实验结果表明,DeepCbd显著优于其他的基线机器学习和深度学习方法,识别准确率达到93.46%。与已有相关研究工作相比,DeepCbd可以识别出大多数已发现的克隆相关Bug类型,而且成功识别出了三种新的Bug类型。此外,交叉验证实验和泛化能力验证实验论证了DeepCbd具有很好的泛化能力和实用性。总体来讲,本文全部的工作可以分为两个方面:代码克隆检测研究和克隆Bug发现研究。在代码克隆检测研究中,我们又具体开展了Large-gap代码克隆检测算法研究和克隆度量分析。
其他文献
目的 :研究地肤子 70 %醇提物对速发型变态反应及迟发型变态反应 (DTH)早期相和后期相的抑制作用 ,探讨其可能的作用机制。方法 :体外试验中 ,分别将地肤子醇提物与大鼠腹腔
针对大飞机无损检测智能化的需求,研发一种大飞机蒙皮结构健康检测真空吸附爬壁机器人。设计了一种基于PTR8000模块的用于爬壁机器人的无线通信系统。首先介绍了机器人的总体
在长达14年的时间里,中国人民与日本侵略者殊死搏斗,形成了具有中国特色的抗战文化。在中国共产党抗日民族统一战线思想指导下,在衡阳特殊的政治文化环境的共同作用下,衡阳人
贫困问题是世界性难题,是造成社会不和谐不稳定的重要因素之一,是2020年中国实现全面小康亟待解决的重大问题。贵州是中国贫困面积最广,贫困程度最深,少数民族贫困人口最多的深度贫困地区1。旅游扶贫成为贵州重要的扶贫手段和有效的脱贫路径,精准扶贫成为旅游扶贫工作中的难点和重点问题,居民对旅游精准扶贫的满意度是判断旅游扶贫成效的重要指标之一,是检验旅游扶贫的重要依据,也是指导旅游扶贫持续推进的现实指南。本
在21世纪,世界进入数字时代,数字建筑不断涌现。数据是数字建筑生成过程中的主要因素之一,各种数字构成了数字建筑的始源,随着技术的进步,通过数据的收集与处理,甚至以收集的数据来
处分原则是我国民事诉讼法的基本原则之一,在我国的司法实践中,处分原则被非"原则化"和"空洞化",起不到原则应有的指导性和统领性作用。在民事诉讼中,本应属于当事人的权利,不应
利用PIC单片机实现出租车计费系统,使其控制系统的启动、停止、复位以及实现计费等功能,时钟芯片PCF8563实时提供时钟信号,再由单片机调用显示;语音播报由语音芯片ISD1420提
采用机械镀锌工艺在热轧板焊接油箱内表面形成完整镀锌层,经中性盐雾腐蚀试验、耐油性试验、结合强度试验等检测表明,油箱内表面机械镀锌镀层完全合格。从而避免了传统电镀锌
根据商务部数据显示,2016年我国境内企业全年共对全球164个国家和地区的7961家境外企业进行了非金融类投资,累计投资金额为1.12万亿元人民币,折合美元为1701.1亿美元,同比增
<正>用文体论来切割文本是一件偷懒又缺乏科学性的事,因为小说、戏剧、诗歌、散文的分类本身存在很大的模糊性与相对性。教育界意识到这个问题颇为晚近,现行很多省编教材打破