一种基于多代码情况下的代码参数校验方法及装置与流程

未命名 07-20 阅读:82 评论:0


1.本发明涉及一种基于多代码情况下的代码参数校验方法及装置,属于代码检测技术领域。


背景技术:

2.伴随科学技术发展,软件开发行业得到蓬勃发展,且软件应用的领域越来越复杂,其带来的直接后果是支持软件运行的代码量也越来越多,如何从海量代码中找到目标代码并对目标代码执行代码参数校验,是急需解决的技术问题。
3.目前常用的代码校验步骤主要是先搜索目标代码后校验目标代码,其中搜索方法主要依赖于关键字,即通过代码关键字或注释关键字从代码管理系统中检索出符合用户需求的目标代码,并进一步对目标代码执行校验。
4.上述方法虽然可实现代码参数校验,但在搜索目标代码时由于技术简单,当代码量庞大时,搜索会造成大量的时间或搜索资源的浪费。


技术实现要素:

5.本发明提供一种基于多代码情况下的代码参数校验方法、装置及计算机可读存储介质,其主要目的在于对目标代码执行参数校验之前减少搜索目标代码的搜索时间。
6.为实现上述目的,本发明提供的一种基于多代码情况下的代码参数校验方法,包括:
7.获取代码片段集,其中代码片段集的代码片段包括api调用代码及自编写代码两类;
8.根据所述代码片段集构建代码语料库;
9.从所述代码语料库中提取得到描述代码的编程语言特征集;
10.启动代码管理系统并接收用户输入的代码校验指令,从所述代码校验指令中解析得到校验参考字符,其中,代码管理系统中包括所述代码片段集及对应的编程语言特征集,且代码校验指令的目的是校验代码管理系统中符合校验参考字符的代码段;
11.计算校验参考字符与所述编程语言特征集中每个编程语言特征的相似度,并提取相似度高于相似阈值的编程语言特征,得到相似语言特征;
12.获取代码管理系统中包括相似语言特征的代码片段,得到待校验代码段;
13.对所述待校验代码段执行参数校验,得到参数校验结果,并将参数校验结果返回至用户。
14.可选地,所述获取代码片段集,包括:
15.登录代码交流社区,其中代码交流社区中包括不同用户开放的不同软件项目;
16.从所述代码交流社区中下载不同的软件项目,得到软件项目集,其中每个软件项目内均包括至少一行编程代码;
17.对每个软件项目的编程代码执行分类,得到api调用代码及自编写代码;
18.对不同的api调用代码及自编写代码均执行代码清洗操作,得到已清洗代码;
19.汇总所有的已清洗代码,得到所述代码片段集。
20.可选地,所述对不同的api调用代码及自编写代码均执行代码清洗操作,得到已清洗代码,包括:
21.获取弃用api集,剔除属于弃用api集的ap调用代码,得到可用api代码;
22.去除可用ap代码及自编写代码中出现的无用注释,得到已清洗代码,其中无用注释包括:创建者及开发人员的个人介绍、日期信息及版权信息。
23.可选地,所述根据所述代码片段集构建代码语料库,包括:
24.获取代码片段集中所涉及的编程语言,并确定每个编程语言的代码起始标识符;
25.从代码片段集中依次提取每个代码片段,并根据所述代码起始标识符从代码片段中截取代码语料,得到原始代码语料集;
26.对所述原始代码语料集中每个原始代码语料均执行语法分析,剔除不符合语法分析的异常语料,得到初级代码语料集,其中语法分析使用抽象语法树算法;
27.根据所述初级代码语料集构建得到代码语料库。
28.可选地,所述根据所述初级代码语料集构建得到代码语料库,包括:
29.获取每个初级代码语料中所有的代码注释;
30.对所有的代码注释均执行文本清洗,得到已清洗注释;
31.将已清洗注释执行结构化处理,得到结构化注释;
32.从所述结构化注释中执行信息抽取,得到与初级代码语料对应的代码解释文本;
33.将代码解释文本与初级代码语料执行组合,得到组合代码语料,将每个组合代码语料均存储至预构建的数据库中,得到代码语料库。
34.可选地,所述从所述代码语料库中提取得到描述代码的编程语言特征集,包括:
35.依次遍历出代码语料库中的组合代码语料,其中组合代码语料由代码解释文本及初级代码语料组成,对每个组合代码语料均执行如下操作:
36.去除初级代码语料及代码解释文本中重复出现的文本及代码,其中重复出现的代码包括函数代码、类代码、实例化代码及对象化代码;
37.对代码解释文本执行词性还原及词干提取,得到代码通用文本;
38.将代码通用文本作为去重后的初级代码语料的标题,组合得到编程语言特征;
39.汇总所有的编程语言特征,得到所述编程语言特征集。
40.可选地,所述代码校验指令的生成过程包括:
41.启动代码管理系统,其中代码管理系统包括图形化的校验生成图标;
42.接收用户点击所述校验生成图标,生成点击指令后触发校验指令生成程序;
43.当运行校验指令生成程序时生成校验参考字符提示框;
44.接收用户在所述校验参考字符提示框中输入的校验参考字符,其中校验参考字符提示框会根据用户每次输入的校验参考字符,执行智能化的输入提示;
45.直至用户在校验参考字符提示框中输入完所有的校验参考字符以后,关闭校验参考字符提示框并继续运行校验指令生成程序,得到所述代码校验指令。
46.可选地,所述计算校验参考字符与所述编程语言特征集中每个编程语言特征的相似度,包括:
[0047][0048]
其中,w,wj分别表示用户输入的校验参考字符集合,及编程语言特征集中第j个编程语言特征,w表示校验参考字符集合中的校验参考字符,sim(w,wj)表示校验参考字符与第j个编程语言特征的相似度,maxsim(w,wj)表示校验参考字符与第j个编程语言特征中每个代码通用文本及初级代码语料执行相似度计算后得到的相似度最大值,idf(w)表示校验参考字符的逆向文本频率。
[0049]
可选地,所述对所述待校验代码段执行参数校验,得到参数校验结果,包括:
[0050]
从所述待校验代码段中提取出api调用代码,得到待校验api代码,其中api类型属于java类;
[0051]
对所述待校验api代码执行校验标注,得到校验标注符;
[0052]
利用校验标注符调用java的baseservice方法,实现代码的参数校验,得到参数校验结果。
[0053]
为了解决上述问题,本发明还提供一种基于多代码情况下的代码参数校验装置,所述装置包括:
[0054]
代码语料库构建模块,用于获取代码片段集,其中代码片段集的代码片段包括api调用代码及自编写代码两类,根据所述代码片段集构建代码语料库;
[0055]
编程语言特征构建模块,用于从所述代码语料库中提取得到描述代码的编程语言特征集;
[0056]
相似度计算模块,用于启动代码管理系统并接收用户输入的代码校验指令,从所述代码校验指令中解析得到校验参考字符,其中,代码管理系统中包括所述代码片段集及对应的编程语言特征集,且代码校验指令的目的是校验代码管理系统中符合校验参考字符的代码段,计算校验参考字符与所述编程语言特征集中每个编程语言特征的相似度,并提取相似度高于相似阈值的编程语言特征,得到相似语言特征;
[0057]
代码校验模块,用于获取代码管理系统中包括相似语言特征的代码片段,得到待校验代码段,对所述待校验代码段执行参数校验,得到参数校验结果,并将参数校验结果返回至用户。
[0058]
为了解决上述问题,本发明还提供一种电子设备,所述电子设备包括:
[0059]
至少一个处理器;以及,
[0060]
与所述至少一个处理器通信连接的存储器;其中,
[0061]
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以实现上述所述的基于多代码情况下的代码参数校验方法。
[0062]
为了解决上述问题,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一个指令,所述至少一个指令被电子设备中的处理器执行以实现上述所述的基于多代码情况下的代码参数校验方法。
[0063]
相比于背景技术所述问题,本发明实施例先获取代码片段集,其中代码片段集的代码片段包括api调用代码及自编写代码两类,然后根据所述代码片段集构建代码语料库,并进一步地,从所述代码语料库中提取得到描述代码的编程语言特征集,需强调的是,本发明实施例相比于传统的代码搜索来说,其主要改进点在于,当用户想统一测试某个功能的
代码时,传统方法直接根据用户所输入的关键字匹配项目中所有的代码关键字或注释关键字,这类搜索方法极其耗时浪费资源,因此本发明实施例先构建出用于匹配的编程语言特征,然后启动代码管理系统并接收用户输入的代码校验指令,从所述代码校验指令中解析得到校验参考字符,其中,代码管理系统中包括所述代码片段集及对应的编程语言特征集,且代码校验指令的目的是校验代码管理系统中符合校验参考字符的代码段,计算校验参考字符与所述编程语言特征集中每个编程语言特征的相似度,并提取相似度高于相似阈值的编程语言特征,得到相似语言特征,可见上述实施过程可由于只涉及到校验参考字符与编程语言特征的相似度计算过程,相比传统方法大量减少计算量,故当完成代码搜素以后,获取代码管理系统中包括相似语言特征的代码片段,得到待校验代码段,对所述待校验代码段执行参数校验,得到参数校验结果,并将参数校验结果返回至用户。因此本发明提出的基于多代码情况下的代码参数校验方法、装置、电子设备及计算机可读存储介质,其主要目的在于对目标代码执行参数校验之前减少搜索目标代码的搜索时间。
附图说明
[0064]
图1为本发明一实施例提供的基于多代码情况下的代码参数校验方法的流程示意图;
[0065]
图2为本发明一实施例提供的基于多代码情况下的代码参数校验装置的功能模块图;
[0066]
图3为本发明一实施例提供的实现所述基于多代码情况下的代码参数校验方法的电子设备的结构示意图。
[0067]
本发明目的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
[0068]
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0069]
本技术实施例提供一种基于多代码情况下的代码参数校验方法。所述基于多代码情况下的代码参数校验方法的执行主体包括但不限于服务端、终端等能够被配置为执行本技术实施例提供的该方法的电子设备中的至少一种。换言之,所述基于多代码情况下的代码参数校验方法可以由安装在终端设备或服务端设备的软件或硬件来执行。所述服务端包括但不限于:单台服务器、服务器集群、云端服务器或云端服务器集群等。
[0070]
实施例1:
[0071]
参照图1所示,为本发明一实施例提供的基于多代码情况下的代码参数校验方法的流程示意图。在本实施例中,所述基于多代码情况下的代码参数校验方法包括:
[0072]
s1、获取代码片段集,其中代码片段集的代码片段包括appi调用代码及自编写代码两类。
[0073]
本发明实施例在阐述详细技术实施步骤之前,再次阐述本发明实施例的技术实施意义:在大型软件项目中,如开发一套全国通用的app或普适性软件等,由于涉及到众多开发代码,如前端代码、通信代码、算法代码、后端代码等,如何批量查看并检查所查看的代码准确性具有极其重要的意义。一般情况下,通过代码管理系统统一管理众多开发代码,但如何在代码管理系统内搜索出符合用户意图的代码并校验确并非易事。
[0074]
为解决上述问题,本发明实施例先构建出可匹配用户代码校验指令的编程语言特征,在构建编程语言特征之前,需先获取代码片段集。详细地,所述获取代码片段集,包括:
[0075]
登录代码交流社区,其中代码交流社区中包括不同用户开放的不同软件项目;
[0076]
从所述代码交流社区中下载不同的软件项目,得到软件项目集,其中每个软件项目内均包括至少一行编程代码;
[0077]
对每个软件项目的编程代码执行分类,得到api调用代码及自编写代码;
[0078]
对不同的api调用代码及自编写代码均执行代码清洗操作,得到已清洗代码;
[0079]
汇总所有的已清洗代码,得到所述代码片段集。
[0080]
示例性的,如登录某java代码交流社区,该jv代码交流社区内分享了基于java编程语言构建的不同项目,如基于jv的就业网页搭建项目、物流管理平台开发项目等。且可理解的是,每个项目的核心内容均由编程代码组成。
[0081]
进一步地,需解释的是,api调用代码及自编写代码具有本质区别,其中api调用代码一般直接调用api接口,并根据api接口对参数要求,对应赋予接口参数,从而运行api可实现目的;对应地,自编写代码主要根据项目需求,不调用任何pi接口而纯靠开发人员自己定义数据、构建函数并封装所得到的代码。
[0082]
详细地,所述对不同的api调用代码及自编写代码均执行代码清洗操作,得到已清洗代码,包括:
[0083]
获取弃用api集,剔除属于弃用api集的api调用代码,得到可用ai代码;
[0084]
去除可用api代码及自编写代码中出现的无用注释,得到已清洗代码。
[0085]
可理解的是,不同编程语言都具有大量的api接口供编程人员调用,但伴随版本更新、接口升级等原因,一部分在代码交流社区所分享的api接口已被弃用,因此这部分代码作为无用代码,需要提前剔除。
[0086]
进一步地,所述无用注释包括:创建者及开发人员的个人介绍、日期信息及版权信息。
[0087]
s2、根据所述代码片段集构建代码语料库。
[0088]
可理解的是,从代码交流社区中下载并清洗得到代码片段集以后,需要进一步构建出代码语料库,代码语料库的主要作用在于系统的存储每个代码片段,从而提高后续检索效率。
[0089]
详细地,所述根据所述代码片段集构建代码语料库,包括:
[0090]
获取代码片段集中所涉及的编程语言,并确定每个编程语言的代码起始标识符;
[0091]
从代码片段集中依次提取每个代码片段,并根据所述代码起始标识符从代码片段中截取代码语料,得到原始代码语料集;
[0092]
对所述原始代码语料集中每个原始代码语料均执行语法分析,剔除不符合语法分析的异常语料,得到初级代码语料集,其中语法分析使用抽象语法树算法;
[0093]
根据所述初级代码语料集构建得到代码语料库。
[0094]
示例性的,上述代码片段集构均来源于jav代码交流社区,因此所涉及的编程语言也为jv,其中jv的代码起始标识符包括但不限于《o》>或《prr》>《<o》>等。因此遍历每个代码片段,当发现代码片段中出现《o》或《pr》《o》等代码起始标识符以后,从发现位置的地方中截取代码语料,得到原始代码语料。
[0095]
进一步地,抽象语法树是源代码语法结构的一种抽象表示,其以树状形式表现编程语言的语法结构,从而进行语法检查确定出异常代码。利用抽象语法树执行语法分析,从而可剔除异常语料,由于抽象语法树为已公开技术,本发明实施例在此不再赘述。
[0096]
详细地,所述根据所述初级代码语料集构建得到代码语料库,包括:
[0097]
获取每个初级代码语料中所有的代码注释;
[0098]
对所有的代码注释均执行文本清洗,得到已清洗注释;
[0099]
将已清洗注释执行结构化处理,得到结构化注释;
[0100]
从所述结构化注释中执行信息抽取,得到与初级代码语料对应的代码解释文本;
[0101]
将代码解释文本与初级代码语料执行组合,得到组合代码语料,将每个组合代码语料均存储至预构建的数据库中,得到代码语料库。
[0102]
可理解的是,经过多次筛选、语法分析等操作所得到初级代码语料,其完善程度高、代码注释丰富,因此为了获取可用于描述该初级代码语料的功能、目的及作用等,直接获取初级代码语料的代码注释,且部分代码注释停用词、标点符号或异常符号较多,故先执行文本清洗,当完成文本清洗以后需要执行结构化处理,因为编程人员在给代码批注时,一般较为在位置用词上较为随意,因此通过结构化处理后可得到结构化注释。
[0103]
此外,信息抽取是抽取出重要信息,从而达到代码解释文本的精简化目的。示例性的,如在结构化注释中存在:“这是提示信息”、“此函数目的是获取前端的交互数据”,很明显的,“此函数目的是获取前端的交互数据”可详细描述初级代码语料中对应函数的作用,故可提取出作为代码解释文本,以此类推对每个初级代码语料均执行上述操作,直至构建得到代码语料库。
[0104]
s3、从所述代码语料库中提取得到描述代码的编程语言特征集。
[0105]
需解释的是,当用户输入代码校验指令时,通过代码校验指令匹配出用户想要校验检查的代码块,但直接依次遍历代码语料库中的组合代码语料,会极其耗时耗力,造成在匹配过程的资源浪费,为了更加快速的为用户检索出想要校验检查的代码块,本发明实施例先提取具有代表性的编程语言特征,用于匹配。详细地,所述从所述代码语料库中提取得到描述代码的编程语言特征集,包括:
[0106]
依次遍历出代码语料库中的组合代码语料,其中组合代码语料由代码解释文本及初级代码语料组成,对每个组合代码语料均执行如下操作:
[0107]
去除初级代码语料及代码解释文本中重复出现的文本及代码,其中重复出现的代码包括函数代码、类代码、实例化代码及对象化代码;
[0108]
对代码解释文本执行词性还原及词干提取,得到代码通用文本;
[0109]
将代码通用文本作为去重后的初级代码语料的标题,组合得到编程语言特征;
[0110]
汇总所有的编程语言特征,得到所述编程语言特征集。
[0111]
示例性的,代码语料库中存在如下组合代码语料:
[0112]
第一初级代码语料:函数代码a、函数代码、函数代码a、类代码c、实例化代码d及类代码c;及与第一初级代码语料对应的代码解释文本:函数代码a是用于连接前端网页,函数代码是用于连接后端数据库

