论文部分内容阅读
作为开发人员,尤其是编程初学者,在进行日常的软件开发时,经常需要完成一些不熟悉的编程任务。这时,他们可能通过搜索参考已存在代码片段或者复用之前的代码,来帮助完成这个不熟悉的编程任务。近年来,业界已有很多外部代码搜索工具来帮助开发人员。但是使用这些工具会增加开发者搜索筛选的时间,降低编码效率,所以开发出一款与编程一体的代码推荐系统迫在眉睫。本文依托于慕测Web IDE系统进行更新与优化,实现了基于结构嵌入分析的智能代码推荐系统。用户进行编程练习或考试时,通过浏览器访问系统,使用智能编辑器进行在线编程,系统会监听用户编程行为,抓取代码信息进行分析,根据分析结果向用户推荐代码片段。代码推荐依赖大量源代码数据,因此首先需要基于大量的源代码构建语料库,并对其进行预处理。语料库中代码需要先进行词法和语法分析,构建解析树,获得令牌序列以代表代码结构特征。其次,对语料库中的所有令牌序列集,使用局部敏感哈希进行分类,减少比较次数,提高效率。接着,对相似度高的这些候选代码片段通过词嵌入训练模型,再进行句嵌入获得向量表示。最后,通过相似性分析算法对句向量进行比较,向用户推荐相似度值高于阈值且不同的前几位源代码片段,帮助用户根据现有源代码获得有价值的推荐,从而提高生产率,帮助缩短开发时间。本系统根据主要功能和特性划分为五个模块,包括编辑器模块、语言服务协议模块、代码搜索模块、特征提取模块和特征序列分析模块。系统使用Monaco Editor作为主要编辑器基础,并遵循语言服务协议实现Java、Python等编程语言的实时代码补全、悬浮提示、跳转定义、引用查找、代码诊断等智能功能。为保障数据的可靠性和高可用性,系统使用搜索引擎进行数据采集处理存储。目前该系统已替换原有慕测Web IDE系统上线使用。通过实验表明,系统提升了平均82.72%的用户的编程体验。智能代码推荐系统在用户开发时,有效地推荐代码片段帮助用户重用或纠正现有代码。该系统减少用户搜索筛选时间,缩短开发时间,提高用户编码效率。并且其简单易用的界面与交互风格,符合大多数用户习惯,提升和完善用户编程体验。