一种基于用户行为的代码补全排序方法及系统技术方案

技术编号:33953414 阅读:11 留言:0更新日期:2022-06-29 22:56
本申请涉及一种基于用户行为的代码补全排序方法及系统,其中,方法包括对源代码进行分析,生成AST抽象语法树;分析用户行为,更新AST抽象语法树并确定所在AST抽象语法树的更新节点;通过相似度算法获取AST抽象语法树中与用户输入字符相匹配的备选代码;根据用户行为获取特定范围内的代码内容和语法,排除不符合语法规则的备选代码;通过预设的排序规则对剩余的备选代码进行排序,并在编辑器中的备选列表中显示。本申请通过采集用户输入的代码字符和从语法树中采集与输入的代码字符相匹配的备用代码,并通过特定的规则对备用代码进行排序,提高了补全代码的准确度,提高程序员的使用体验。使用体验。使用体验。

【技术实现步骤摘要】
一种基于用户行为的代码补全排序方法及系统


[0001]本申请涉及计算机软件
,尤其是涉及一种基于用户行为的代码补全排序方法。

技术介绍

[0002]Vscode(Visual Studio Code)是一款免费开源的现代化轻量级代码编辑器,该软件几乎支持所有主流开发语言的语法高亮、代码自动补全、代码重构、查看定义等功能,其丰富强大的功能和跨平台支持成为最受欢迎的编辑器之一。其中,码补全(code completion)作为一种直观减少软件开发人员工作量的软件自动化技术,是Vscode和许多集成开发环境(IDE)的关键功能组件。代码补全技术基于开发人员的输入和已有项目代码,即时预测待补全代码中的类名、变量名、函数名和代码片段等,并为开发人员提供建议列表,通过这种方式,代码补全技术能够减轻键入负担,减少拼写错误,并且开发人员不必花费很长时间记忆不熟悉的类名和函数名等,有效提高开发效率。随着代码补全技术相关研究的深入和工具的应用,代码补全已经成为开发人员最常用操作之一。
[0003]虽然智能代码补全方法近些年取得了一定进展,尤其是自然语言处理、机器学习领域中的先进技术的引入,准确度得到了极大的提高,但是仍然存在许多问题,其中影响用户效率的问题如下:1) 智能推荐模型和算法的研究更注重于代码中语义特征和结构特征等信息的提取和相似度比较,在大部分情况下代码补全算法都能给出正确的补全建议,但是推荐列表长度过长。
[0004]2) 推荐列表常按照字母排序,往往在推荐列表后面才能找到想要的补全结果。
[0005]这些问题影响了开发人员检查推荐列表的时间和接受补全建议的信心。

技术实现思路

