当前位置: 首页 > 专利查询>任志颖专利>正文

代码库文件生成、代码搜索、联结、优化以及移植方法技术

技术编号:20363220 阅读:32 留言:0更新日期:2019-02-16 16:40
本发明专利技术公开了一种代码库文件生成、代码搜索、联结、优化以及移植方法,首先生成各元代码段的库文件,由库文件存储各元代码段的特征信息,并且将库文件中特征信息提取出来后与库文件地址一起存储到摘要文件中,用户通过检索摘要文件即可得到库文件的代码段,实现代码的推荐,然后根据用户的设置将用户选定的代码段添加到用户编写的源代码,实现代码的联结,在此基础上还可实现代码的自动优化、辅助程序移植的应用。本发明专利技术得到的指向其库文件的摘要文件仅仅保存了元代码段简化后的特征信息,如此只对代码段的输入\输出参数类型以及输出结果等进行分析,无需对代码段进行全文语意分析,概括了元代码段内容的同时减少了特征的计算量。

【技术实现步骤摘要】
代码库文件生成、代码搜索、联结、优化以及移植方法
本专利技术涉及计算机领域,特别涉及一种代码库文件生成、代码搜索、联结、优化以及移植方法。
技术介绍
编程,是让计算机为解决某个问题,而使用某种程序设计语言编写程序代码,并最终得到结果的过程。以特定方式辅助开发人员编程,减少开发人员开发时间的方法叫作辅助编程方法。目前的辅助编程方法多数为特殊关键词突出显示、语句联想输入、错误提示。相关技术只能辅助用户生成单条语句,开发人员通常仍需自行将某一过程转换为代码语句以实现,且必须逐条语句地编写,工作量繁杂且往往还是重复编写已有的代码。在辅助编程方法中的代码搜索部分,多数基于自然语言描述进行检索,并且代码依靠人工收录导致耗时久以致往往只能检索到陈旧的代码段,基于自然语言描述进行检索也为代码的录入和开发人员的搜索造成了障碍,自然语言也很难在现有搜索技术上精确同时简要地概括代码段的运行方式和逻辑,同时搜索得到的结果仍需人工复制下来再人工修改语句添加到用户的代码。如何辅助开发人员减少开发人员工作量,高效地辅助用户添加代码段是本
需要解决的问题。
技术实现思路
本专利技术的第一目的在于克服现有技术的缺点与不足,提供一种代码库文件方法,该方法所生产的库文件能够概括代码段内容的同时减少了生成代码特征的计算量。本专利技术的第二目的在于提供一种基于上述代码库文件生成方法基础上实现的代码搜索方法,该搜索方法具有代码搜索速度快以及准确的优点。本专利技术的第三目的在于提供一种基于上述代码库文件生成方法基础上实现的代码自动联结方法,该方法使得用户进行简单操作后即可将用户选定的代码段添加到用户输入的源代码中。本专利技术的第四目的在于提供一种基于上述代码库文件生成方法基础上实现的代码优化方法,该方法能够将用户选定的代码段替换为执行速度更快的代码段,提升了代码质量和运行性能。本专利技术的第五目的在于提供一种基于上述代码库文件生成方法基础上实现的代码辅助方法,该方法能够减少用户对复杂结构代码段的分析,用户只需要简单的操作即可实现代码的移植,有效节省了用户的编程时间。本专利技术的第一目的通过下述技术方案实现:一种代码库文件生成方法,步骤如下:步骤S1、首先获取到源代码的编程语言及环境信息;步骤S2、根据源代码的编程语言及环境信息载入对应语言的切片规则文件,然后根据切片规则文件将源代码划分为具有完整功能的各独立代码段;针对于上述获取到的各独立代码段,检索其中是否有被调用的外部代码,若有,则将外部代码添加到元代码段中,最终生成无调用外部代码的各元代码段;步骤S3、针对各元代码段,首先分别生成一个库文件,将各元代码段及各元代码段对应的源代码地址和语言及环境信息存储到各元代码段对应的库文件中;同时,针对于各元代码段,检索元代码段的入口,将元代码段中入口到函数调用部分的语句生成对应的调用语句;将上述生成调用语句添加到库文件中;同时,针对于各元代码段,对其进行扩增生成测试代码,同时生成包括各组测试数据的测试数据列表,然后在测试代码中输入测试数据列表中的各组测试数据,通过测试代码运行后得到对应的各组测试结果,将上述各组测试结果添加到各元代码段对应的库文件中;同时,针对于各元代码段,根据语法获取其中的输入\输出语句,标记该语句为入口/出口,从输入输出语句中提取出输入\输出参数类型以及函数名,然后将上述提取到的各元代码段的输入\输出参数类型和函数名存储到各元代码段对应的库文件中;并且获取元代码段中的标签,将元代码段中的标签存储到库文件中;步骤S4、针对于步骤S3获取到的各库文件,分别提取其中存储的语言及环境信息、输入\输出参数类型、函数名、各组测试结果和标签;针对各库文件,分别生成一个指向其的摘要文件,将各库文件上述提取的内容作为摘要内容存储在指向其的摘要文件中,并且将各库文件的地址添加到指向其的摘要文件中。优选的,还包括如下步骤:步骤S5、针对于各摘要文件,定期访问其中存储的库文件地址,确定是否能访问到该库文件及访问到的该库文件中提取出用于作为摘要内容的数据是否有更新;若未访问到该库文件,则查询该库文件的新地址,若不能查到该库文件新地址,则删除摘要文件,若查询到该库文件的新地址,则将摘要文件中的地址替换为该库文件的新地址;若该库文件提取出用于作为摘要内容的数据有更新,则重新提取出该库文件存储的用于作为摘要内容的数据,将其指向的摘要文件中的摘要内容替换为上述重新提取出的数据。优选的:还包括如下步骤:针对步骤S3获取到的库文件进行查重以及合并处理,具体为:步骤S31、首先筛选出所存储的输入类型、输出类型、测试结果相同的摘要文件;步骤S32、针对S31所筛选出的摘要文件,在其中添加扩增测试数据,然后调用其指向的库文件中的测试代码,将上述各组扩增测试数据依次输入到测试代码中进行测试后分别依次获取到各组扩增测试结果,当上述获取到的扩增测试结果的组数达到一定值,则停止测试,并且将上述各组扩增测试结果添加到摘要文件;步骤S33、针对S32获取到的指向各库文件的各摘要文件,匹配各摘要文件中的各组扩增测试结果,从中筛选出各组扩增测试结果对应相同的摘要文件提取出来;步骤S34、针对于步骤S33筛选出的摘要文件,获取其指向的各库文件,根据语意匹配上述各库文件中元代码段,将匹配后语意相似度大于一定值的库文件视为重复库文件;步骤S35、对于保存库文件的终端:针对于步骤S34获取到的重复库文件,保留调用时间最少和属性为不允许删除的库文件;然后在终端允许进行标签添加的情况下将其他库文件的标签添加到被保留库文件中,将被保留的库文件的地址添加到其他库文件,并且删除其它重复库文件中除被保留的库文件地址外的内容,使得其它重复库文件仅含被保留库文件地址;其中,上述仅含被保留库文件地址的其它重复库文件及指向其的摘要文件的保存时间为永久保存或暂时保存;其中,当为暂时保存时,暂时保存的时间为库文件被定期访问的最长时间间隔,在超过上述时间间隔后,其它重复库文件将被删除;在上述时间间隔内,当通过指向其它重复库文件的摘要文件访问其它重复库文件时,将只能检索到被保留库文件的地址,此时该指向其它重复库文件的摘要文件中的库文件地址替换成被保留库文件的地址,从而实现该指向其他库文件指向的摘要文件的更新;其中,针对于被保留的库文件,当通过指向其的摘要文件访问该库文件时,若得知该库文件中的标签增多,则将增多的标签添加到指向其的摘要文件中;其中,在库文件访问过程中,若通过摘要文件中的库文件地址无法访问到库文件时,则向终端发出查找请求,终端查找摘要信息与该摘要文件相同的其他摘要文件,查找到符合的摘要文件后将该摘要文件中的库文件地址替换为上述查找到符合的摘要文件中的库文件地址。优选的,步骤S1中获取到各源代码的编程语言及环境信息的具体过程如下:步骤S11、针对于源代码,首先检索源代码的注释,确定中有无记录语言及环境信息的字符串,若有,则从中直接读取到语言及环境信息;若无,则进入步骤S12;步骤S12、从源代码起始开始读取,读取到一个个字符串;步骤S13、针对于当前获取到的字符串,查找环境判断库中的各语言/环境判断文件,判断是否有语言/环境判断文件包括该字符串;若是,则进入步骤S14;若否,则进入步骤S15;步骤S14、从当前读取到的字符串所在语本文档来自技高网...

