一种java代码结构化检索方法技术

技术编号:20944287 阅读:35 留言:0更新日期:2019-04-24 02:19
本发明专利技术公开了一种java代码结构化检索方法,包括以下步骤:步骤S01:对程序代码做结构化分析,整理出对应的若干className、methodName及methodBody,将结果保存为索引集合;步骤S02:输入需要寻找的文件的className及methodName中至少一项的部分或全部内容以及methodBody的部分或全部内容,对索引集合中对应内容进行结构化匹配,如匹配失败则进入步骤S03,如匹配成功则跳转至步骤S04;步骤S03:显示错误信息并重新跳转至步骤S02;步骤S04:显示结果报告并弹出包括检索内容的对应文件。本发明专利技术以结构化的形式建立数据库,并通过结构化的匹配完成检索,具有更快的检索速度,更高检索精度以及检索效率。

A structured retrieval method for Java code

The invention discloses a structured retrieval method of Java code, which includes the following steps: (1) Structured analysis of program code, sorting out corresponding className, methodName and methodBody, and saving the results as an index set; (2) Input part or all of at least one item in the className and methodName of the document to be searched and the part of methodBody. Structural matching of the corresponding content in the index set is carried out in part or in whole. If the matching fails, it enters 03 and jumps to 04 if the matching succeeds. 03: Display the error information and jump back to 102; 04: Display the result report and pop up the corresponding file including the retrieval content. The invention establishes a database in a structured form and completes retrieval by structured matching, which has faster retrieval speed, higher retrieval precision and retrieval efficiency.

【技术实现步骤摘要】
一种java代码结构化检索方法
本专利技术涉及一种检索方法,特别涉及一种java代码结构化检索方法。
技术介绍
代码检索作为再开发中代码复用的必要环节变得越来越重要。代码检索是在指定的代码库中搜索某代码片段。有效的代码检索能够很大程度上节约研发人员的研发时间,有效提高工作效率。然而随着开源项目数量的与日俱增,代码片段数量呈指数级增长,为研发人员获取相关代码片段带来巨大困难,如何快速高效地查询指定代码片段,得到了信息检索相关研究人员的广泛关注。代码检索任务与通用领域信息检索任务的区别主要体现在检索对象的不同,代码检索所涉及的对象是代码片段,而代码片段许多独有的特点,直接将现有检索技术应用于代码检索并不能得到很好的效果,如果能利用代码自身的特点来优化检索方法,将会大大提高检索效率。公开号CN102254026A的专利技术申请提供了一种程序函数的检索方法。该方法包括以下步骤:确定检索范围;输入目标程序函数的名称,并触发检索事件,则显示所述检索范围内包含目标程序函数的所有文件的绝对路径;选择要查看的包含目标程序函数的文件的绝对路径,则显示该文件的全部内容及其文件信息;触发查看目标程序函数事件,则在所述文件内容中突出显示目标程序函数的程序代码。该对比文件所提到的检索方法其本质上还是传统的检索形式,初步检索的范围过大,无法快速、精确地检索到目标代码,检索效率较低。
技术实现思路
针对现有技术检索范围过大,检索效率低的问题,本专利技术提供了一种java代码结构化检索方法,以结构化分析及结构化匹配的形式提高了检索精确度及效率。以下是本专利技术的技术方案。一种java代码结构化检索方法,包括以下步骤:步骤S01:对程序代码做结构化分析,整理出对应的若干className、methodName及methodBody,将结果保存为索引集合;步骤S02:输入需要寻找的文件的className及methodName中至少一项的部分或全部内容以及methodBody的部分或全部内容,对索引集合中对应内容进行结构化匹配,如匹配失败则进入步骤S03,如匹配成功则跳转至步骤S04;步骤S03:显示错误信息并重新跳转至步骤S02;步骤S04:显示结果报告并弹出包括检索内容的对应文件。进一步的,所述步骤S01中,结构化分析的过程为:步骤A1:取源代码集合S的一个元素s,利用java反射技术分析元素s得到若干个className,以及每个className对应的若干个methodName,将每个methodName及其对应的className保存为元素m,若干元素m组成集合M;步骤A2:从集合M中取出一个元素m,与源代码集合S中对应元素s进行多次匹配,将每次结果标记为mb,汇总结果保存到索引集合MB,所述每个元素mb包括一组className、methodName及methodBody;步骤A3:重复执行步骤A1及A2,直到源代码集合S中所有元素均完成分析及匹配。进一步的,所述步骤A2中,匹配过程为:在代码元素s中找到元素m中methodName对应的字符串,将该字符串之后的第一个“{”标记为methodBodyBegin,再将最后一个“}”标记为methodBodyEnd,然后根据methodBodyBegin及methodBodyEnd对源代码文件进行子字符串截取,得到mb。进一步的,所述最后一个“}”的寻找方法为:创建一个初始值为零的变量i,然后在第一个“{”后依次向下寻找,每寻找到一个“{”便使变量i加一,每寻找到一个“}”便使变量i减一,当变量i的值为零时,寻找到的“}”就是最后一个“}”。进一步的,所述步骤S02中,结构化匹配过程为:根据输入内容对索引集合中元素的className及methodName进行匹配,筛选出包含对应内容的元素,对包含对应内容的元素的methodBody进行匹配,寻找到具体结果所在的位置,其中该过程任意一次匹配没有成功则认定为匹配失败。进一步的,所述步骤S03中,错误信息包括:匹配失败时所在的匹配类型。进一步的,所述步骤S04中,结果报告包括:匹配所用时间及目标文件的目录。本专利技术以结构化的形式建立数据库,并通过结构化的匹配完成检索,具有更快的检索速度,更高检索精度以及检索效率。附图说明如图1所示为本专利技术的整体流程图。具体实施方式以下结合说明书附图对本技术方案作进一步阐述。实施例:如图1所示为一种java代码结构化检索方法,包括以下步骤:步骤S01:对程序代码做结构化分析,整理出对应的若干className、methodName及methodBody,将结果保存为索引集合;步骤S02:输入需要寻找的文件的className及methodName中至少一项的部分或全部内容以及methodBody的部分或全部内容,对索引集合中对应内容进行结构化匹配,如匹配失败则进入步骤S03,如匹配成功则跳转至步骤S04;步骤S03:显示错误信息并重新跳转至步骤S02;步骤S04:显示结果报告并弹出包括检索内容的对应文件。本实施例中,所述步骤S01中,结构化分析的过程为:步骤A1:取源代码集合S的一个元素s,利用java反射技术分析元素s得到若干个className,以及每个className对应的若干个methodName,将每个methodName及其对应的className保存为元素m,若干元素m组成集合M;步骤A2:从集合M中取出一个元素m,与源代码集合S中对应元素s进行多次匹配,将每次结果标记为mb,汇总结果保存到索引集合MB,所述每个元素mb包括一组className、methodName及methodBody;步骤A3:重复执行步骤A1及A2,直到源代码集合S中所有元素均完成分析及匹配。本实施例中,所述步骤A2中,匹配过程为:在代码元素s中找到元素m中methodName对应的字符串,将该字符串之后的第一个“{”标记为methodBodyBegin,再将最后一个“}”标记为methodBodyEnd,然后根据methodBodyBegin及methodBodyEnd对源代码文件进行子字符串截取,得到mb。本实施例中,所述最后一个“}”的寻找方法为:创建一个初始值为零的变量i,然后在第一个“{”后依次向下寻找,每寻找到一个“{”便使变量i加一,每寻找到一个“}”便使变量i减一,当变量i的值为零时,寻找到的“}”就是最后一个“}”。本实施例中,所述步骤S02中,结构化匹配过程为:根据输入内容对索引集合中元素的className及methodName进行匹配,筛选出包含对应内容的元素,对包含对应内容的元素的methodBody进行匹配,寻找到具体结果所在的位置,其中该过程任意一次匹配没有成功则认定为匹配失败。本实施例中,所述步骤S03中,错误信息包括:匹配失败时所在的匹配类型。本实施例中,所述步骤S04中,结果报告包括:匹配所用时间及目标文件的目录。本实施例以结构化的形式建立数据库,并通过结构化的匹配完成检索,具有更快的检索速度,更高检索精度以及检索效率。应当说明的是,该具体实施例仅用于对技术方案的进一步阐述,不用于限定该技术方案的范围,任何基于此技术方案的修改、等同替换和改进等都应视为在本专利技术的保护范围内。本文档来自技高网...

