System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及软件开发,尤其涉及一种代码处理方法、装置、设备以及计算机可读存储介质。
技术介绍
1、在进行软件开发时,许多开发工具如集成开发环境(integrated developmentenvironment,ide)提供有代码补全(code completion)功能。代码补全是指用户输入部分代码,如输入关键字或函数的一部分,开发工具可以向用户提供至少一个候选项,用于帮助用户补全关键字或函数。如此可以减少用户的输入操作,提高开发效率。
2、随着人工智能(artificial intelligence,ai)技术尤其是深度学习在文本生成中取得的进展,通过ai进行代码自动生成和补全成为了热门的研究方向。然而,目前基于ai进行代码补全时,对于待补全代码的预测准确度较低。很多情况下,用户仍需要手动补全代码,或者在接受待补全代码的预测结果之后对预测结果再手动进行修正。
3、业界亟需提供一种预测准确度较高的代码处理方法,进行自动地代码补全,进而提高开发效率。
技术实现思路
1、有鉴于此,本申请提供了一种代码处理方法,该方法通过根据待补全代码的上下文特征,对代码进行静态分析的方式预测待补全代码的候选项,提高了预测准确度,进而实现自动代码补全,提高开发效率。本申请还提供了上述方法对应的装置、设备、计算机可读存储介质以及计算机程序产品。
2、第一方面,本申请提供了一种代码处理方法。该方法可以由代码处理系统执行。代码处理系统提供有用户界面,例如是图形用户界面(gr
3、代码处理系统可以通过用户界面接收用户输入的代码,然后根据用户输入的代码确定待补全代码的上下文特征。其中,上下文特征是指能够表达代码所在语境的特征,例如包括基类的类型、基类的类名、前缀、返回类型和布尔特征中的任意一种或多种。接着代码处理系统根据待补全代码的上下文特征从上下文数据库中确定待补全代码的至少一个候选项。其中,上下文数据库中存储有样本代码以及样本代码的上下文特征。样本代码可以包括开源数据集或用户私有数据集中类名、方法名、函数名、变量名或者参数名等标识符中的任意一个或多个。代码处理系统可以通过用户界面如gui向用户呈现上述至少一个候选项,进而实现代码补全。
4、由于待补全代码的候选项是通过对代码进行静态分析,如静态地语法分析、语义分析得到,因此待补全代码的候选项符合语法规则,而且待补全代码的候选项是根据待补全代码的上下文特征从上下特征数据库中确定的,而不是通过长短期记忆(long shorttime memory,lstm)等模型预测得到,有较高的概率通过编译检查。因此,该方法预测的候选项具有较高的准确度。基于上述候选项进行代码补全可以有效减少用户手动补全代码的次数,或者有效减少用户对补全的代码进行修正的次数,极大地提高了开发效率,提高了用户体验。
5、并且,该方法无需复杂模型,对算力要求较低,不需要图形处理器(graphicprocessor unit,gpu)资源,可以部署在本地,避免网络传输时延导致卡顿等现象,提高了用户体验。
6、在一些可能的实现方式中,代码处理系统还可以获取至少一个候选项在上下文数据库中的统计信息,该统计信息可以包括候选项的调用次数,如嵌套调用次数、循环调用次数等等,该统计信息可以反映候选项的使用频率,代码处理系统可以根据统计信息对至少一个候选项进行过滤,例如过滤使用频率较低的候选项。对应地,代码处理系统可以通过用户界面如gui向用户呈现过滤后的候选项,从而为用户提供使用频率较高的候选项,如此,可以有效减少候选项的数量,避免推荐过期的、弃用的应用程序编程接口(applicationprogramming interface,api)等,提高预测准确度。
7、其中,代码处理系统还可以根据统计信息对候选项进行排序,对应地,代码处理系统在提供候选项时,还可以按照排序结果顺序显示候选项。如此用户可以快速获知排序靠前、使用频率较高的候选项,方便用户快速选中上述候选项,提高代码补全效率。
8、在一些可能的实现方式中,代码处理系统还可以将至少一个候选项和待补全代码的上下文特征输入评估模型,获得至少一个候选项的推荐概率。对应地,代码处理系统可以根据至少一个候选项的推荐概率对候选项进行进一步筛选,如根据至少一个候选项的推荐概率确定至少一个候选项中的目标候选项,通过用户界面向用户呈现目标候选项。由此可以进一步提高预测准确度,提高代码补全精度和效率。
9、其中,评估模型可以通过从开源数据集或用户私有数据集中收集的样本对初始模型进行训练得到。初始模型可以是包括2层或者2层以上隐藏层的简单模型。隐藏层可以是全连接层(dense layer),该隐藏层的激活函数可以是双曲函数如双曲正切函数tanh。输出层包括损失函数,该损失函数可以是交叉熵损失函数(cross entry,xent)等等。
10、通过上述初始模型训练的评估模型无需消耗gpu资源,可以部署在在本地(例如是本地计算设备),如此可以降低传输时延,避免网络传输时延过长导致卡顿等现象,提高了用户体验。
11、在一些可能的实现方式中,评估模型可以通过二元分类模型实现。该二元分类模型以候选项以及候选项的上下文特征为输入,以推荐标签为输出。二元分类模型具体是将输入的候选项以及候选项的上下文特征与已有标识符以及该标识符的上下文特征进行匹配,从而确定推荐标签。其中,推荐标签可以取值为0,1,或者是true、false,当推荐标签为0或者是false时,表征不推荐该候选项,当推荐标签为1或者true时,表征推荐该候选项。
12、评估模型可以根据上述推荐标签进一步过滤候选项,提高预测候选项的准确度,从而提高代码补全精度。其中,评估模型还可以获取推荐标签为1或true的候选项的统计信息,基于统计信息确定候选项的推荐概率,例如根据评分值确定推荐概率。如此,代码处理系统可以根据该推荐概率顺序显示评估模型推荐的候选项。
13、在一些可能的实现方式中,候选项包括函数名时,代码处理系统还可以根据所述用户输入的代码所在代码文件中的代码(为了便于描述,下文称之为本地代码)填充所述至少一个候选项的参数。对应地,代码处理系统可以通过用户界面如gui向用户呈现填充有上述参数的至少一个候选项,由此可以实现多符号补全。
14、具体地,代码处理系统可以利用深度优先搜索算法搜索函数对应的参数,例如从本地代码中搜索得到函数对应的参数,然后基于搜索得到的参数对候选项进行参数填充。进一步地,代码处理系统还可以针对一个候选项填充多组参数,得到多个填充参数后的候选项。代码处理系统可以根据参数与待补全代码的距离在内的信息为多个填充参数后的候选项排序,按照排序结果过滤候选项,或者顺序显示候选项。如此,可以实现将接近用户输入意图的候选项在先显示,方便用户快速选本文档来自技高网...
【技术保护点】
1.一种代码处理方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述方法包括:
3.根据权利要求1或2所述的方法,其特征在于,所述从包括所述代码的数据库确定与所述待补全代码的前缀匹配的一个或多个第一候选项,包括:
4.根据权利要求3所述的方法,其特征在于,所述根据所述待补全代码在所述代码的上下文,从包括所述代码的数据库确定与所述待补全代码的前缀匹配的一个或多个所述第一候选项,包括:
5.根据权利要求4所述的方法,其特征在于,所述上下文特征包括如下的一种或多种:
6.根据权利要求1至5任一项所述的方法,其特征在于,所述其它候选项包括不具有参数的第一候选项。
7.根据权利要求1至6任一项所述的方法,其特征在于,
8.根据权利要求1至7任一项所述的方法,其特征在于,所述通过所述用户界面呈现包括所述参数的第一候选项和其它候选项,包括:
9.根据权利要求1至8任一项所述的方法,其特征在于,所述代码为使用一种计算机语言编写的代码或使用多种计算机语言混合编写的代码。
>10.根据权利要求1至9任一项所述的方法,其特征在于,所述第一候选项和所述第二候选项在所述用户界面上通过不同标识或者不同颜色或者不同字体区分。
11.一种代码处理装置,其特征在于,所述装置包括:
12.根据权利要求11所述的装置,其特征在于,所述装置包括:
13.根据权利要求11或12所述的装置,其特征在于,
14.根据权利要求11至13任一项所述的装置,其特征在于,
15.根据权利要求14所述的装置,其特征在于,所述上下文特征包括如下的一种或多种:
16.根据权利要求11至15任一项所述的装置,其特征在于,所述其它候选项包括不具有参数的第一候选项。
17.根据权利要求11至16任一项所述的装置,其特征在于,
18.根据权利要求11至17任一项所述的装置,其特征在于,所述接口单元具体用于:
19.根据权利要求11至18任一项所述的装置,其特征在于,所述代码为使用一种计算机语言编写的代码或使用多种计算机语言混合编写的代码。
20.根据权利要求11至19任一项所述的装置,其特征在于,所述第一候选项和所述第二候选项在所述用户界面上通过不同标识或者不同颜色或者不同字体区分。
21.一种计算设备,其特征在于,所述设备包括处理器和存储器;
22.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括指令;在计算设备运行所述指令时,所述计算设备执行如权利要求1至10中任一项所述的方法。
...【技术特征摘要】
1.一种代码处理方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述方法包括:
3.根据权利要求1或2所述的方法,其特征在于,所述从包括所述代码的数据库确定与所述待补全代码的前缀匹配的一个或多个第一候选项,包括:
4.根据权利要求3所述的方法,其特征在于,所述根据所述待补全代码在所述代码的上下文,从包括所述代码的数据库确定与所述待补全代码的前缀匹配的一个或多个所述第一候选项,包括:
5.根据权利要求4所述的方法,其特征在于,所述上下文特征包括如下的一种或多种:
6.根据权利要求1至5任一项所述的方法,其特征在于,所述其它候选项包括不具有参数的第一候选项。
7.根据权利要求1至6任一项所述的方法,其特征在于,
8.根据权利要求1至7任一项所述的方法,其特征在于,所述通过所述用户界面呈现包括所述参数的第一候选项和其它候选项,包括:
9.根据权利要求1至8任一项所述的方法,其特征在于,所述代码为使用一种计算机语言编写的代码或使用多种计算机语言混合编写的代码。
10.根据权利要求1至9任一项所述的方法,其特征在于,所述第一候选项和所述第二候选项在所述用户界面上通过不同标识或者不同颜色或者不同字体区分。
11.一种代码...
【专利技术属性】
技术研发人员:王亚伟,帕维尔·彼得罗琴科,德米特里·卡彭科,
申请(专利权)人:华为云计算技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。