[0006]为了提高补全代码列表中的推荐准确度,提高用户的使用体验,本申请提供一种基于用户行为的代码补全排序方法及系统。
[0007]第一方面,本申请提供的一种基于用户行为的代码补全排序方法采用如下的技术方案:一种基于用户行为的代码补全排序方法,包括对源代码进行分析,生成AST抽象语法树;分析用户行为,更新AST抽象语法树并确定所在AST抽象语法树的更新节点;通过相似度算法获取AST抽象语法树中与用户输入字符相匹配的备选代码;根据用户行为获取特定范围内的代码内容和语法,排除不符合语法规则的备选代码;通过预设的排序规则对剩余的备选代码进行排序,并在编辑器中的备选列表中显示。
[0008]可选的,所述相似度算法包括:获取用户的输入内容,并根据所述输入内容从AST抽象语法树中查找匹配项,以获取备选代码。
[0009]可选的,所述排除不符合语法规则的备选代码时,包括:获取所述更新节点处的上下文和对应的语法规则;将所有的备选代码依次与所述更新节点处的上下文进行匹配;删除匹配失败的备选代码。
[0010]可选的,所述预设的排序规则包括:判断在特定的时间段内是否有更新内容;若是,则将更新内容的先后顺序按照从低到高的优先级进行排列;其中优先级最高的更新内容排列至推荐列表的第一位;若否,则根据推荐内容累计使用量从大到小赋予从高到低的优先级,其中优先级最高的推荐内容排列至推荐列表的第一位。
[0011]第二方面,本申请提供的一种基于用户行为的代码补全排序系统采用如下的技术方案:一种基于用户行为的代码补全排序系统,包括:数据分析单元,用于对源代码进行分析,生成AST抽象语法树;行为分析单元,用于分析用户行为,更新AST抽象语法树并确定所在AST抽象语法树的更新节点;代码补全单元,通过相似度算法获取AST抽象语法树中与用户输入字符相匹配的备选代码;过滤单元,用于根据用户行为获取特定范围内的代码内容和语法,排除不符合语法规则的备选代码;及排序单元,用于通过预设的排序规则对剩余的备选代码进行排序,并在编辑器中的备选列表中显示。
[0012]可选的,所述相似度算法包括:获取光标位置和用户的输入内容,并根据所述输入内容从AST抽象语法树中查找匹配项,以获取备选代码。
[0013]可选的,过滤单元还包括:数据采集子单元,用于获取所述更新节点处的上下文和对应的语法规则;数据匹配子单元,用于将所有的备选代码依次与所述更新节点处的上下文进行匹配;数据删除子单元,用于删除匹配失败的备选代码。
[0014]可选的,所述排序单元包括:判断子单元,用于判断在特定的时间段内是否有更新内容;第一排序子单元,用于按照更新内容的先后顺序按照从低到高的优先级进行排列;其中优先级最高的更新内容作为排列第一位的推荐内容;第二排序子单元,用于根据推荐内容累计使用量从大到小赋予优先级,其中优先级最高的推荐内容排列至推荐列表的第一位。
[0015]第三方面,本申请提供的一种智能设备采用如下的技术方案:一种智能设备,包括
一个或多个存储器,用于存储指令;以及一个或多个处理器,用于从所述存储器中调用并运行所述指令,执行如第一方面中任意一项所述的基于用户行为的代码补全排序方法。
[0016]第四方面,本申请提供的一种计算机可读存储介质采用如下的技术方案:一种计算机可读存储介质,所述计算机可读存储介质包括:程序,当所述程序被处理器运行时,如第一方面中任一项所述的基于用户行为的代码补全排序方法被执行。
[0017]综上所述,本申请包括以下至少一种有益技术效果:1、在文档更新事件中记录用户编程行为,结合抽象语法树保存用户编程行为数据,将用户操作时间、频率、次数等信息记录在对应的语法树节点中,使用用户编程行为数据对代码补全推荐内容进行排序,而不仅仅是按照字母顺序显示,增加前几个备选代码的命中率,提高编码效率。
[0018]2、使用上下文语法检查对推荐内容进行过滤,删除掉语法错误的推荐内容,减少推荐列表长度,提高程序员的使用体验。
附图说明
[0019]图1是本申请实施例的提供的一种方法流程示意图;图2是本申请实施例的提供的一种方法细分流程示意图。
具体实施方式
[0020]以下结合附图对本申请中的技术方案作进一步详细说明。
[0021]本具体实施例仅仅是对本申请的解释,其并不是对本申请的限制,本领域技术人员在阅读完本说明书后可以根据需要对本实施例做出没有创造性贡献的修改,但只要在本申请的权利要求范围内都受到专利法的保护。
[0022]本申请实施例提供一种基于用户行为的代码补全排序方法,包括对源代码进行分析,生成AST抽象语法树;分析用户行为,当触发文件更新事件时,更新AST语法树,并确定更新位置所在AST语法树节点;获取光标位置和用户的输入内容,并根据所述输入内容从AST语法树中查找匹配项,以形成推荐内容,触发补全事件;获取所述光标位置的上下文信息和与上下文对应的语法规则,滤除与所述语法规则不同的推荐内容;根据预设的排序规则对推荐内容进行排序。
[0023]本申请实施例中,通过采集用户输入的代码字符和从语法树中采集与输入的代码字符相匹配的备用代码,结合抽象语法树保存用户编程行为数据,将用户操作时间、频率、次数等信息记录在对应的语法树节点中,使用用户编程行为数本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于用户行为的代码补全排序方法,其特征在于:包括对源代码进行分析,生成AST抽象语法树;分析用户行为,更新AST抽象语法树并确定所在AST抽象语法树的更新节点;通过相似度算法获取AST抽象语法树中与用户输入字符相匹配的备选代码;根据用户行为获取特定范围内的代码内容和语法,排除不符合语法规则的备选代码;通过预设的排序规则对剩余的备选代码进行排序,并在编辑器中的备选列表中显示。2.根据权利要求1所述的一种基于用户行为的代码补全排序方法,其特征在于,所述相似度算法包括:获取用户的输入内容,并根据所述输入内容从AST抽象语法树中查找匹配项,以获取备选代码。3.根据权利要求1所述的一种基于用户行为的代码补全排序方法,其特征在于:所述排除不符合语法规则的备选代码时,包括:获取所述更新节点处的上下文和对应的语法规则;将所有的备选代码依次与所述更新节点处的上下文进行匹配;删除匹配失败的备选代码。4.根据权利要求1所述的一种基于用户行为的代码补全排序方法,其特征在于:所述预设的排序规则包括:判断在特定的时间段内是否有更新内容;若是,则将更新内容的先后顺序按照从低到高的优先级进行排列;其中优先级最高的更新内容排列至推荐列表的第一位;若否,则根据推荐内容累计使用量从大到小赋予从高到低的优先级,其中优先级最高的推荐内容排列至推荐列表的第一位。5.一种基于用户行为的代码补全排序系统,其特征在于,包括:数据分析单元,用于对源代码进行分析,生成AST抽象语法树;行为分析单元,用于分析用户行为,更新AST抽象语法树并确定所在AST抽象语法树的更新节点;代码补全单元,通过相似度算法获取AST抽象语法树中与用户输入字符相...

【专利技术属性】
技术研发人员:李进文齐璇顾郁莲战茅
申请(专利权)人:麒麟软件有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1