【技术保护点】
1.一种java代码结构化检索方法,其特征在于,包括以下步骤:步骤S01:对程序代码做结构化分析,整理出对应的若干className、methodName及methodBody,将结果保存为索引集合;步骤S02:输入需要寻找的文件的className及methodName中至少一项的部分或全部内容以及methodBody的部分或全部内容,对索引集合中对应内容进行结构化匹配,如匹配失败则进入步骤S03,如匹配成功则跳转至步骤S04;步骤S03:显示错误信息并重新跳转至步骤S02;步骤S04:显示结果报告并弹出包括检索内容的对应文件。

【技术特征摘要】
1.一种java代码结构化检索方法,其特征在于,包括以下步骤:步骤S01:对程序代码做结构化分析,整理出对应的若干className、methodName及methodBody,将结果保存为索引集合;步骤S02:输入需要寻找的文件的className及methodName中至少一项的部分或全部内容以及methodBody的部分或全部内容,对索引集合中对应内容进行结构化匹配,如匹配失败则进入步骤S03,如匹配成功则跳转至步骤S04;步骤S03:显示错误信息并重新跳转至步骤S02;步骤S04:显示结果报告并弹出包括检索内容的对应文件。2.根据权利要求1所述的一种java代码结构化检索方法,其特征在于,所述步骤S01中,结构化分析的过程为:步骤A1:取源代码集合S的一个元素s,利用java反射技术分析元素s得到若干个className,以及每个className对应的若干个methodName,将每个methodName及其对应的className保存为元素m,若干元素m组成集合M;步骤A2:从集合M中取出一个元素m,与源代码集合S中对应元素s进行多次匹配,将每次结果标记为mb,汇总结果保存到索引集合MB,所述每个元素mb包括一组className、methodName及methodBody;步骤A3:重复执行步骤A1及A2,直到源代码集合S中所有元素均完成分析及匹配。3.根据权利要求2所述的一种java...

【专利技术属性】
技术研发人员:宓建栋
申请(专利权)人:杭州仟金顶信息科技有限公司
类型:发明
国别省市:浙江,33

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

1