【技术保护点】
1.一种代码库文件生成方法,其特征在于,步骤如下:步骤S1、首先获取到源代码的编程语言及环境信息;步骤S2、根据源代码的编程语言及环境信息载入对应语言的切片规则文件,然后根据切片规则文件将源代码划分为具有完整功能的各独立代码段;针对于上述获取到的各独立代码段,检索其中是否有被调用的外部代码,若有,则将外部代码添加到元代码段中,最终生成无调用外部代码的各元代码段;步骤S3、针对各元代码段,首先分别生成一个库文件,将各元代码段及各元代码段对应的源代码地址和语言及环境信息存储到各元代码段对应的库文件中;同时,针对于各元代码段,检索元代码段的入口,将元代码段中入口到函数调用部分的语句生成对应的调用语句;将上述生成调用语句添加到库文件中;同时,针对于各元代码段,对其进行扩增生成测试代码,同时生成包括各组测试数据的测试数据列表,然后在测试代码中输入测试数据列表中的各组测试数据,通过测试代码运行后得到对应的各组测试结果,将上述各组测试结果添加到各元代码段对应的库文件中;同时,针对于各元代码段,根据语法获取其中的输入\输出语句,标记该语句为入口/出口,从输入输出语句中提取出输入\输出参数类型以及函数名,然后将上述提取到的各元代码段的输入\输出参数类型和函数名存储到各元代码段对应的库文件中;并且获取元代码段中的标签,将元代码段中的标签存储到库文件中;步骤S4、针对于步骤S3获取到的各库文件,分别提取其中存储的语言及环境信息、输入\输出参数类型、函数名、各组测试结果和标签;针对各库文件,分别生成一个指向其的摘要文件,将各库文件上述提取的内容作为摘要内容存储在指向其的摘要文件中,并且将各库文件的地址添加到指向其的摘要文件中。...