[0113]
因此通过去重复操作、词性还原及词干提取即可得到优化后的组合代码语料:
[0114]
第一初级代码语料:函数代码a、函数代码、类代码c及实例化代码d;及代码解释文
本:函数代码a连接前端网页,函数代码连接后端数据库

[0115]
并进一步地,将代码通用文本作为去重后的初级代码语料的标题,组合得到编程语言特征:
[0116]
标题:函数代码a连接前端网页,函数代码连接后端数据库
[0117]
代码:函数代码a、函数代码、类代码c及实例化代码d。
[0118]
可见通过上述操作以后所得到的编程语言特征,其特征更加显现、所包含的字符数越少,因此更能准确快速的实施检索,从而匹配出用户希望得到的代码。
[0119]
s4、启动代码管理系统并接收用户输入的代码校验指令,从所述代码校验指令中解析得到校验参考字符,其中,代码管理系统中包括所述代码片段集及对应的编程语言特征集,且代码校验指令的目的是校验代码管理系统中符合校验参考字符的代码段。
[0120]
需解释的是,代码管理系统就是统一管理某项目所有代码,方便执行代码维护的系统。示例性的,某公司目前正在开发一套智能定位app,因此参与开发智能定位app所有软件人员均使用这套代码管理系统,方便提高开发效率。先假设智能定位app的开发主管想要检查智能定位app中关于定位代码编写是否符合要求,故在代码管理系统输入代码校验指令。
[0121]
此外,所述代码校验指令的生成过程包括:
[0122]
启动代码管理系统,其中代码管理系统包括图形化的校验生成图标;
[0123]
接收用户点击所述校验生成图标,生成点击指令后触发校验指令生成程序;
[0124]
当运行校验指令生成程序时生成校验参考字符提示框;
[0125]
接收用户在所述校验参考字符提示框中输入的校验参考字符,其中校验参考字符提示框会根据用户每次输入的校验参考字符,执行智能化的输入提示;
[0126]
直至用户在校验参考字符提示框中输入完所有的校验参考字符以后,关闭校验参考字符提示框并继续运行校验指令生成程序,得到所述代码校验指令。
[0127]
可理解的是,代码校验指令中包括了用户需要校验代码的关键字。示例性的,智能定位app的开发主管想要检查智能定位app中关于定位代码编写是否符合要求,故在输入代码校验指令的同时,在生成代码校验指令之前,输入gps、定位等关键字作为校验参考字符。
[0128]
s5、计算校验参考字符与所述编程语言特征集中每个编程语言特征的相似度,并提取相似度高于相似阈值的编程语言特征,得到相似语言特征。
[0129]
详细地,所述计算校验参考字符与所述编程语言特征集中每个编程语言特征的相似度,包括:
[0130][0131]
其中,w,wj分别表示用户输入的校验参考字符集合,及编程语言特征集中第j个编程语言特征,w表示校验参考字符集合中的校验参考字符,sim(w,wj)表示校验参考字符与第j个编程语言特征的相似度,maxsim(w,wj)表示校验参考字符与第j个编程语言特征中每个代码通用文本及初级代码语料执行相似度计算后得到的相似度最大值,idf(w)表示校验参考字符的逆向文本频率。
[0132]
示例性的,开发主管想要检查智能定位app中关于定位代码编写是否符合要求,输入gp、定位等校验参考字符,通过这类校验参考字符依次和代码管理系统中所有的与开发
智能定位app相关的编程语言特征执行相似度计算,从而得到一系列相似度值。
[0133]
现假设开发智能定位app相关的编程语言特征共有100个,即对应100个代码片段,根据gp、定位等校验参考字符计算出与100个代码片段的相似度依次为0.21、0.98、

