当前位置:主页 > 科技论文 > 软件论文 >

基于集成学习技术的代码克隆检测方法研究

发布时间:2021-11-25 05:03
  代码克隆指的是相似代码片段在软件系统多处出现。它通常因开发者的复制习惯或设计理念产生,往往导致软件系统难以维护。如何自动化、快速而有效地定位这些相似代码以便更好地重构和维护软件是一项研究热点。传统的代码克隆检测方法大多基于静态文本分析技术,很难在语义相近的代码克隆检测上有好的表现。而实际上中大型软件系统中占大比例的正是这些语义克隆。近两年有几种结合深度神经网络模型的算法在代码语义克隆检测上取得了不错的效果,但是深度神经网络模型参数太复杂使得训练开销特别大。本文提出了基于集成学习的有监督分类模型,利用多个弱分类器捕捉可能的相似模式。同时配合有效的特征工程技巧,进一步挖掘代码的语法和潜藏的语义信息,实现高准确度和高效率的检测效果。本文主要工作和创新点有:(1)使用弱分类器和集成学习方法来解决代码克隆检测问题,实现了很好的重复代码检测效果,效率优于现有深度学习方法。(2)将词嵌入模型用于特征工程方法,将源代码视作有上下文逻辑的文档,利用词嵌入模型抽取代码段的向量表示形式。对源代码结构没有过多的中间形式转换,保留了代码的完整信息。本文在BigCloneBench数据集上设计了一系列实验,用于验... 

【文章来源】:浙江大学浙江省 211工程院校 985工程院校 教育部直属院校

【文章页数】:82 页

【学位级别】:硕士

【部分图文】:

基于集成学习技术的代码克隆检测方法研究


图1.3不同类型代码克隆[3]??

代码,参考代码,中间的,序列


is?condensed?to??if(code&pcObjType)?{??图2.1源代码的预处理[|<)]??转换后的代码每行都与其他行分别比较,比较时代码的相似度通过文本匹配??算法来得出。可选用的经典文本匹配算法包括布鲁特包里搜索算法、莱温斯坦距??离算法、Boyer-Moore字符串搜索算法、Boyer-Moore字符串搜索算法和Rabin-??Karp算法等。该技术还利用分块思想在算法原本0(iV2:)级别的复杂度上做了优化。??即先将预处理的代码计算一个hash码,然后按hash码的值将代码分到不同的桶??(bucket)中,因为文本一致的代码其hash码值相同,只需要在桶内进行两两匹??配就能检测出所有文本一致的代码克隆。??2005?年?S?Lee?等人提出?SSD?(Similar?Data?Detection)算法[11]。它是一项能??检测不同相似程度代码克隆的方法。它的核心思想是给定一个参考代码的文本序??列和一个间隔阈值N

后缀树,代码段,匹配算法,词法分析


is?condensed?to??if(code&pcObjType)?{??图2.1源代码的预处理[|<)]??转换后的代码每行都与其他行分别比较,比较时代码的相似度通过文本匹配??算法来得出。可选用的经典文本匹配算法包括布鲁特包里搜索算法、莱温斯坦距??离算法、Boyer-Moore字符串搜索算法、Boyer-Moore字符串搜索算法和Rabin-??Karp算法等。该技术还利用分块思想在算法原本0(iV2:)级别的复杂度上做了优化。??即先将预处理的代码计算一个hash码,然后按hash码的值将代码分到不同的桶??(bucket)中,因为文本一致的代码其hash码值相同,只需要在桶内进行两两匹??配就能检测出所有文本一致的代码克隆。??2005?年?S?Lee?等人提出?SSD?(Similar?Data?Detection)算法[11]。它是一项能??检测不同相似程度代码克隆的方法。它的核心思想是给定一个参考代码的文本序??列和一个间隔阈值N


本文编号:3517457

资料下载
论文发表

本文链接:https://www.wllwen.com/kejilunwen/ruanjiangongchenglunwen/3517457.html


Copyright(c)文论论文网All Rights Reserved | 网站地图 |

版权申明:资料由用户1f9d6***提供,本站仅收录摘要或目录,作者需要删除请E-mail邮箱bigeng88@qq.com