【技术特征摘要】
1.一种代码库文件生成方法,其特征在于,步骤如下:步骤S1、首先获取到源代码的编程语言及环境信息;步骤S2、根据源代码的编程语言及环境信息载入对应语言的切片规则文件,然后根据切片规则文件将源代码划分为具有完整功能的各独立代码段;针对于上述获取到的各独立代码段,检索其中是否有被调用的外部代码,若有,则将外部代码添加到元代码段中,最终生成无调用外部代码的各元代码段;步骤S3、针对各元代码段,首先分别生成一个库文件,将各元代码段及各元代码段对应的源代码地址和语言及环境信息存储到各元代码段对应的库文件中;同时,针对于各元代码段,检索元代码段的入口,将元代码段中入口到函数调用部分的语句生成对应的调用语句;将上述生成调用语句添加到库文件中;同时,针对于各元代码段,对其进行扩增生成测试代码,同时生成包括各组测试数据的测试数据列表,然后在测试代码中输入测试数据列表中的各组测试数据,通过测试代码运行后得到对应的各组测试结果,将上述各组测试结果添加到各元代码段对应的库文件中;同时,针对于各元代码段,根据语法获取其中的输入\输出语句,标记该语句为入口/出口,从输入输出语句中提取出输入\输出参数类型以及函数名,然后将上述提取到的各元代码段的输入\输出参数类型和函数名存储到各元代码段对应的库文件中;并且获取元代码段中的标签,将元代码段中的标签存储到库文件中;步骤S4、针对于步骤S3获取到的各库文件,分别提取其中存储的语言及环境信息、输入\输出参数类型、函数名、各组测试结果和标签;针对各库文件,分别生成一个指向其的摘要文件,将各库文件上述提取的内容作为摘要内容存储在指向其的摘要文件中,并且将各库文件的地址添加到指向其的摘要文件中。2.根据权利要求1所述的代码库文件生成方法,其特征在于,还包括如下步骤:步骤S5、针对于各摘要文件,定期访问其中存储的库文件地址,确定是否能访问到该库文件及访问到的该库文件中提取出用于作为摘要内容的数据是否有更新;若未访问到该库文件,则查询该库文件的新地址,若不能查到该库文件新地址,则删除摘要文件,若查询到该库文件的新地址,则将摘要文件中的地址替换为该库文件的新地址;若该库文件提取出用于作为摘要内容的数据有更新,则重新提取出该库文件存储的用于作为摘要内容的数据,将其指向的摘要文件中的摘要内容替换为上述重新提取出的数据。3.根据权利要求1所述的代码库文件生成方法,其特征在于:还包括如下步骤:针对步骤S3获取到的库文件进行查重以及合并处理,具体为:步骤S31、首先筛选出所存储的输入类型、输出类型、测试结果相同的摘要文件;步骤S32、针对S31所筛选出的摘要文件,在其中添加扩增测试数据,然后调用其指向的库文件中的测试代码,将上述各组扩增测试数据依次输入到测试代码中进行测试后分别依次获取到各组扩增测试结果,当上述获取到的扩增测试结果的组数达到一定值,则停止测试,并且将上述各组扩增测试结果添加到摘要文件;步骤S33、针对S32获取到的指向各库文件的各摘要文件,匹配各摘要文件中的各组扩增测试结果,从中筛选出各组扩增测试结果对应相同的摘要文件提取出来;步骤S34、针对于步骤S33筛选出的摘要文件,获取其指向的各库文件,根据语意匹配上述各库文件中元代码段,将匹配后语意相似度大于一定值的库文件视为重复库文件;步骤S35、对于保存库文件的终端:针对于步骤S34获取到的重复库文件,保留调用时间最少和属性为不允许删除的库文件;然后在终端允许进行标签添加的情况下将其他库文件的标签添加到被保留库文件中,将被保留的库文件的地址添加到其他库文件,并且删除其它重复库文件中除被保留的库文件地址外的内容,使得其它重复库文件仅含被保留库文件地址;其中,上述仅含被保留库文件地址的其它重复库文件及指向其的摘要文件的保存时间为永久保存或暂时保存;其中,当为暂时保存时,暂时保存的时间为库文件被定期访问的最长时间间隔,在超过上述时间间隔后,其它重复库文件将被删除;在上述时间间隔内,当通过指向其它重复库文件的摘要文件访问其它重复库文件时,将只能检索到被保留库文件的地址,此时该指向其它重复库文件的摘要文件中的库文件地址替换成被保留库文件的地址,从而实现该指向其他库文件指向的摘要文件的更新;其中,针对于被保留的库文件,当通过指向其的摘要文件访问该库文件时,若得知该库文件中的标签增多,则将增多的标签添加到指向其的摘要文件中;其中,在库文件访问过程中,若通过摘要文件中的库文件地址无法访问到库文件时,则向终端发出查找请求,终端查找摘要信息与该摘要文件相同的其他摘要文件,查找到符合的摘要文件后将该摘要文件中的库文件地址替换为上述查找到符合的摘要文件中的库文件地址。4.根据权利要求1所述的代码库文件生成方法,其特征在于,步骤S1中获取到各源代码的编程语言及环境信息的具体过程如下:步骤S11、针对于源代码,首先检索源代码的注释,确定中有无记录语言及环境信息的字符串,若有,则从中直接读取到语言及环境信息;若无,则进入步骤S12;步骤S12、从源代码起始开始读取,读取到一个个字符串;步骤S13、针对于当前获取到的字符串,查找环境判断库中的各语言/环境判断文件,判断是否有语言/环境判断文件包括该字符串;若是,则进入步骤S14;若否,则进入步骤S15;步骤S14、从当前读取到的字符串所在语言/环境判断文件中读取到语言及环境信息,并且反馈该语言及环境信息;然后判断当前反馈的所有语言及环境信息中是否满足以下第一条件和第二条件,第一条件:当前反馈的所有语言及环境信息中某种语言信息被反馈的次数超过y次,第二条件,当前反馈的所有语言及环境信息中某种环境信息被反馈的次数超过q次;若均满足第一条件和第二条件,则将源代码的语言判断为该种语言信息,将源代码的环境判断为该种环境信息;若只满足第一条件,而未满足第二条件,则将源代码的语言判定为该种语言信息,并且结束源代码语言信息的获取,然后进入步骤S15;若只满足第二条件,而为满足第一条件,则将源代码的环境判断为该种环境信息,并且结束源代码环境信息的获取,然后进入步骤S15;若均不满足第一条件和第二条件;则进入步骤S15;步骤S15、判断当前读取到的字符串是否为源代码最后一个字符串,若是,则进入步骤S17;若否,则进入步骤S16;步骤S16、读取源代码中的下一个字符串,作为当前读取到的字符串,然后进入步骤S13;步骤S17、获取步骤S14反馈的所有语言及环境信息;当源代码的语言信息还未被判断出时,则将被反馈次数最多的语言信息作为源代码的语言信息;当源代码的环境信息还未被判断出时,则将被反馈次数最多的环境信息作为源代码的环境信息。5.根据权利要求1所述的代码库文件生成方法,其特征在于,所述步骤S3针对于各元代码段,对其进行扩增生成测试代码的方法采用模板添加法、剔除法或增补法,其中:采用模板添加法得到测试代码的步骤如下:步骤1.根据元代码段参数类型和元代码段的语言及环境信息筛选模板;步骤2:检索元代码段,通过关键字和语意分析识别出元代码段的入口/出口并标记;步骤3:将被标记的语句拆分为字符串,将拆分出来的字符串对上述筛选的模板的入口/出口关键字进行匹配,选出匹配项最多的模板,匹配模板完成;将元代码段添加到上述选出的模板,得到测试代码,并且存入到对应库文件中;采用剔除法得到测试代码的步骤如下:首先生成源代码的副本,将对应要生成测试代码的元代码段定义为目标代码段;在源代码的副本中,将上述目标代码段语句标记为保留语句,并且将其他元代码段删除,同时删除调用其他元代码段的语句;检索目标代码段调用语句得到其中的输入变量,通过输入变量名检索保留在目标代码段调用语句中调用主体函数前使输入变量相关联的语句以及定义输入变量的语句,标记为保留语句,删除包含输入变量名的其余语句;同时删除其余无关语句;采用边删变debug的办法删除源代码的副本中未被标记为保留的语句,将最后得到的语句最少并且完整的代码作为测试代码,并且存入到对应的库文件中;采用增补法得到测试代码的步骤如下:步骤S3a、根据元代码段参数类型和元代码段的语言及环境信息筛选模板;步骤S3b、操作1:根据元代码段参数类型和元代码段的语言及环境信息筛选模板;操作2:检索元代码段,通过关键字和语意分析识别出元代码段的入口/出口并标记;操作3:将被标记的语句拆分为字符串,将拆分出来的字符串对上述筛选的模板的入口/出口关键字进行匹配,选出匹配项最多的模板,匹配模板完成;步骤S3c、将元代码段添加到步骤S3b选出的模板,得到测试代码;步骤S3d、采用步骤S3c得到的测试代码对输入的测试数据进行测试,若测试无法通过;则执行以下步骤:步骤S3d1、生成源代码的副本,将对应要生成测试代码的元代码段定义为目标代码段;在源代码的副本中,将上述目标代码段语句标记为保留语句,并且将其他元代码段删除,同时删除调用其他元代码段的语句;步骤S3d2、检索目标代码段调用语句得到其中的输入变量,通过输入变量名检索保留在目标代码段调用语句中调用主体函数前使输入变量相关联的语句以及定义输入变量的语句,标记为保留语句,删除包含输入变量名的其余语句;同时删除其余无关语句;步骤S3d3、针对于源代码的副本中未被保留的语句,进行关联性分析,将相互关联的语句归纳到一起,作为一个部分代码;步骤S3d4、针对于上述得到的各个部分代码,首先选取其中一个部分代码,作为当前部分代码;步骤S3d5、将当前部分代码添加到步骤S3b筛选出的模板中,然后将元代码段添加到上述获取到的模板中,得到测试代码;针对于上述测试代码,输入测试数据进行一次测试,若测试通过,则将上述测试代码作为最终测试代码,若测试不通过,进入步骤S3d6;步骤S3d6、选取下一个部分代码作为当前部分代码,然后执行步骤S3d5,直到得到的测试代码输入测试数据进行一次测试后能够通过,并且将上述通过测试后的测试代码存入到对应库文件中;所述步骤S3中,针对于各元代码,在生成调用语句时,首先判断其中函数调用语句是否有数据关联性语句;若是,则首先在元代码段中的函数调用语句前添加该数据关联性语句,然后检索元代码段的入口,将优化代码段中入口到函数调用部分的语句生成对应调用语句;若否,则直接检索元代码段的入口,将元代码段中入口到函数调用部分的语句生成对应调用语句。6.一种代码搜索方法,其特征在于,步骤如下...

【专利技术属性】
技术研发人员:任志颖张千李旭东
申请(专利权)人:任志颖张千
类型:发明
国别省市:辽宁,21

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

1