代码程序推荐方法、装置、电子设备和存储介质与流程

文档序号:30229544发布日期:2022-06-01 04:13阅读:57来源:国知局
代码程序推荐方法、装置、电子设备和存储介质与流程

1.本技术涉及数据处理技术领域,尤其涉及一种代码程序推荐方法、装置、电子设备和存储介质。


背景技术:

2.随着软件技术的发展,用户量不断加大且用户对软件功能的需求不断增加,这使得软件开发的规模不断增大。开发人员在软件开发过程经常要对一些功能函数进行重复编写。
3.然而,开发人员在开发过程中重复性编写工作,消耗了大量开发人员的精力,使得开发速度和开发效果都会减慢。


技术实现要素:

4.本技术提供了一种代码程序推荐方法、装置、电子设备和存储介质,用以解决现有技术中,开发人员在开发过程中重复性编写工作,消耗了大量开发人员的精力,使得开发速度和开发效果都会减慢的问题。
5.第一方面,本技术实施例提供了一种代码程序推荐方法,包括:
6.获取用户端编辑的代码信息中的目标代码特征参数;
7.从代码推荐知识图谱中,确定所述目标代码特征参数对应的目标代码程序,所述代码推荐知识图谱是基于代码程序集合及所述代码程序集合中各代码程序各自对应的代码特征参数构建得到的;
8.推荐所述目标代码程序。
9.可选的,所述获取用户端编辑的代码信息中的目标代码特征参数,包括:
10.获取用户端编辑的代码信息;
11.提取所述代码信息中的目标代码特征参数。
12.可选的,所述提取所述代码信息中的目标代码特征参数,包括:
13.将所述代码信息与预设特征参数集合进行比较;
14.确定所述代码信息中与所述预设特征参数集合中的预设特征参数一致的参数为所述目标代码特征参数。
15.可选的,所述预设特征参数集合,包括:语言类型特征、包名和函数名中的至少一个。
16.可选的,所述从代码推荐知识图谱中,确定所述目标代码特征参数对应的目标代码程序,包括:
17.确定所述代码推荐知识图谱中与所述目标代码特征参数一致的代码特征参数;
18.根据所述代码特征参数从所述代码推荐知识图谱中确定至少一个候选代码程序,所述候选代码程序为所述代码程序集合中的代码程序;
19.从所述候选代码程序中确定所述目标代码程序。
20.可选的,所述从所述候选代码程序中确定所述目标代码程序,包括:
21.确定每个所述候选代码程序的执行性能参数;
22.确定所述执行性能参数最优的所述候选代码程序为所述目标代码程序。
23.可选的,所述推荐所述目标代码程序,包括:
24.将所述目标代码程序显示在所述客户端。
25.可选的,所述获取用户端编辑的代码信息中的目标代码特征参数之前,还包括:
26.确定所述用户端开启被推荐权限。
27.可选的,所述推荐所述目标代码程序之后,还包括:
28.若监测到所述用户端未接受所述目标代码程序,在监测到所述用户端中的所述代码信息编辑完毕后,根据编辑完毕的代码信息更新所述代码推荐知识图谱。
29.第二方面,本技术实施例提供了一种代码程序推荐装置,包括:
30.获取模块,用于获取用户端编辑的代码信息中的目标代码特征参数;
31.确定模块,用于从代码推荐知识图谱中,确定所述目标代码特征参数对应的目标代码程序,所述代码推荐知识图谱是基于代码程序集合及所述代码程序集合中各代码程序各自对应的代码特征参数构建得到的;
32.推荐模块,用于推荐所述目标代码程序。
33.第三方面,本技术实施例提供了一种电子设备,包括:处理器、通信接口、存储器和通信总线,其中,处理器、通信接口和存储器通过通信总线完成相互间的通信;
34.所述存储器,用于存储计算机程序;
35.所述处理器,用于执行所述存储器中所存储的程序,实现第一方面所述的代码程序推荐方法。
36.第四方面,本技术实施例提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现第一方面所述的代码程序推荐方法。
37.本技术实施例提供的上述技术方案与现有技术相比具有如下优点:本技术实施例提供的该方法,通过获取用户端编辑的代码信息中的目标代码特征参数;从代码推荐知识图谱中,确定所述目标代码特征参数对应的目标代码程序,所述代码推荐知识图谱是基于代码程序集合及所述代码程序集合中各代码程序各自对应的代码特征参数构建得到的;推荐所述目标代码程序。如此,在开发人员编写过程中,能够根据用户编辑的代码信息中的目标代码特征参数,从代码推荐知识图谱中确定出目标代码程序,推荐给开发人员,从而,在目标代码程序符合开发人员的开发需求时,能够减少开发人员的编写时间,从而提高了开发效率和开发速度。
附图说明
38.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
39.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
40.图1为本技术一实施例提供的代码程序推荐方法的应用场景图;
41.图2为本技术一实施例提供的代码程序推荐方法的流程图;
42.图3为本技术一实施例提供的代码推荐知识图谱的部分示意图;
43.图4为本技术一实施例提供的代码程序推荐装置的结构图;
44.图5为本技术一实施例提供的电子设备的结构图。
具体实施方式
45.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术的一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。
46.在对本发明实施例进行进一步详细说明之前,对本发明实施例中涉及的名词和术语进行说明,本发明实施例中涉及的名词和术语适用于如下的解释。
47.知识图谱:知识图谱旨在描述真实世界中存在的各种实体或概念及其关联关系,其构成一张巨大的语义网络图,节点表示实体或概念,边则由属性或关联关系构成。
48.实体:实体指的是具有可区别性且独立存在的某种事物,例如人名、城市名称、植物名称、商品名称、领域名称、平台名称等,实体是知识图谱中的最基本元素,不同的实体间存在不同的关联关系,例如某知识图谱中,张三和李四为夫妻,其中张三、李四均为实体。
49.关联关系:在知识图谱上,边表示知识图谱中的关联关系,用来标识不同实体间的某种联系,例如某知识图谱中,张三和李四为夫妻,其中,夫妻即为二者的关联关系。
50.属性:知识图谱中的实体和关联关系都可以有各自的属性,从一个实体指向它的属性值,不同的属性类型对应于不同类型属性的边,属性主要指对象的特征信息,例如“面积”、“人口”、“首都”是几种不同的属性,属性值主要指属性的值,例如960万平方公里等。
51.根据本技术一实施例提供了一种代码程序推荐方法。可选地,在本技术实施例中,上述代码程序推荐方法可以应用于如图1所示的由终端101和服务器102所构成的硬件环境中。如图1所示,服务器102通过网络与终端101进行连接,可用于为终端或终端上安装的客户端提供服务(如视频服务、应用服务等),可在服务器上或独立于服务器设置数据库,用于为服务器102提供数据存储服务,上述网络包括但不限于:广域网、城域网或局域网,终端101并不限定于pc、手机、平板电脑等。
52.本技术实施例的代码程序推荐方法可以由服务器102来执行,也可以由终端101来执行,还可以是由服务器102和终端101共同执行。其中,终端101执行本技术实施例的代码程序推荐方法,也可以是由安装在其上的客户端来执行。
53.以服务器执行本技术实施例的代码程序推荐方法为例,图2是根据本技术实施例的一种可选的代码程序推荐方法的流程示意图,如图2所示,该方法的流程可以包括以下步骤:
54.步骤201、获取用户端编辑的代码信息中的目标代码特征参数。
55.一些实施例中,用户在用户端编写代码时,可以在用户端的代码编辑器中输入相关代码。
56.其中,开发人员在代码编辑器中可以根据实际需求进行编辑,在开发人员编辑过程中,用户端可以每间隔预设时长,对用户输编辑的代码信息进行特征提取,得到目标代码
特征参数,并发送至服务器;或者,用户端每间隔预设时长直接将代码信息发送至服务器,以使服务器在获取到代码信息后,提取到代码信息中的目标代码特征参数。
57.其中,代码信息可以是开发人员在代码编辑器中输入的代码数据,包括字符、符号或信号码元等。
58.在一个可选实施例中,提取所述代码信息中的目标代码特征参数,包括:
59.将所述代码信息与预设特征参数集合进行比较;确定所述代码信息中与所述预设特征参数集合中的预设特征参数一致的参数为所述目标代码特征参数。
60.具体的,服务器在获取到用户端编辑的代码信息后,将代码信息与预设特征参数集合进行比较后,判断代码信息中是否存在参数与预设特征参数集合中的预设特征参数一致,若存在,将一致的参数作为目标代码特征参数。
61.其中,预设特征参数集合中的预设特征参数可以是代码推荐知识图谱中的实体。
62.其中,目标代码特征参数可以是代码信息采用的计算机语言类型、代码中的包名和函数名中的任意一个或多个。
63.其中,计算机语言类型可以但不限于为python、java、go和.net等。
64.步骤202、从代码推荐知识图谱中,确定所述目标代码特征参数对应的目标代码程序,所述代码推荐知识图谱是基于代码程序集合及所述代码程序集合中各代码程序各自对应的代码特征参数构建得到的。
65.一些实施例中,在获取到目标代码特征参数后,便可以通过代码推荐知识图谱,从中确定目标代码特征参数对应的目标代码程序。
66.其中,由于代码推荐知识图谱在构建时,是通过代码程序各自对应的代码特征参数得到的,因此,在获取到目标代码特征参数后,便可以从代码推荐知识图谱中目标代码特征参数对应的目标代码程序。
67.在一个可选实施例中,从代码推荐知识图谱中,确定所述目标代码特征参数对应的目标代码程序,包括:
68.确定所述代码推荐知识图谱中与所述目标代码特征参数一致的代码特征参数;根据所述代码特征参数从所述代码推荐知识图谱中确定至少一个候选代码程序,所述候选代码程序为所述代码程序集合中的代码程序;从所述候选代码程序中确定所述目标代码程序。
69.一些实施例中,在确定目标代码特征参数后,使服务器能够从代码推荐知识图谱中先确定与其一致的代码特征参数,由于在代码推荐知识图谱中,是通过代码程序各自对应的代码特征参数构建的,因此,在确定代码推荐知识图谱中的代码特征参数后,可以通过该代码特征参数确定出至少一个候选代码程序,进而,服务器能够从该至少一个候选代码程序中,确定出目标代码程序。
70.具体的,通过代码特征参数确定的候选代码程序为与该代码特征参数具有关联关系的代码程序,确定的目标代码程序可以是所有的候选代码程序,也可以是,从至少一个候选代码程序中进行选择,以确定目标代码程序。
71.在一个可选实施例中,所述从所述候选代码程序中确定所述目标代码程序,包括:
72.确定每个所述候选代码程序的执行性能参数;确定所述执行性能参数最优的所述候选代码程序为所述目标代码程序。
73.一些实施例中,执行性能参数可以但不限于为代码程序的每秒查询率、每秒处理的事务数目、时间复杂度和空间复杂度等。
74.通常跑一遍程序通过统计代码执行时长和占用的内存大小来判断代码执行效率会受测试环境机器配置和测试数据规模影响;所以需要一个不用真正执行代码就可以粗略地估计算程序的执行效率的方法,这种方法就是复杂度分析,具体包括时间复杂度和空间复杂度。
75.其中,时间复杂度可以简单理解为代码重复执行的次数。如一个for循环的时间复杂度就是for循环的次数;通常用大o来表示时间复杂度;一个for循环n次,这个for循环的时间复杂度就是o(n);但是一个for循环固定次数,那么它的时间复杂度又是o(1);所以时间复杂度更是代表一种变化趋势(时间复杂度的全称是渐进时间复杂度,表示算法的执行时间与数据规模之间的增长关系)。空间复杂度表示算法的存储空间与数据规模之间的增长关系;空间复杂度通常也是用大o来表示;比如int[]a=new int[n],代码空间复杂度为o(n);但是int[]a=new int[3],代码空间复杂度为o(1)。
[0076]
其中,执行性能参数可以是在构建代码推荐知识图谱时,将该执行性能参数作为代码程序的属性信息。
[0077]
通过确定每个候选代码程序的执行性能参数,并将所有候选代码程序的执行性能参数进行比较,将执行性能参数最优的所述候选代码程序为所述目标代码程序。
[0078]
可以理解的是,也可以选择执行性能参数最优前n个候选代码程序为目标代码程序。其中,n为大于1的正整数。
[0079]
步骤203、推荐所述目标代码程序。
[0080]
一些实施例中,在确定目标代码程序后,可以将该目标代码程序推荐到用户端,从而由开发人员根据实际情况,选择是否采用推荐的该目标代码程序。
[0081]
在一个可选实施例中,推荐所述目标代码程序,包括:
[0082]
将所述目标代码程序显示在所述客户端。
[0083]
一些实施例中,服务器在推荐目标代码程序时,可以将目标代码程序发送至客户端,并在客户端进行显示,从而供开发人员根据实际编辑情况进行选择。
[0084]
在一个可选实施例中,所述获取用户端编辑的代码信息中的目标代码特征参数之前,还包括:
[0085]
确定所述用户端开启被推荐权限。
[0086]
一些实施例中,对于部分开发人员在编辑代码信息的过程中,可能并不需要被推荐代码程序,因此,在为用户端推荐目标代码程序前,先判断用户端是否开启被推荐权限,若已开启,向用户端推荐目标代码程序,若未开启,则不执行推荐操作。
[0087]
在一个可选实施例中,所述推荐所述目标代码程序之后,还包括:
[0088]
若监测到所述用户端未接受所述目标代码程序,在监测到所述用户端中的所述代码信息编辑完毕后,根据编辑完毕的代码信息更新所述代码推荐知识图谱。
[0089]
一些实施例中,在服务器将目标代码程序推荐到用户端后,开发人员若未采用推荐的目标代码程序,会继续在代码编辑器中编写,在开发人员编辑完毕后,用户端向服务器发送编辑完毕的信号,从而服务器在接收到编辑完毕的信号,确定用户端中的所述代码信息编辑完毕后,获取用户端发送的编辑完毕的代码信息,进而,将该代码信息更新到代码推
荐知识图谱中,以在下次开发人员编辑时,能够将其推荐。
[0090]
如此,在开发人员编写过程中,能够根据用户编辑的代码信息中的目标代码特征参数,从代码推荐知识图谱中确定出目标代码程序,推荐给开发人员,从而,在目标代码程序符合开发人员的开发需求时,能够减少开发人员的编写时间,从而提高了开发效率和开发速度。
[0091]
在一个具体实施例中,本技术实施例中提供了一种代码程序推荐方法中,服务器通过对项目代码的分类,以及历史代码的记录与分析建立对应的知识图谱。例如:将项目代码按功能或性能进行分类,分为展示类、中间件类和后端服务类,同时再对分类后的代码细分,如后端的代码分为python、java、go、.net语言等,同时再对每一类代码进行各种分析,如运行时间、qps/tps等。通过这种分类建立起输入代码与相关项目代码的联系,从而利用该联系建立相对应的知识图谱,而后通过该知识图谱进行分析检索,保证该策略的有效实施。
[0092]
其中,构建的知识图谱中的实体可以但不限于为包名或者函数名,实体间的关系可以但不限于为实体间的相似度或特征值,实体的属性可以但不限于为包名中的本地包或远程包、函数中的具体逻辑代码。
[0093]
该代码程序推荐方法策略实施的具体步骤:
[0094]
第一、用户通过代码编辑器对代码进行编辑;
[0095]
第二、代码编辑器不定时将用户代码传输至云服务器中;
[0096]
第三、云服务器通过用户代码扫描进行分析筛选;
[0097]
具体的,云服务器分析用户在编译器所编辑的内容,不同的代码由不同的特征,关键字是其中一种,不同语言的代码具有不同的代码风格,可以通过代码风格判断编辑的代码信息具体采用的语言类型。
[0098]
第四、结合历史数据和用户当前输入数据,进行上文所说的知识图谱检索,并返回对应结果。
[0099]
参见图3,用户输入一个包名,代码编译器实时上传该用户输入的代码特征传至云服务器,云服务器解析用户代码,获得结果为该用户需要导入本地的包-本地包名2。因此服务器通过检索知识图谱,将本地包名2的代码补全推荐给用户,让用户选择是否使用或者继续自己编辑代码。
[0100]
又例如,一个用户此时输入函数名,代码编辑器向云服务器上传数据后,云服务通过代码分析,进行知识图谱的检索,发现有相关代码且性能更优的代码存在,于是在知识图谱中将该质量更好性能更优的发送回用户此时的编辑器中。但分析用户代码后,发现代码在数据库中没有完全匹配的,即把多个相似代码下发给用户,供用户自行选择,同时记录用户不选择时自己编写的代码上传至服务器进行备份分析,以供后续的用户再次编写时推荐使用。
[0101]
其中,相似代码可以是通过用户输入的函数名和代码中的控制条件或者说是代码结构确定的。
[0102]
基于同一构思,本技术实施例中提供了一种代码程序推荐装置,该装置的具体实施可参见方法实施例部分的描述,重复之处不再赘述,如图4所示,该装置主要包括:
[0103]
获取模块401,用于获取用户端编辑的代码信息中的目标代码特征参数;
[0104]
确定模块402,用于从代码推荐知识图谱中,确定所述目标代码特征参数对应的目标代码程序,所述代码推荐知识图谱是基于代码程序集合及所述代码程序集合中各代码程序各自对应的代码特征参数构建得到的;
[0105]
推荐模块403,用于推荐所述目标代码程序。
[0106]
基于同一构思,本技术实施例中还提供了一种电子设备,如图5所示,该电子设备主要包括:处理器501、存储器502和通信总线503,其中,处理器501和存储器502通过通信总线503完成相互间的通信。其中,存储器502中存储有可被处理器501执行的程序,处理器501执行存储器502中存储的程序,实现如下步骤:
[0107]
获取用户端编辑的代码信息中的目标代码特征参数;
[0108]
从代码推荐知识图谱中,确定所述目标代码特征参数对应的目标代码程序,所述代码推荐知识图谱是基于代码程序集合及所述代码程序集合中各代码程序各自对应的代码特征参数构建得到的;
[0109]
推荐所述目标代码程序。
[0110]
上述电子设备中提到的通信总线503可以时外设部件互连标准(peripheral component interconnect,简称pci)总线或扩展工业标准结构(extended industry standard architecture,简称eisa)总线等。该通信总线503可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0111]
存储器502可以包括随机存取存储器(random access memory,简称ram),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选地,存储器还可以是至少一个位于远离前述处理器501的存储装置。
[0112]
上述的处理器501可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、网络处理器(network processor,简称np)等,还可以是数字信号处理器(digital signal processing,简称dsp)、专用集成电路(application specific integrated circuit,简称asic)、现场可编程门阵列(field-programmable gate array,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
[0113]
在本技术的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,当该计算机程序在计算机上运行时,使得计算机执行上述实施例中所描述的代码程序推荐方法。
[0114]
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机指令时,全部或部分地产生按照本技术实施例所述的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、微波等)方式向另外一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质(例如软盘、硬盘、
磁带等)、光介质(例如dvd)或者半导体介质(例如固态硬盘)等。
[0115]
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0116]
以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1