获得系统代码修改后受影响的对外提供服务接口的方法技术方案

技术编号:28505371 阅读:25 留言:0更新日期:2021-05-19 22:57
本发明专利技术涉及软件开发和软件测试领域,尤其是获得系统代码修改后受影响的对外提供服务接口的方法,包括:步骤1:标识出系统对外提供服务接口方法;步骤2:获得系统代码的不同版本之间修改代码后受影响的方法列表及对外提供服务方法列表;步骤3:解析代码的字节码获得方法的调用链路;步骤4:获得系统代码修改后受影响到的对外提供服务接口的方法列表。本发明专利技术的有益效果如下:通过标识对外提供服务接口方法,并对比不同版本的差异及分析调用链路,整合各步骤获得的信息,从而实现了全自动获得代码修改后受影响到的对外提供服务接口。码修改后受影响到的对外提供服务接口。

【技术实现步骤摘要】
获得系统代码修改后受影响的对外提供服务接口的方法


[0001]本专利技术涉及软件开发和软件测试领域,尤其是获得系统代码修改后受影响的对外服务接口的方法。

技术介绍

[0002]当前系统代码修改后,如果需要了解修改后的代码对外部服务的影响,主要是通过人工查看系统改动的代码,通过代码编辑器的方法调用跳转查看功能,对方法的层层查看,最后通过人为判断确定代码修改后受影响的对外服务接口。该种方法存在速度慢,且不能全面的了解代码修改后受影响的所有对外服务接口。
[0003]综上所述,现有技术效率低且准确率低,因此本专利技术提出了获得系统代码修改后受影响的对外服务接口的方法可以解决此问题。

技术实现思路

