当前位置:主页 > 科技论文 > 搜索引擎论文 >

基于差异代码克隆搜索的代码块补全推荐算法研究

发布时间:2020-05-18 12:34
【摘要】:代码补全推荐是软件工程领域的热门研究,可以提升软件开发效率。现有的代码补全推荐算法大都是针对关键词与语句粒度的,这种粒度的推荐所能提供的代码信息量较小,因此存在效率不高的问题,而现代软件开发更需要若干代码行(称之为代码块)这样大粒度的代码推荐以提升代码推荐效率。为了实现大粒度代码补全推荐,需要在代码库中搜索出与待补全代码相似的代码,但由于待补全代码的不完整造成与完整代码有较大的差异,从而导致难以搜索出相似代码。近期一种新的能发现大差异(Large-gap)代码克隆的算法CCAligner被提出,使代码块粒度的代码补全推荐成为了可能。本文基于差异代码克隆算法改造,以及对现有大量的、高质量源码库的利用,提出了一种全新的代码块补全推荐算法。论文的主要工作和贡献如下:(1)差异代码克隆技术研究及改造本文通过使用大差异代码克隆算法在代码库中搜索出与待补全代码块相似的候选代码块,但由于大差异代码克隆算法是用于在一个代码集合中去发现彼此是克隆的所有差异代码对,而本文是在代码集合中搜索出与某个待补全代码块相似的差异代码块,两者对算法搜索的要求不同,因此需要进行改造以降低计算成本和提升针对性。针对上述问题,我们将大差异代码克隆算法的查找模式从多对多改为一对多,增加预处理将与待补全代码块无关的代码块全部过滤,并通过计算实验选取优化的算法参数。实验结果表明,改造后的算法在5M行的代码库中的相似代码检测时间只有原算法的10.7%;对于滑动窗口数为5、误配数为1、相似度阈值为0.5的算法参数,可以将原算法参数的F值提升10%以上。(2)代码块补全推荐算法设计与实现在上面的工作基础上,我们进一步对搜索结果中候选代码块进行补全推荐算法设计。由于代码库中存在大量重复代码,为防止相同或相近的候选代码被重复推荐,因此本文通过对搜索出的结果(候选代码)进行聚类使得相同或相近的代码块作为一类推荐。此外,为保证推荐代码的有用性,需要对聚类后的候选代码块进行打分排序,让相关性高的候选代码块优先被推荐。本文根据问题特点选取DBSCAN作为聚类算法对搜索结果进行聚类,聚类后我们从每个类别中选取一个代码块作为代表,然后从代码出现的频率、代码的语法与语义相似度三个方面对代码块进行相关性打分,并按照得分顺序对代码进行补全推荐。实验结果表明,在收集的Android Social Network数据集上本文方法进行了放回和不放回计算实验,Top-3准确率分别达到93.75%和68.75%;本文方法相对于仅能尾部代码块补全推荐方法进行了比较,Top-1准确率提升了20%至30%。
【图文】:

代码行,代码