、0.12,现确定相似阈值为0.8,则提取出高于0.8的所有编程语言特征,即为相似语言特征。
[0134]
ss6、获取代码管理系统中包括相似语言特征的代码片段,得到待校验代码段。
[0135]
可理解的是,每个相似语言特征对应一个代码片段,故依次获取每个代码片段,得到待校验代码段。
[0136]
s7、对所述待校验代码段执行参数校验,得到参数校验结果,并将参数校验结果返回至用户。
[0137]
详细地,所述对所述待校验代码段执行参数校验,得到参数校验结果,包括:
[0138]
从所述待校验代码段中提取出api调用代码,得到待校验api代码,其中api类型属于jv类;
[0139]
对所述待校验api代码执行校验标注,得到校验标注符;
[0140]
利用校验标注符调用jv的baseservice方法,实现代码的参数校验,得到参数校验结果。
[0141]
需解释的是,baseservice方法的主要作用在于增删查改代码的参数,通过baseservice方法传入待校验api代码的参数,然后通过对待校验api代码的实例化判断待校验api代码的异常。
[0142]
相比于背景技术所述问题,本发明实施例先获取代码片段集,其中代码片段集的代码片段包括ai调用代码及自编写代码两类,然后根据所述代码片段集构建代码语料库,并进一步地,从所述代码语料库中提取得到描述代码的编程语言特征集,需强调的是,本发明实施例相比于传统的代码搜索来说,其主要改进点在于,当用户想统一测试某个功能的代码时,传统方法直接根据用户所输入的关键字匹配项目中所有的代码关键字或注释关键字,这类搜索方法极其耗时浪费资源,因此本发明实施例先构建出用于匹配的编程语言特征,然后启动代码管理系统并接收用户输入的代码校验指令,从所述代码校验指令中解析得到校验参考字符,其中,代码管理系统中包括所述代码片段集及对应的编程语言特征集,且代码校验指令的目的是校验代码管理系统中符合校验参考字符的代码段,计算校验参考字符与所述编程语言特征集中每个编程语言特征的相似度,并提取相似度高于相似阈值的编程语言特征,得到相似语言特征,可见上述实施过程可由于只涉及到校验参考字符与编程语言特征的相似度计算过程,相比传统方法大量减少计算量,故当完成代码搜素以后,获取代码管理系统中包括相似语言特征的代码片段,得到待校验代码段,对所述待校验代码段执行参数校验,得到参数校验结果,并将参数校验结果返回至用户。因此本发明提出的基于多代码情况下的代码参数校验方法、装置、电子设备及计算机可读存储介质,其主要目的在于对目标代码执行参数校验之前减少搜索目标代码的搜索时间。
[0143]
实施例2:
[0144]
如图2所示,是本发明一实施例提供的基于多代码情况下的代码参数校验装置的功能模块图。
[0145]
本发明所述基于多代码情况下的代码参数校验装置100可以安装于电子设备中。根据实现的功能,所述基于多代码情况下的代码参数校验装置100可以包括代码语料库构
建模块101、编程语言特征构建模块102、相似度计算模块103及代码校验模块104。本发明所述模块也可以称之为单元,是指一种能够被电子设备处理器所执行,并且能够完成固定功能的一系列计算机程序段,其存储在电子设备的存储器中。
[0146]
所述代码语料库构建模块101,用于获取代码片段集,其中代码片段集的代码片段包括api调用代码及自编写代码两类,根据所述代码片段集构建代码语料库;
[0147]
所述编程语言特征构建模块102,用于从所述代码语料库中提取得到描述代码的编程语言特征集;
[0148]
所述相似度计算模块103,用于启动代码管理系统并接收用户输入的代码校验指令,从所述代码校验指令中解析得到校验参考字符,其中,代码管理系统中包括所述代码片段集及对应的编程语言特征集,且代码校验指令的目的是校验代码管理系统中符合校验参考字符的代码段,计算校验参考字符与所述编程语言特征集中每个编程语言特征的相似度,并提取相似度高于相似阈值的编程语言特征,得到相似语言特征;
[0149]
所述代码校验模块104,用于获取代码管理系统中包括相似语言特征的代码片段,得到待校验代码段,对所述待校验代码段执行参数校验,得到参数校验结果,并将参数校验结果返回至用户。
[0150]
详细地,本发明实施例中所述基于多代码情况下的代码参数校验装置100中的所述各模块在使用时采用与上述的图1中所述的基于多代码情况下的代码参数校验方法一样的技术手段,并能够产生相同的技术效果,这里不再赘述。
[0151]
实施例3:
[0152]
如图3所示,是本发明一实施例提供的实现基于多代码情况下的代码参数校验方法的电子设备的结构示意图。
[0153]
所述电子设备1可以包括处理器10、存储器11、总线12和通信接口13,还可以包括存储在所述存储器11中并可在所述处理器10上运行的计算机程序,如基于多代码情况下的代码参数校验程序。
[0154]
其中,所述存储器11至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、移动硬盘、多媒体卡、卡型存储器(例如:sd或dx存储器等)、磁性存储器、磁盘、光盘等。所述存储器11在一些实施例中可以是电子设备1的内部存储单元,例如该电子设备1的移动硬盘。所述存储器11在另一些实施例中也可以是电子设备1的外部存储设备,例如电子设备1上配备的插接式移动硬盘、智能存储卡(smart media card,smc)、安全数字(secure digital,sd)卡、闪存卡(flash card)等。进一步地,所述存储器11还可以既包括电子设备1的内部存储单元也包括外部存储设备。所述存储器11不仅可以用于存储安装于电子设备1的应用软件及各类数据,例如基于多代码情况下的代码参数校验程序的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
[0155]
所述处理器10在一些实施例中可以由集成电路组成,例如可以由单个封装的集成电路所组成,也可以是由多个相同功能或不同功能封装的集成电路所组成,包括一个或者多个中央处理器(central processing unit,pu)、微处理器、数字处理芯片、图形处理器及各种控制芯片的组合等。所述处理器10是所述电子设备的控制核心(control unit),利用各种接口和线路连接整个电子设备的各个部件,通过运行或执行存储在所述存储器11内的程序或者模块(例如基于多代码情况下的代码参数校验程序等),以及调用存储在所述存储
器11内的数据,以执行电子设备1的各种功能和处理数据。
[0156]
所述总线可以是外设部件互连标准(peripheral component interconect,简称pi)总线或扩展工业标准结构(extended industry standard architecture,简称eisa)总线等。该总线可以分为地址总线、数据总线、控制总线等。所述总线被设置为实现所述存储器11以及至少一个处理器10等之间的连接通信。
[0157]
图3仅示出了具有部件的电子设备,本领域技术人员可以理解的是,图3示出的结构并不构成对所述电子设备1的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
[0158]
例如,尽管未示出,所述电子设备1还可以包括给各个部件供电的电源(比如电池),优选地,电源可以通过电源管理装置与所述至少一个处理器10逻辑相连,从而通过电源管理装置实现充电管理、放电管理、以及功耗管理等功能。电源还可以包括一个或一个以上的直流或交流电源、再充电装置、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。所述电子设备11还可以包括多种传感器、蓝牙模块、wii-fii模块等,在此不再赘述。
[0159]
进一步地,所述电子设备1还可以包括网络接口,可选地,所述网络接口可以包括有线接口和/或无线接口(如wi-ii接口、蓝牙接口等),通常用于在该电子设备11与其他电子设备之间建立通信连接。
[0160]
可选地,该电子设备1还可以包括用户接口,用户接口可以是显示器(dpay)、输入单元(比如键盘(yar)),可选地,用户接口还可以是标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是le显示器、液晶显示器、触控式液晶显示器以及le(orgalg-emgo,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在电子设备1中处理的信息以及用于显示可视化的用户界面。
[0161]
应该了解,所述实施例仅为说明之用,在专利申请范围上并不受此结构的限制。
[0162]
所述电子设备1中的所述存储器11存储的基于多代码情况下的代码参数校验程序是多个指令的组合,在所述处理器10中运行时,可以实现:
[0163]
获取代码片段集,其中代码片段集的代码片段包括api调用代码及自编写代码两类;
[0164]
根据所述代码片段集构建代码语料库;
[0165]
从所述代码语料库中提取得到描述代码的编程语言特征集;
[0166]
启动代码管理系统并接收用户输入的代码校验指令,从所述代码校验指令中解析得到校验参考字符,其中,代码管理系统中包括所述代码片段集及对应的编程语言特征集,且代码校验指令的目的是校验代码管理系统中符合校验参考字符的代码段;
[0167]
计算校验参考字符与所述编程语言特征集中每个编程语言特征的相似度,并提取相似度高于相似阈值的编程语言特征,得到相似语言特征;
[0168]
获取代码管理系统中包括相似语言特征的代码片段,得到待校验代码段;
[0169]
对所述待校验代码段执行参数校验,得到参数校验结果,并将参数校验结果返回至用户。
[0170]
具体地,所述处理器10对上述指令的具体实现方法可参考图1至图2对应实施例中相关步骤的描述,在此不赘述。
[0171]
进一步地,所述电子设备1集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。所述计算机可读存储介质可以是易失性的,也可以是非易失性的。例如,所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rm,ra-nymmoy)。
[0172]
本发明还提供一种计算机可读存储介质,所述可读存储介质存储有计算机程序,所述计算机程序在被电子设备的处理器所执行时,可以实现:
[0173]
获取代码片段集,其中代码片段集的代码片段包括api调用代码及自编写代码两类;
[0174]
根据所述代码片段集构建代码语料库;
[0175]
从所述代码语料库中提取得到描述代码的编程语言特征集;
[0176]
启动代码管理系统并接收用户输入的代码校验指令,从所述代码校验指令中解析得到校验参考字符,其中,代码管理系统中包括所述代码片段集及对应的编程语言特征集,且代码校验指令的目的是校验代码管理系统中符合校验参考字符的代码段;
[0177]
计算校验参考字符与所述编程语言特征集中每个编程语言特征的相似度,并提取相似度高于相似阈值的编程语言特征,得到相似语言特征;
[0178]
获取代码管理系统中包括相似语言特征的代码片段,得到待校验代码段;
[0179]
对所述待校验代码段执行参数校验,得到参数校验结果,并将参数校验结果返回至用户。
[0180]
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
[0181]
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
[0182]
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。
[0183]
最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。