[0004]针对上述现有技术中存在的不足,本专利技术目的在于提供获得系统代码修改后受影响的对外服务接口的方法,解决现有技术效率低且准确率低的问题。
[0005]为解决上述问题,本专利技术公开了获得系统代码修改后受影响的对外服务接口的方法,包括以下步骤:步骤1:标识出系统对外提供服务接口方法;步骤2:获得系统代码的不同版本之间修改代码后受影响的方法列表及对外提供服务方法列表;步骤3:解析代码的字节码获得方法的调用链路;步骤4:获得系统代码修改后受影响到的对外提供服务接口的方法列表。
[0006]作为优选,步骤1具体如下:梳理出系统所有对外提供服务的接口方法,在每一个接口方法的代码注释里加一个标签注释符,用于标注该接口方法是一个提供给外部调用的方法。
[0007]作为优选,步骤2具体如下:2.1 通过接受系统代码git分支的两个版本的commitid,获得系统的不同版本的源代码;将获得的两个版本的系统源代码分别保存在version0与version1目录下;2.2 分别遍历version0与version1目录下的所有的Java代码,通过解析java代码,生成代码的抽象语法树AST,进一步解析抽象语法树,将每一个java文件的方法相关信息解析出来,获得包名、类名、方法名、方法参数、方法体内容和方法注释的各种方法相关的信息,并保存在一个专门的方法数据结构里;2.3 对步骤2.2获得的方法信息进行进一步处理,将方法的包名、类名、方法名、方法参数字符串合并组成一个方法标识字符串,并对该方法标识字符串进行MD5计算,获得方法标识MD5值;同时对方法体内容进行MD5计算,获得方法体内容的MD5值,对信息进行保存;对于方法体内容,只保存方法体内容的MD5值,不保存方法体的原始内容,最后分别获得version0所有方法的数据结构及version1所有方法的数据结构;2.4 对方法数据结构里的方法注释进行再处理,判断是否包含有对外服务接口方
法标识;如果有,则将该方法标识为对外服务接口方法;2.5 以步骤version0方法数据结构作为基准,同version1方法数据结构进行比对,找出version0里方法标识字符串MD5值与version1 里方法标识字符串MD5值相同的方法,使用该方法的方法内容MD5值进行比较,如果不相等,将标识该方法为已修改;将version0里方法标识字符串MD5值在version1 找不到的方法,标识为方法已删除;将在version0里没有,但是在version1有的方法,标识为新增方法;已修改方法、已删除方法、新增方法即为系统代码修改后受影响的方法。
[0008]作为优选,步骤3具体如下:3.1解析步骤2.2生成的version1目录下的所有的Java文件的.class字节码,并解析每个类的每个方法的字节码中的方法调用关键字,获得每个类的每个方法的包名、类名、方法名、方法参数以及其方法体内部调用的其它方法,并对获得的调用的其它方法的字符串进一步解析,获得调用方法的包名、类名、方法名、方法参数,将每个类的每个方法信息及方法继续调用的其它方法的包名、类名、方法名、方法参数保存到方法调用链路数据结构;3.2对方法调用链路数据结构里的每个方法调用链路,再进行二次分析处理;以每个方法为基准,获得在每个方法体里直接调用的其它方法的信息包名、类名、方法名;通过这些方法标识,找到对应的方法信息,获得方法调用的其它方法,通过递归查询,最终获得每个方法调用的所有方法链路。
[0009]作为优选,步骤4包括如下步骤:4.1 用步骤3.2获得方法的调用链路与步骤2.4获得对外服务接口方法取交集,获得所有对外接口服务方法的调用链路清单;4.2 使用步骤4.1获得的对外接口服务方法调用链路清单,同步骤2.5获得的已修改方法、已删除方法、新增方法取交集;获得交集不为空的对外接口服务方法,表示该对外接口服务方法的调用链路使用了本次代码修改后受影响的方法,将该对外接口服务方法标识为受影响方法;将所有交集不为空的对外接口服务方法保存到一个列表清单,标识为系统修改代码后受影响的对外提供服务接口方法列表。
[0010]由于采用上述技术方案,本专利技术有着如下有益效果:1. 通过在对外服务接口的注释里加入对外服务接口方法标识,从而实现了可以通过程序解析注释代码,获得哪些方法是对外服务接口方法;2. 通过解析系统代码,将系统代码解析为以方法为维度保存的方法数据结构,每个方法通过包名、方法名、参数组成唯一标识,并计算出MD5值和方法体内容也计算出MD5值,并进行保存,对于方法体内容,只保存方法体内容的MD5值,不保存方法体的原始内容,从而极大的减少了由于保存数据而占有的空间。通过比较方法不同版本之间的方法数据结构,获得版本间修改的方法清单;3. 通过解析代码的字节码.class信息,获得所有方法的完整调用链路,然后同对外服务接口列表取交集,获得每个对外服务接口方法的调用链路;使用对外服务接口方法的方法调用链路同版本间系统代码修改后受影响的方法取交集,从而获得系统代码修改后受影响的对外服务接口方法。
具体实施方式
[0011]以下对本专利技术的实施例进行详细说明,但是本专利技术可以由权利要求限定和覆盖的多种不同方式实施。
[0012]为解决上述问题,本专利技术公开了获得系统代码修改后受影响的对外服务接口的方法,包括以下步骤:步骤1:标识出系统对外提供服务接口方法梳理出系统所有对外提供服务的接口方法,在每一个接口方法的代码注释里面,加一个标签注释符,如@focus字符串,用于标注该接口方法是一个提供给外部调用的方法。
[0013]步骤2:获得系统代码的不同版本之间修改系统代码后受影响的方法列表及对外提供服务方法列表:2.1 通过接受系统代码git分支的两个版本的commitid,获得系统的不同版本的源代码;将获得的两个版本的系统源代码分别保存在version0与version1目录下;2.2 分别遍历version0与version1目录下的所有的Java代码,通过解析java代码,生成代码的抽象语法树AST,进一步解析抽象语法树,将每一个java文件的方法相关信息解析出来,获得包名、类名、方法名、方法参数、方法体内容,方法注释等各种方法相关的信息,并保存在一个专门的方法数据结构里;2.3 对步骤2.2获得的方法信息做进行本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.获得系统代码修改后受影响的对外提供服务接口的方法,其特征在于,包括以下步骤:步骤1:标识出系统对外提供服务接口方法;步骤2:获得系统代码的不同版本之间修改代码后受影响的方法列表及对外提供服务方法列表;步骤3:解析代码的字节码获得方法的调用链路;步骤4:通过获得系统代码修改后受影响到的对外提供服务接口的方法列表。2.根据权利要求1所述的获得系统代码修改后受影响的对外提供服务接口的方法,其特征在于,步骤1具体如下:梳理出系统所有对外提供服务的接口方法,在每一个接口方法的代码注释里加一个标签注释符,用于标注该接口方法是一个提供给外部调用的方法。3.根据权利要求2所述的获得系统代码修改后受影响的对外提供服务接口的方法,其特征在于,步骤2具体如下:2.1 通过接受系统代码git分支的两个版本的commitid,获得系统的不同版本的源代码;将获得的两个版本的系统源代码分别保存在version0与version1目录下;2.2 分别遍历version0与version1目录下的所有的Java代码,通过解析java代码,生成代码的抽象语法树AST,进一步解析抽象语法树,将每一个java文件的方法相关信息解析出来,获得包名、类名、方法名、方法参数、方法体内容和方法注释的各种方法相关的信息,并保存在一个专门的方法数据结构里;2.3 对步骤2.2获得的方法信息进行进一步处理,将方法的包名、类名、方法名、方法参数字符串合并组成一个方法标识字符串,并对该方法标识字符串进行MD5计算,获得方法标识MD5值;同时对方法体内容进行MD5计算,获得方法体内容的MD5值,对信息进行保存;对于方法体内容,只保存方法体内容的MD5值,不保存方法体的原始内容,最后分别获得version0所有方法的数据结构及version1所有方法的数据结构;2.4 对方法数据结构里的方法注释进行再处理,判断是否包含有对外服务接口方法标识;如果有,则将该方法标识为对外服务接口方法;2.5 以步骤version0方法数据结构作为基准,同version1方法数据结构进行比对,找出version0里方法...

【专利技术属性】
技术研发人员:黄勇
申请(专利权)人:四川新网银行股份有限公司
类型:发明
国别省市:

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

1