第I章绪邋论逡逑网络和基于循环神经网络的GRU(Gate邋Recurrent邋Unit)模型应用于token补全问逡逑题,同时根据Python语言的特性对源代码进行语法分析以提升token的质量,,从逡逑而最终提升token补全的效果。逡逑1.2.3.代码行粒度的代码补全技术逡逑代码行粒度的代码补全技术是指正在编写的代码块缺失了下一行代码(如逡逑图1.3-(a)所示),通过使用代码行补全方法将下一行代码补全完成(如图l.3-(b)逡逑所示)。Little邋etal.l|6】根据代码库中己有代码建立关键词和函数调用的关系,然逡逑后在代码段中输入特定的关键词,最后根据关键词与函数调用的关系以及语法逡逑自动补全这段代码。Raychev邋et邋从代码中提取对象的AP丨调用序列建立二逡逑元组模型,然后使用统计语言模型学习其中的规律,之后对待补全的代码建立逡逑API调用序列,通过使用训练好的统计语言模型推荐可能的API,再结合己给的逡逑提示信息完成代码行的补全。逡逑void邋exampleM^diaReccrder()邋throws邋10Exc?ption邋(逡逑

序列,代码块,实例,问题


第2章问题定义及相关知识逡逑本章概要:本章主要介绍了代码块补全推荐的问题定义与所涉及逡逑到的相关技术。主要分为四个部分,首先介绍了代码块补全推荐的问题逡逑定义,接着介绍了几种常用的代码表现形式,之后介绍了代码克隆的相逡逑关知识,然后介绍了聚类算法的相关技术,最后对本章内容进行小结。逡逑2.1问题定义逡逑2.1.1.代码块概念逡逑本文所研宄的问题是代码块补全推荐问题,首先介绍代码块的概念,代码块逡逑是指一个方法或者是由一对大括号里的一段连续代码语句序列[|9],图2.l-(a)逡逑和图2.l-(b)分别是连续代码语句序列形式的代码块以及函数方法形式的代码块逡逑的实例。逡逑
【学位授予单位】:中国科学技术大学
【学位级别】:硕士
【学位授予年份】:2019
【分类号】:TP391.3

【相似文献】

相关期刊论文 前10条

1 袁仲达;马昱春;边计年;赵康;;基于运行时基本代码块的可重构软硬件协同设计[J];清华大学学报(自然科学版);2013年09期

2 周彦芳;;对《解码块不良导致彩电无伴音》(08年6期)一文遗留问题的解读[J];家电检修技术;2008年21期

3 邹丽新 ,姚天忠;单片微机的LED数码块显示接口介绍[J];物理教师;1996年02期

4 吴岭;张金荣;刘胜利;;Turbo码块同步参数优化设计[J];飞行器测控学报;2011年S1期

5 夏建平;;解码块不良导致彩电无伴音[J];家电检修技术;2008年11期

6 曹型兵;杨高进;余利成;;TD-LTE中基于码块分割的CRC模块研究与设计[J];山西电子技术;2012年04期

7 吴岭;冯振明;左增宏;谷源涛;;TPC码块同步参数设计[J];飞行器测控学报;2009年06期

8 石伟萍;刘辉;李小文;;TD-LTE中码块分割的研究与DSP实现[J];广东通信技术;2013年06期

9 苗澎;王志功;乔庐峰;;12×2.5Gbit/s并行伪随机序列发生技术及在线误码块监测[J];电路与系统学报;2006年06期

10 兆剪;;解析媒体矩阵(MediaMatrix)(四十八) NWare软件介绍(10)——Python编程基础(续4)[J];音响技术;2008年07期

相关重要报纸文章 前1条

1 四川 王嘉帆;新科SDP1500移动DVD图解与维修[N];电子报;2012年

相关博士学位论文 前3条

1 侯俊;Motion JPEG2000视频编码技术研究[D];上海交通大学;2007年

2 白旭;电视制导中图像处理算法和信息安全问题研究[D];哈尔滨工业大学;2008年

3 何亨;对等云存储服务系统的安全控制机制研究[D];华中科技大学;2013年

相关硕士学位论文 前10条

1 殷康麒;基于差异代码克隆搜索的代码块补全推荐算法研究[D];中国科学技术大学;2019年

2 王日霞;H.264的快速编码块自适应模式选择算法优化[D];江苏大学;2009年

3 马勇;H.264标准下的编码块模式选择算法研究[D];江苏大学;2010年

4 王颖异;嵌入式图像编码中码率控制技术的应用研究[D];同济大学;2008年

5 俞怡炜;基于JPEG2000的视频编解码软件实现与优化[D];上海交通大学;2007年

6 姜军;基于SOPC的图像处理模块电路设计[D];东南大学;2016年

7 曾亚嫱;基于计算参与的国外中小学程序设计案例研究[D];上海师范大学;2014年

8 蔡亚运;僵尸网络控制命令发掘与应用研究[D];南开大学;2015年

9 侯冬梅;基于代码块的Android恶意软件查杀系统的设计与实现[D];中山大学;2014年

10 王健;基于JPEG2000的率失真优化截取VLSI设计[D];西安电子科技大学;2012年



本文编号:2669723

资料下载
论文发表

本文链接:https://www.wllwen.com/kejilunwen/sousuoyinqinglunwen/2669723.html


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

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