技术特征:
1.一种基于多代码情况下的代码参数校验方法,其特征在于,所述方法包括:获取代码片段集,其中代码片段集的代码片段包括api调用代码及自编写代码两类;根据所述代码片段集构建代码语料库;从所述代码语料库中提取得到描述代码的编程语言特征集;启动代码管理系统并接收用户输入的代码校验指令,从所述代码校验指令中解析得到校验参考字符,其中,代码管理系统中包括所述代码片段集及对应的编程语言特征集,且代码校验指令的目的是校验代码管理系统中符合校验参考字符的代码段;计算校验参考字符与所述编程语言特征集中每个编程语言特征的相似度,并提取相似度高于相似阈值的编程语言特征,得到相似语言特征;获取代码管理系统中包括相似语言特征的代码片段,得到待校验代码段;对所述待校验代码段执行参数校验,得到参数校验结果,并将参数校验结果返回至用户。2.如权利要求1所述的基于多代码情况下的代码参数校验方法,其特征在于,所述获取代码片段集,包括:登录代码交流社区,其中代码交流社区中包括不同用户开放的不同软件项目;从所述代码交流社区中下载不同的软件项目,得到软件项目集,其中每个软件项目内均包括至少一行编程代码;对每个软件项目的编程代码执行分类,得到api调用代码及自编写代码;对不同的api调用代码及自编写代码均执行代码清洗操作,得到已清洗代码;汇总所有的已清洗代码,得到所述代码片段集。3.如权利要求2所述的基于多代码情况下的代码参数校验方法,其特征在于,所述对不同的api调用代码及自编写代码均执行代码清洗操作,得到已清洗代码,包括:获取弃用api集,剔除属于弃用api集的api调用代码,得到可用api代码;去除可用api代码及自编写代码中出现的无用注释,得到已清洗代码,其中无用注释包括:创建者及开发人员的个人介绍、日期信息及版权信息。4.如权利要求3所述的基于多代码情况下的代码参数校验方法,其特征在于,所述根据所述代码片段集构建代码语料库,包括:获取代码片段集中所涉及的编程语言,并确定每个编程语言的代码起始标识符;从代码片段集中依次提取每个代码片段,并根据所述代码起始标识符从代码片段中截取代码语料,得到原始代码语料集;对所述原始代码语料集中每个原始代码语料均执行语法分析,剔除不符合语法分析的异常语料,得到初级代码语料集,其中语法分析使用抽象语法树算法;根据所述初级代码语料集构建得到代码语料库。5.如权利要求4所述的基于多代码情况下的代码参数校验方法,其特征在于,所述根据所述初级代码语料集构建得到代码语料库,包括:获取每个初级代码语料中所有的代码注释;对所有的代码注释均执行文本清洗,得到已清洗注释;将已清洗注释执行结构化处理,得到结构化注释;从所述结构化注释中执行信息抽取,得到与初级代码语料对应的代码解释文本;
将代码解释文本与初级代码语料执行组合,得到组合代码语料,将每个组合代码语料均存储至预构建的数据库中,得到代码语料库。6.如权利要求5所述的基于多代码情况下的代码参数校验方法,其特征在于,所述从所述代码语料库中提取得到描述代码的编程语言特征集,包括:依次遍历出代码语料库中的组合代码语料,其中组合代码语料由代码解释文本及初级代码语料组成,对每个组合代码语料均执行如下操作:去除初级代码语料及代码解释文本中重复出现的文本及代码,其中重复出现的代码包括函数代码、类代码、实例化代码及对象化代码;对代码解释文本执行词性还原及词干提取,得到代码通用文本;将代码通用文本作为去重后的初级代码语料的标题,组合得到编程语言特征;汇总所有的编程语言特征,得到所述编程语言特征集。7.如权利要求6所述的基于多代码情况下的代码参数校验方法,其特征在于,所述代码校验指令的生成过程包括:启动代码管理系统,其中代码管理系统包括图形化的校验生成图标;接收用户点击所述校验生成图标,生成点击指令后触发校验指令生成程序;当运行校验指令生成程序时生成校验参考字符提示框;接收用户在所述校验参考字符提示框中输入的校验参考字符,其中校验参考字符提示框会根据用户每次输入的校验参考字符,执行智能化的输入提示;直至用户在校验参考字符提示框中输入完所有的校验参考字符以后,关闭校验参考字符提示框并继续运行校验指令生成程序,得到所述代码校验指令。8.如权利要求7所述的基于多代码情况下的代码参数校验方法,其特征在于,所述计算校验参考字符与所述编程语言特征集中每个编程语言特征的相似度,包括:其中,w,w
j
分别表示用户输入的校验参考字符集合,及编程语言特征集中第j个编程语言特征,w表示校验参考字符集合中的校验参考字符,sim(w,w
j
)表示校验参考字符与第j个编程语言特征的相似度,maxsim(w,w
j
)表示校验参考字符与第j个编程语言特征中每个代码通用文本及初级代码语料执行相似度计算后得到的相似度最大值,idf(w)表示校验参考字符的逆向文本频率。9.如权利要求4所述的基于多代码情况下的代码参数校验方法,其特征在于,所述对所述待校验代码段执行参数校验,得到参数校验结果,包括:从所述待校验代码段中提取出api调用代码,得到待校验api代码,其中api类型属于java类;对所述待校验api代码执行校验标注,得到校验标注符;利用校验标注符调用java的baseservice方法,实现代码的参数校验,得到参数校验结果。10.一种基于多代码情况下的代码参数校验装置,其特征在于,所述装置包括:代码语料库构建模块,用于获取代码片段集,其中代码片段集的代码片段包括api调用代码及自编写代码两类,根据所述代码片段集构建代码语料库;
编程语言特征构建模块,用于从所述代码语料库中提取得到描述代码的编程语言特征集;相似度计算模块,用于启动代码管理系统并接收用户输入的代码校验指令,从所述代码校验指令中解析得到校验参考字符,其中,代码管理系统中包括所述代码片段集及对应的编程语言特征集,且代码校验指令的目的是校验代码管理系统中符合校验参考字符的代码段,计算校验参考字符与所述编程语言特征集中每个编程语言特征的相似度,并提取相似度高于相似阈值的编程语言特征,得到相似语言特征;代码校验模块,用于获取代码管理系统中包括相似语言特征的代码片段,得到待校验代码段,对所述待校验代码段执行参数校验,得到参数校验结果,并将参数校验结果返回至用户。

技术总结
本发明涉及代码检测技术领域,揭露了一种基于多代码情况下的代码参数校验方法及装置,包括:根据代码片段集构建编程语言特征集,启动代码管理系统并接收用户输入的代码校验指令,从所述代码校验指令中解析得到校验参考字符,其中,代码管理系统中包括所述代码片段集及对应的编程语言特征集,计算校验参考字符与所述编程语言特征集中每个编程语言特征的相似度,并提取相似度高于相似阈值的编程语言特征,得到相似语言特征,获取代码管理系统中包括相似语言特征的代码片段,得到待校验代码段,对所述待校验代码段执行参数校验,得到参数校验结果。本发明主要目的在于对目标代码执行参数校验之前减少搜索目标代码的搜索时间。行参数校验之前减少搜索目标代码的搜索时间。行参数校验之前减少搜索目标代码的搜索时间。


技术研发人员:刘忠 刘彪 刘小毛
受保护的技术使用者:格莱杰(深圳)科技有限公司
技术研发日:2023.03.21
技术公布日:2023/7/18
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