本发明涉及代码检索,尤其涉及一种基于抽象语法树的mom业务代码检索与推荐方法、计算机程序产品以及终端。
背景技术:
1、制造运营管理(manufacturing operations management,mom)系统在现代制造企业中扮演着至关重要的角色。mom系统涵盖了从生产计划、调度、执行到质量管理、设备维护等各个环节,旨在提高生产效率、确保产品质量和优化资源利用。在iso62264标准下,mom系统的功能被明确分类,以标准化的方式定义和描述制造运营活动。然而,随着mom系统的不断发展和功能的扩展,代码库也变得日益庞大和复杂。不同项目之间常常存在大量功能相似的代码,这不仅导致代码冗余,还增加了系统维护和升级的难度。如何对大量mom业务代码进行分析,检索功能相似的代码片段是目前亟需解决的技术问题。
技术实现思路
1、本发明的目的在于克服现有技术的问题,提供了基于抽象语法树的mom业务代码检索与推荐方法、计算机程序产品以及终端。
2、本发明的目的是通过以下技术方案实现:基于抽象语法树的mom业务代码检索与推荐方法,该方法包括以下步骤:
3、获取mom项目的源代码,标注源代码的业务域,并将源代码转换为第一抽象语法树;
4、使用单个字符串存储第一抽象语法树的结构信息,遍历整个第一抽象语法树并记录节点类型的名称,形成第一字符串序列,根据第一字符串序列得到对应的第一多元素序列,将第一多元素序列与业务域进行组合得到(业务域,第一多元素序列)二元组,并构建第一多元素序列的倒排索引;
5、将搜索函数转换为第二抽象语法树,使用单个字符串存储第二抽象语法树的结构信息,遍历整个第二抽象语法树并记录节点类型的名称,形成第二字符串序列,根据第二字符串序列得到对应的第二多元素序列;将第二多元素序列与业务域进行组合得到(业务域,第二多元素序列)二元组,计算(业务域,第二多元素序列)二元组的第二哈希值,将第二哈希值作为查询键查询倒排索引,得到目标函数的候选队列;
6、将搜索函数与候选队列中的目标函数进行相似度对比,根据相似度结果推荐与搜索函数匹配的一个或多个目标函数,以此实现业务代码检索与推荐。
7、在一示例中,构建第一多元素序列的倒排索引,包括:
8、使用(业务域,第一多元素序列)二元组的哈希值作为索引键,对应的方法id作为索引值,以此查询包括相同多元素序列的代码块;所述方法id为由项目、文件、方法确定唯一值;
9、当所有多元素序列都建立索引时,实现mom业务代码的倒排索引建立。
10、在一示例中,在得到目标函数的候选队列后,对选队列中的目标函数进行筛选处理:
11、计算搜索函数与候选队列中目标函之间的二元组的相似性,若相似性小于阈值,将目标函数从候选队列中移除。
12、在一示例中,计算搜索函数与候选队列中目标函之间的二元组的相似性之前,还包括:
13、将搜索函数、目标函数的函数id作为键,将二元组作为值;
14、使用函数id进行查找,获取函数对应的二元组。
15、在一示例中,在将搜索函数与候选队列中的目标函数进行相似度对比之前,还包括将第一抽象语法树和/或第二抽象语法树进行拆分,包括以下子步骤:
16、将表现为叶子节点或者子树的顺序语句保留在原始第一抽象语法树和/或第二抽象语法树中;和/或,
17、将复杂语句从原始第一抽象语法树和/或第二抽象语法树中进行分离,实现结构树的构建;分离出的复杂语句作为独立的子树进行处理,实现语句树的构建;所述复杂语句包括判断语句、循环语句。
18、在一示例中,将搜索函数与候选队列中的目标函数进行相似度对比,包括:
19、分别遍历目标函数、搜索函数的子树得到对应的子树节点序列;
20、计算搜索函数、目标函数的子树节点序列的最长公共子序列,得到子树的相似度,将子树相似度之和作为最终的相似度分数,若相似度分数大于阈值,搜索函数与当前目标函数匹配。
21、需要进一步说明的是,上述方法各示例对应的技术特征可以相互组合或替换构成新的技术方案。
22、本发明还包括一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述任一示例或多个示例组合形成的所述基于抽象语法树的mom业务代码检索与推荐方法的步骤。
23、本发明还包括一种存储介质,其上存储有计算机指令,所述计算机指令运行时执行上述任一示例或多个示例组成形成的所述基于抽象语法树的mom业务代码检索与推荐方法的步骤。
24、本发明还包括一种终端,包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的计算机指令,所述处理器运行所述计算机指令时执行上述任一示例或多个示例形成的所述的基于抽象语法树的mom业务代码检索与推荐方法的步骤。
25、与现有技术相比,本发明有益效果是:
26、本发明通过对大量mom业务代码进行分析,通过n-grams(多元素序列)、业务域构成的二元组筛选具有相同的子序列的ast(abstract syntax tree,抽象语法树)节点序列,得到目标函数的候选队列,再计算搜索函数与候选队列中的目标函数的相似度,进而实现对功能相似的业务代码的检索,以此快速定位到实现特定业务需求的代码片段,从而提高开发效率和代码的可维护性。
1.基于抽象语法树的mom业务代码检索与推荐方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的基于抽象语法树的mom业务代码检索与推荐方法,其特征在于,构建第一多元素序列的倒排索引,包括:
3.根据权利要求1所述的基于抽象语法树的mom业务代码检索与推荐方法,其特征在于,在得到目标函数的候选队列后,对选队列中的目标函数进行筛选处理:
4.根据权利要求3所述的基于抽象语法树的mom业务代码检索与推荐方法,其特征在于,计算搜索函数与候选队列中目标函之间的二元组的相似性之前,还包括:
5.根据权利要求1所述的基于抽象语法树的mom业务代码检索与推荐方法,其特征在于,在将搜索函数与候选队列中的目标函数进行相似度对比之前,还包括将第一抽象语法树和/或第二抽象语法树进行拆分,包括以下子步骤:
6.根据权利要求5所述的基于抽象语法树的mom业务代码检索与推荐方法,其特征在于,将搜索函数与候选队列中的目标函数进行相似度对比,包括:
7.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1-6任一项所述的基于抽象语法树的mom业务代码检索与推荐方法的步骤。
8.一种终端,包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的计算机指令,其特征在于,所述处理器运行所述计算机指令时执行权利要求1-6任意一项所述的基于抽象语法树的mom业务代码检索与推荐方法的步骤。
