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

来源 :中国科学技术大学 | 被引量 : 0次 | 上传用户:zxf3896641
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
代码补全推荐是软件工程领域的热门研究,可以提升软件开发效率。现有的代码补全推荐算法大都是针对关键词与语句粒度的,这种粒度的推荐所能提供的代码信息量较小,因此存在效率不高的问题,而现代软件开发更需要若干代码行(称之为代码块)这样大粒度的代码推荐以提升代码推荐效率。为了实现大粒度代码补全推荐,需要在代码库中搜索出与待补全代码相似的代码,但由于待补全代码的不完整造成与完整代码有较大的差异,从而导致难以搜索出相似代码。近期一种新的能发现大差异(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%。
其他文献
目的探讨分级护理管理在重症监护室感染性休克患者中的应用效果。方法回顾性分析2016年3月~2018年2月我院收治的86例感染性休克患者的病例资料,将2016年3月~2017年2月采用常
儿童绘画的重要性在国外受到重视,原生艺术把儿童绘画艺术创作加入原生艺术的一部分。创作方式以尊重孩子的天性为主,注重儿童表达他们的内心。而国内大众监护人家长对儿童绘
[目的]构建1份问卷以调查糖尿病病人使用自我管理APP的意愿及影响因素。[方法]结合Norman的电子健康素养表、美国糖尿病协会推荐的7个自我管理行为(AADE7TM)构建初步的调查问
<正>爱国是一个公民起码的道德,也是中华民族的优良传统。在儒家传统文化里强调"舍生取义",其意义就是为了国家利益,捍卫国家主权,不惜牺牲个人生命。中华民族有着悠久的历史
舞毒蛾(Lymantria dispar Linnaeus)属于鳞翅目裳蛾科,广泛分布于世界各地,危害杨树、柳树、桑树、落叶松等多种植物,是一种危害严重的农林食叶害虫。目前,舞毒蛾的国内防治
个人所得税应当在调解个人收入、稳定经济运行、体现公平公正方面发挥更有效的作用。为此本文进一步探讨个人所得税在分类与综合相结合模式下的细化改革方案,包括税目的设置
<正>市场监管是指市场监管主体对市场活动主体及其行为进行限制、约束等直接干预活动的总和。2017年《国务院关于印发"十三五"市场监管规划的通知》中明确:加强和改善市场监
<正>7月4日,中国建筑防水协会与北京零点市场调查与分析公司联合发布《2013年全国建筑渗漏状况调查项目报告》。本次抽样调查涉及全国28个城市、850个社区,共计勘察2849栋楼
会议
痛风是单钠尿酸盐(MSU)沉积所致的晶体相关性关节病,与嘌呤代谢紊乱和(或)尿酸排泄减少所致的高尿酸血症直接相关,特指急性特征性关节炎、痛风石形成、痛风石性慢性关节炎、
脱贫工作一直是我国民生建设工程中的重要一环,要想实现全面小康社会,必须消灭贫困。由于我国人口基数大,分布广的特点,使得扶贫工作难度大,难以简单的快速的消灭贫困,需要切