【技术实现步骤摘要】
代码补全方法及装置、存储介质、处理器、终端
[0001]本专利技术涉及信息处理
,具体而言,涉及一种代码补全方法及装置、存储介质、处理器、终端。
技术介绍
[0002]相关技术中,在进行计算机网络编程或者项目编程时,编程人员往往会使用智能化的代码补全方式来辅助编程,现有的智能代码补全,包括如下几种:
[0003]第一种,TabNine代码补全和AiXCoder代码补全,都是基于最新开源的深度学习模型,基于历史海量开源代码训练出适用于代码文本补全的模型,在实际应用的预测阶段,模型读入上下文预测当前光标位置的补全候选项列表,展示给用户。深度学习模型能够补全较长的代码语句,但是准确率较低,时常会推荐出不适合上下文或者有语法错误的代码,给使用者带来困扰。
[0004]第二种,JetBrains IDEA内置代码补全,是基于IDEA PSI语法信息做的准确预测,这种代码补全方式,没有深度学习模型预测过程,一般推荐单一token,速度较快但长度很短,是代码编辑器内置的能力,无法实现智能化代码补全。
[000 ...
【技术保护点】
【技术特征摘要】
1.一种代码补全方法,其特征在于,包括:响应代码补全指令,采用预先训练的补全模型获取候选项集合,其中,所述候选项集合中包括多个用于在需要进行代码补全的位置上执行代码补全的候选项;获取可用变量列表和可用代码元素列表,其中,所述可用变量列表中包括在需要进行代码补全的位置上对应的至少一个可用变量,所述可用代码元素列表中包括在需要进行代码补全的位置上对应的至少一个可用代码元素;基于所述可用代码元素列表,对所述候选项集合中的多个候选项进行筛选处理,得到处理后的候选项集合;采用预先构建的语法树和所述可用变量列表,对所述处理后的候选项集合进行过滤,得到目标候选项集合,其中,所述目标候选项集合中的目标候选项用于在需要进行代码补全的位置上进行代码补全。2.根据权利要求1所述的方法,其特征在于,获取可用变量列表和可用代码元素列表的步骤,包括:获取在需要进行代码补全的位置的上下文代码文件和所述上下文代码文件的语法信息;获取预先配置的场景代码模板,其中,每种所述场景代码模板中配置有代码输入前缀和可用代码元素的索引关系;基于所述上下文代码文件和所述语法信息,匹配场景代码模板;基于所述场景代码模板,确定在需要进行代码补全的位置上符合输入前缀要求的所有可用代码元素,得到所述可用代码元素列表。3.根据权利要求1所述的方法,其特征在于,基于所述可用代码元素列表,对所述候选项集合中的多个候选项进行筛选处理,得到处理后的候选项集合的步骤,包括:获取在需要进行代码补全的位置的上下文代码文件;基于所述上下文代码文件和所述可用代码元素列表,查找符合预设补全条件的所有候选补全代码类,得到可用类列表;采用所述可用类列表对所述候选项集合中的多个候选项进行筛选处理,得到在需要进行代码补全的位置上符合上下文规则的候选项集合;将在需要进行代码补全的位置上符合上下文规则的候选项集合作为所述处理后的候选项集合。4.根据权利要求1所述的方法,其特征在于,在对所述候选项集合中的多个候选项进行筛选处理,得到处理后的候选项集合之后,还包括:将所述处理后的候选项集合中的候选项和所述需要进行代码补全的位置的上下文代码文件进行组合,生成代码虚拟文件;按照预设转换规则,将所述代码虚拟文件转化为语法树。5.根据权利要求4所述的方法,其特征在于,在按照预设转换规则,将所述代码虚拟文件转化为语法树之后,还包括:定位需要进行代码补全的位置上所属代码行的首尾代码元素;基于所述首尾代码元素,查询在需要进行代码补全的位置上所属代码行的语法树最小公共子节点;
根据所述语法树最小公共子节点的节点类型,生成可序列化语法树。6.根据权利要求5所述的方法,其特征在于,在根据所述语法树最小公共子节点的节点类型,生成可序列化语法树之后,还包括:解析可序列化语法树中每个所述候选项的元素信息和符号信息;基于所述元素信息和所述符号信息,分析每个所述候选项的元素是否存在缺失,或者,分析所述候选项的符号是否存在缺失;在所述候选项的元素存在缺失或者符号存在缺失的情况下,基于所述候选项的已知元素的元素信息,对所述可序列化语法树进行补全处理。7.一种代码补全方法,其特征在于,应用于云服务器,包括:接收客户端发起的代码补全指令;响应代码补全指令,采用预先训练的补全模型获取候选项集合,其中,所述候选项集合中包括多个用于在需要进行代码补全的位置上执行代码补全的候选项;获取可用变量列表和可用代码元素列表,其中,所述可用变量列表中包括在需要进行代码补全的位置上对应的至少一个可用变量,所述可用代码元素列...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。