CN114579452A - 接口影响检测方法及相关设备 - Google Patents
接口影响检测方法及相关设备 Download PDFInfo
- Publication number
- CN114579452A CN114579452A CN202210217983.9A CN202210217983A CN114579452A CN 114579452 A CN114579452 A CN 114579452A CN 202210217983 A CN202210217983 A CN 202210217983A CN 114579452 A CN114579452 A CN 114579452A
- Authority
- CN
- China
- Prior art keywords
- interface
- function
- code
- target
- tested
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本公开提供一种接口影响检测方法及相关设备。所述方法包括:响应于目标服务的代码变动触发指令,获取变动代码;对所述变动代码进行分析,获得所述变动代码对应的目标函数;获取目标服务的接口调用链路,所述接口调用链路包括所述目标服务的待测接口与服务内各函数之间的调用关系;基于所述目标函数与所述接口调用链路,确定所述待测接口中调用所述目标函数的目标接口。本公开所述接口影响检测方法及相关设备,能够自动评估出代码变动的影响范围,便于测试人员进行功能回归测试,从而提高了代码检查的准确率和效率。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种接口影响检测方法及相关设备。
背景技术
随着互联网的技术进步和广泛普及,网络能够为人们完成越来越多的生活和工作事项,网络业务的实现流程越来越复杂,代码复杂度不断增加,一项业务往往需要多人协作完成代码的开发工作。
代码的改动可能会涉及接口功能的变动,因此需要对与改动代码相关的接口进行测试。而目前代码改动所影响的接口范围只能依赖人工方式判断,容易造成遗漏。
发明内容
有鉴于此,本公开的目的在于提出一种接口影响检测方法及相关设备。
基于上述目的,本公开提供了一种接口影响检测方法,包括:
响应于目标服务的代码变动触发指令,获取变动代码;
对所述变动代码进行分析,获得所述变动代码对应的目标函数;
获取目标服务的接口调用链路,所述接口调用链路包括所述目标服务的待测接口与服务内各函数之间的调用关系;
基于所述目标函数与所述接口调用链路,确定所述待测接口中调用所述目标函数的目标接口。
可选的,所述响应于目标服务的代码变动触发指令,获取变动代码,包括:
基于所述代码变动触发指令,获取变更后的代码文件列表;
基于变更后的所述代码文件列表确定变更后的代码文件,将变更后的代码文件与原始的代码文件进行对比,确定修改文件以及变动代码在所述修改文件中的行号信息。
可选的,所述对所述变动代码进行分析,获得所述变动代码对应的目标函数,包括:
获取所述修改文件中各行代码与全部函数之间的所属关系;
基于所述变动代码在所述修改文件中的行号信息以及所述修改文件中各行代码与全部函数之间的所属关系,确定所述变动代码所属的目标函数。
可选的,所述获取所述修改文件中各行代码与全部函数之间的所属关系,包括:
对所述修改文件中的代码进行语法分析,获取所述修改文件的语法树;
基于所述修改文件的语法树,确定所述修改文件中各行代码与全部函数之间的所属关系。
可选的,所述获取目标服务的接口调用链路,包括:
获取目标服务的全部待测接口;
获取与全部所述待测接口相关的数据包文件;
对所述数据包文件中的代码进行分析,获得所述待测接口与各函数之间的对应关系,并基于所述待测接口与各函数之间的对应关系生成接口调用链路。
可选的,所述对所述数据包文件中的代码进行分析,获得所述待测接口与各函数之间的对应关系,并基于所述待测接口与各函数之间的对应关系生成接口调用链路,包括:
对所述数据包文件中的代码进行扫描,获取所述待测接口的初始化引用对象、各函数的函数定义信息和各待测接口的接口定义信息;
根据各待测接口的接口定义信息和各函数的函数定义信息,建立待测接口与接口实现方法间的对应关系;
对各函数的函数定义信息进行解析,得到各函数的函数描述信息,并根据各函数定义信息和各函数描述信息,生成函数间调用信息;
以各待测接口的初始化引用对象为起点,根据待测接口与接口实现方法之间的对应关系,和/或函数间调用信息,生成各待测接口的接口调用链路。
可选的,所述基于所述目标函数与所述接口调用链路,确定所述待测接口中调用所述目标函数的目标接口,包括:
基于所述目标函数对所述接口调用链路进行遍历,获取所述接口调用链路中与所述目标函数相同的函数;
基于所述接口调用链路中与所述目标函数相同的函数,确定所述待测接口中调用所述目标函数的目标接口。
可选的,所述目标接口包括对外暴露接口,所述方法还包括:
获取所述目标服务与其他服务之间的接口调用关系;
基于所述对外暴露接口以及所述接口调用关系,确定其他服务中调用所述对外暴露接口的接口信息。
可选的,还包括:
根据跨服务间的距离输出影响面以及预设的距离,确定其他服务中调用所述目标接口的接口信息。
本公开还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任意一项所述的方法。
本公开还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,其特征在于,所述计算机指令用于使所述计算机执行上述任一所述的方法。
本公开还提供了一种计算机程序产品,所述计算机程序产品包括存储有指令的计算机可读存储介质,其特征在于,所述指令在被执行时使得计算设备的至少一个中央处理器单元执行根据上述任一项所述的方法。
从上面所述可以看出,本公开提供的接口影响检测方法及相关设备,通过代码变动触发分析获得变动代码,通过对变动代码的分析获得变动代码所属的目标函数,通过目标函数以及获得的接口调用链路,确定待测接口中调用目标函数的目标接口,从而确定变动代码所影响到的目标接口,以便于开发人员可基于该目标接口评估出代码变动的影响范围,或者便于测试人员进行功能回归测试,从而提高了代码检查的准确率和效率。
附图说明
为了更清楚地说明本公开或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施例数据处理系统的结构示意图;
图2为本公开实施例所述接口影响检测方法的流程示意图;
图3为本公开实施例变动代码获取方法的流程示意图;
图4为本公开实施例所述目标函数的获取方法的流程示意图;
图5为本公开实施例接口调用链路的获取方法的流程示意图;
图6为本公开实施例目标接口的获取方法的流程示意图;
图7为本公开实施例接口调用链路的结构示意图;
图8为本公开实施例所述接口影响检测方法的另一流程示意图;
图9为本公开实施例获取其他服务中接口信息的方法流程示意图;
图10为本公开实施例电子设备的结构示意图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
需要说明的是,除非另外定义,本公开实施例使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
图1示出了本公开实施例所提供的可应用于接口影响检测方法的装置的实施例的示例性系统100的示意图。
如图1所示,系统100包括服务器140以及至少一个第一终端设备120、至少一个第二终端设备130,第一终端设备120、第二终端设备130通过通过无线网络或有线网络与服务器140通信连接。
所述服务器140可以包括一个独立运行的服务器,或者分布式服务器,或者由多个服务器组成的服务器集群,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(ContentDeliveryNetwork,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。服务器140可以包括有网络通信单元、处理器和存储器等等。服务器140设置有代码仓库,用于存储业务系统的代码文件,该业务系统可以向用户提供业务服务,例如即时通信应用服务、购物应用服务、新闻应用服务、阅读应用服务、音频听书应用服务、支付应用服务等。
所述第一终端设备120可以包括智能手机、台式电脑、平板电脑、笔记本电脑、数字助理、智能可穿戴设备、智能音箱、车载终端、智能电视等类型的实体设备,也可以包括运行于实体设备中的软体,例如一些服务商提供给用户的网页页面,也可以为该些服务商提供给用户的应用。具体的,所述第一终端设备120可以是与业务系统的开发人员对应的设备,开发人员可以在第一终端设备120上进行代码编辑,并将生成的代码文件提交至服务器140,服务器140基于第一终端设备120所提交的代码文件更新其所存储的业务系统。一般情况下,开发人员在第一终端设备120上所提交的代码文件仅为业务系统中的部分代码文件。
所述第二终端设备130可以包括智能手机、台式电脑、平板电脑、笔记本电脑、数字助理、智能可穿戴设备、智能音箱、车载终端、智能电视等类型的实体设备,也可以包括运行于实体设备中的软体,例如一些服务商提供给用户的网页页面,也可以为该些服务商提供给用户的应用。具体的,第二终端设备130可以是与业务系统的测试人员对应的设备。当开发人员通过第一终端设备120向服务器140提交了包括变动代码的代码文件时,测试人员需要通过第二终端设备130对服务器140上存储的业务系统的相关功能进行测试。
随着业务系统的业务功能越来越复杂,业务系统的代码复杂度也在增加,在业务系统中会存在复杂的调用关系,例如函数的调用、接口的调用等。当某一函数、接口对应的代码变动后,直接调用或间接调用该函数、接口的上游接口或服务的功能可能会被影响,因此开发人员在修改代码后需要评估每次代码提交的影响面,从而确定自测范围并决定是否需要对上游服务或接口进行调整。同时,测试人员不仅需要针对变动代码所述的代码文件所对应的相应接口、服务进行测试,更需要对调用该函数、接口的上游接口或服务进行测试。
目前这种测试仅能依赖人工方式判断,即依赖测试人员或开发人员对代码以及业务系统的熟练度的把控,这很容易造成遗漏,导致调用该函数、接口的上游服务或接口出现故障。
有鉴于此,本公开实施例提供一种接口影响检测方法,能够在变动代码提交时自动评估分析变动代码所影响的上游服务或接口,帮助开发人员自动评估每次代码变动所带来的影响面和自测范围,同时也帮测试人员确定功能回归范围,避免造成遗漏,提高了检查的准确率和效率。
其中,本公开实施例所述接口影响检测方法,可以通过第一终端设备120实现,以用于开发人员自动评估每次代码变动所带来的的影响面和自测范围;或者,可以通过第二终端设备130实现,以用于测试人员确定测试时的功能回归范围;或者,可以通过服务器140实现,并可允许第一终端设备120、第二终端设备130调用该接口影响检测方法来确定代码变动的影响面;此外,也可以通过额外设置的其他终端设备、服务器等来实现,本实施例对此不作限制。
在本公开实施例中,以服务器140执行所述接口影响检测方法获得目标接口,并将目标接口提供给第一终端设备120、第二终端设备130为例详细陈述本公开实施例的技术方案。如图2所示,所述接口影响检测方法,包括:
步骤S101,响应于目标服务的代码变动触发指令,获取变动代码。
在本实施例中,当服务器140接收到开发人员通过第一终端设备120提交的代码文件后,生成代码变动触发指令。服务器140可基于该代码变动触发指令获得开发人员通过第一终端设备120所提交的代码文件,并从代码文件中获得变动代码。
其中,代码变动触发指令的生成可以根据需要进行设置。
在一些实施例中,基于向服务器140提交的代码文件触发代码变动触发指令的生成,例如服务器140每接收到一次代码文件的提交即可触发一次代码变动触发指令的生成,或者服务器140每接收到预设数量次数的代码文件的提交即可触发一次代码变动触发指令的生成。
在另一些实施例中,基于预设的时间点触发代码变动触发指令的生成;或者,基于开发人员或测试人员的请求触发代码变动触发指令的生成,本实施例对此不作限制。
在一些实施例中,服务器140可采用持续集成(Continuous Integration,CI)方式实现变动代码的提交、编译、测试等作业。例如,可在服务器140上安装代码持续集成工具(例如GitLab CI),该代码持续集成工具能够进行代码持续集成操作。服务器140可以通过上述代码持续集成工具执行代码集成任务。
其中,在代码集成任务中,可采用流水线(Pipeline)来定义包括编译、部署、测试等任务阶段;在流水线的每个任务阶段中,可通过作业(job)来实现各个任务阶段中的作业任务,例如编译阶段的作业是处理依赖。在每个作业中,可采用动作(action)来完成每个作业的流程控制、循环、模板等操作。在每个action内部可以支持sh、docker等方式,例如可以通过构建的容器(例如docker容器)使得开发人员打包他们的代码文件到一个可移植的容器中,然后发布到服务器140上。
步骤S103,对所述变动代码进行分析,获得所述变动代码对应的目标函数。
在本实施例中,目标服务的代码文件中包括多个函数,每个函数通过一行或者多行代码来实现该函数的功能,因此代码的变动可能会影响其所属函数功能的变化,进而影响目标服务的功能。当获取变动代码后,对变动代码进行代码分析确定变动代码的代码结构,即确定代码文件中各个函数与各行代码之间的对应关系,从而确定变动代码所属的目标函数,获得功能可能发生变化的目标函数。
步骤S105,获取目标服务的接口调用链路,所述接口调用链路包括所述目标服务的待测接口与服务内各函数之间的调用关系。
在本实施例中,目标服务包括一个或多个接口,每个接口功能的实现可通过调用一个或多个函数来实现。因此,当代码变动时,基于各接口与各函数之间的调用关系生成接口调用链路,后续即可基于目标函数和该接口调用链路确定调用该目标函数的目标接口,即变动代码所影响到的目标接口。
可选的,本实施例中,待测接口可以包括目标服务的全部接口,也可以为根据预设要求选定的部分接口,例如可以为用于被上游服务调用的对外暴露接口,本实施例对此不作限制。
步骤S107,基于所述目标函数与所述接口调用链路,确定所述待测接口中调用所述目标函数的目标接口。
本公开实施例所述接口影响检测方法,通过代码变动触发分析获得变动代码,通过对变动代码的分析获得变动代码所属的目标函数,通过目标函数以及获得的接口调用链路,确定待测接口中调用目标函数的目标接口,从而确定变动代码所影响到的目标接口,以便于开发人员可基于该目标接口评估出代码变动的影响范围,或者便于测试人员进行功能回归测试,从而提高了代码检查的准确率和效率。
在一些实施例中,如图3所示,步骤S101中所述响应于目标服务的代码变动触发指令,获取变动代码,包括:
步骤S201,基于所述代码变动触发指令,获取变更后的代码文件列表。
步骤S203,基于变更后的所述代码文件列表确定变更后的代码文件,将变更后的代码文件与原始的代码文件进行对比,确定修改文件以及变动代码在所述修改文件中的行号信息。
在本实施例中,变更后的代码文件列表可以包括开发人员通过第一终端设备120所提交的全部代码文件,并获取与该代码文件列表所对应的原始的代码文件,通过通过将变更后的代码文件列表所包括的全部代码文件与原始的代码文件进行对比,从而确定具体的修改文件以及变动代码在该修改文件中的行号信息。例如,可以通过git diff命令实现变更后的代码文件列表所包括的代码文件与原始的代码文件之间的对比,确定修改文件以及变动代码在该修改文件中的行号信息。
可选的,变更后的代码文件列表也可以进包括具有代码变动的修改文件,之后通过git diff命令确定变动代码在该修改文件中的具体的行号信息。
在一些实施例中,如图4所示,步骤S103中所述对所述变动代码进行分析,获得所述变动代码对应的目标函数,包括:
步骤S301,获取所述修改文件中各行代码与全部函数之间的所属关系。
在本实施例中,对修改文件中代码的源代码进行结构分析,判断每个函数是通过哪些源代码实现的,从而确定各行代码与全部函数之间的所属关系。
可选的,可以对所述修改文件中的代码进行语法分析,获取所述修改文件的语法树;再基于所述修改文件的语法树,确定所述修改文件中各行代码与全部函数之间的所属关系。本实施例中,可通过对修改文件中代码的源代码进行语法分析,从而获得修改文件的抽象语法树(abstract syntax code,AST),该抽象语法树则包括了各行代码与各函数之间的所属关系。
步骤S303,基于所述变动代码在所述修改文件中的行号信息以及所述修改文件中各行代码与全部函数之间的所属关系,确定所述变动代码所属的目标函数。
本实施例中,基于变动代码在修改文件中的具体行号信息,以及修改文件的抽象语法树,即可确定变动代码所属的目标函数。
在一些实施例中,如图5所示,步骤S105中所述获取目标服务的接口调用链路,包括:
步骤S401,获取目标服务的全部待测接口。
可选的,待测接口可以为目标服务的全部接口;或者,也可以为目标服务中满足预设条件的接口,例如可以为目标服务的对外暴露接口(hanlder)。
步骤S403,获取与全部所述待测接口相关的数据包文件。
当获得待测接口后,获取与待测接口相关的数据包文件(Package),例如用于实现待测接口的接口功能的数据包文件。
步骤S405,对所述数据包文件中的代码进行分析,获得所述待测接口与各函数之间的对应关系,并基于所述待测接口与各函数之间的对应关系生成接口调用链路。
本实施例中,获取与待测接口相关的数据包文件之后,对数据包文件中的代码进行分析。例如,先将数据包文件中的代码转化为中间代码(例如可以为SSA代码),再通过动态类型分析算法(例如RTA算法)分析待测接口与各函数之间的对应关系,以便于基于待测接口与各函数之间的对应关系生成各测接口的接口调用链路。
在一些实施例中,步骤S405中所述对所述数据包文件中的代码进行分析,获得所述待测接口与各函数之间的对应关系,并基于所述待测接口与各函数之间的对应关系生成接口调用链路,还可以包括:
步骤S501,对所述数据包文件中的代码进行扫描,获取所述待测接口的初始化引用对象、各函数的函数定义信息和各待测接口的接口定义信息。
其中,待测接口的初始化引用对象具体是指直接调用该待测接口的函数。如图7所示,该接口调用链路中包括两个待测接口,其中一个待测接口的初始化引用对象为Func1(),另一个待测接口的初始化引用对象为Func2()。
在本实施例中,为了实现对接口的访问,需要编写多个代码文件。而对接口的调用链路,就隐含在上述代码文件中函数的函数定义信息和接口的接口定义信息中,通过对上述函数定义信息以及接口定义信息进行语义、语法分析,可以最终获取得到各个接口的调用链路。
例如,软件开发人员在编写微服务静态代码时,会在代码中加入一定的注释内容,特别的,会在每一个接口文件中,加入对接口的描述信息,通过分析上述内容可以自动确定哪些接口是对外暴露接口。此外,开发人员在定义函数或者接口时,使用不同的命名方式,例如:针对Go语言实现的微服务代码,会以type接口名interface作为所定义的结构体的开头定义一个接口,以及,会以func函数名(形式参数列表)(返回值列表){函数体}的形式定义一个函数,因此,通过上述已知且固定的函数和接口定义形式,可以在代码中,获取各函数的函数定义信息和各接口的接口定义信息。
步骤S503,根据各待测接口的接口定义信息和各函数的函数定义信息,建立待测接口与接口实现方法间的对应关系。
在某些情况下,某些接口中需要调用一个或者多个函数以实现相应的接口功能,此时,需要在接口中预先实现与上述一个或者多个函数匹配的方法。
例如,在一个定义的接口School中定义了两个方法getTeacher()以及getStudent(),如果想要正常的实现接口功能,需要在该接口定义文件中,实现上述getTeacher()以及getStudent()这两个方法,也即,在接口中实现的方法,需要与函数定义文件中对上述两个函数的定义相匹配。
在根据各所述接口的接口定义信息和各所述函数的函数定义信息确定接口实现了在接口内定义的全部方法时,可以建立接口与接口实现方法之间的对应关系。
步骤S505,对各函数的函数定义信息进行解析,得到各函数的函数描述信息,并根据各函数定义信息和各函数描述信息,生成函数间调用信息。
其中,所述函数描述信息具体是指用于描述一个函数的基本内容的信息。可选的,所述函数描述信息可以包括:函数名称、函数中是否包括调用链信息、函数是否对接口进行直接引用、函数在代码中的位置、函数所在文件的文件名、函数所在的微服务名以及函数的注释信息等信息。
具体的,可以通过对一个函数定义信息进行语法结构的分析,识别出与该函数对应的函数描述信息。在得到函数描述信息之后,可以生成函数间调用信息,该函数间调用信息可以通过一个结构体来描述,在该结构体中记录了被调用函数与调用方函数之间的关系,其中,该被调用函数是指被调用方函数所调用的函数。
步骤S507,以各待测接口的初始化引用对象为起点,根据待测接口与接口实现方法之间的对应关系,和/或函数间调用信息,生成各待测接口的接口调用链路。
在本实施例中,所述初始化引用对象为直接对待测接口进行调用的函数,在确定初始化引用对象后,可以根据该初始化引用对象,继续查询接口与接口实现方法之间的对应关系,以及各函数间调用关系,从而构造接口调用链路。
在一些实施例中,如图6所示,步骤S107中所述基于所述目标函数与所述接口调用链路,确定所述待测接口中调用所述目标函数的目标接口,包括:
步骤S601,基于所述目标函数对所述接口调用链路进行遍历,获取所述接口调用链路中与所述目标函数相同的函数。
步骤S603,基于所述接口调用链路中与所述目标函数相同的函数,确定所述待测接口中调用所述目标函数的目标接口。
在本实施例中,基于目标函数对接口调用链路进行遍历,当获得接口调用链路中与目标函数相同的函数时,基于该函数在接口调用链路中的位置、结构、调用关系等信息,即可确定调用该目标函数的目标接口,即变动代码所影响的目标接口。如图7所示,当某次代码变动时基于步骤S101-S103获取与变动代码对应的目标函数为funcC()时,基于步骤S105所获取的接口调用链路可知,由于在Func1()和Func1()的接口调用链路上都出现了funcC(),因此受代码变动影响的目标接口即为Func1()所对应的接口以及Func12()所对应的接口。
在一些实施例中,目标服务可以为微服务,即本公开实施例所述接口影响检测方法可以应用于微服务结构的业务系统中。所述待测接口包括对外暴露接口,相应的目标服务也为目标服务的对外暴露接口。如图8所示,步骤S107所述确定所述待测接口中调用所述目标函数的目标接口之后,还包括:
步骤S109,获取所述目标服务与其他服务之间的接口调用关系。
步骤S111,基于所述对外暴露接口以及所述接口调用关系,确定其他服务中调用所述对外暴露接口的接口信息。
在本实施例中,可基于历史调用数据等信息获取各个微服务之间的调用拓扑数据,从而获得目标服务与其他服务之间的接口调用关系。获得目标服务与其他服务之间的接口调用关系之后,可基于步骤S101-S107中获得的目标接口对该接口调用关系的数据进行遍历,从而确定调用所述目标接口的接口信息,即确定调用该目标接口的上游服务的接口信息,并将该上游服务的名称(psm)等信息加入到列表中以供开发人员、测试人员使用。
在本实施例中,可以仅获取其他服务中直接调用该目标接口的接口信息,如图9所示,当目标接口为目标服务C的接口Func3时,仅获取服务B的Func2的接口信息提供给开发人员、测试人员使用。
或者,也可以根据跨服务间的距离输出影响面以及预设的距离,确定其他服务中调用所述目标接口的接口信息。例如,当将距离设置为3时,如图9所示,当目标接口为目标服务C的接口Func3时,同时获取服务B的Func2的接口信息以及服务A的Func1的接口信息提供给开发人员、测试人员使用。
需要说明的是,本公开实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本公开实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
需要说明的是,上述对本公开的一些实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于上述实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
基于同一发明构思,与上述任意实施例方法相对应的,本公开还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上任意一实施例所述的方法。
图10示出了本实施例所提供的一种更为具体的电子设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
上述实施例的电子设备用于实现前述任一实施例中相应的方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
基于同一发明构思,与上述任意实施例方法相对应的,本公开还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如上任一实施例所述的方法。
本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
上述实施例的存储介质存储的计算机指令用于使所述计算机执行如上任一实施例所述的方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
基于同一发明构思,与上述任意实施例方法相对应的,本申请还提供了一种计算机程序产品,其包括其上具有计算机可读指令的非暂时性有形计算机可读介质。在一些实施例中,所述计算机可读指令由一个或多个处理器可执行以使得所述处理器执行所述的方法。对应于方法各实施例中各步骤对应的执行主体,执行相应步骤的处理器可以是属于相应执行主体的。
上述实施例的计算机程序产品用于使处理器执行如上任一实施例所述的方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
本申请的各种实施例中的“装置”、“模块”等可以通过使用硬件单元、软件单元或它们的组合而被实施。硬件单元的例子可包括设备、构件、处理器、微处理器、电路、电路元件(例如,晶体管、电阻器、电容器、电感器等等)、集成电路、专用集成电路(ASIC)、可编程逻辑器件(PLD)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、存储器单元、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片组等等。软件单元的例子可包括软件构件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例行程序、子程序、函数、方法、过程、软件接口、应用程序接口(API)、指令集、计算代码、计算机代码、代码段、计算机代码段、单词、值、符号、或它们的任何组合。确定实施例是否通过使用硬件单元和/或软件单元被实施可以根据任意数量的因素而变化,诸如想要的计算速率、功率电平、耐热性、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度、和其它设计或性能约束,正如对于给定的实现所想要的。
某些实施例可包括制造品。制造品可包括用来存储逻辑的存储介质。存储介质的例子可包括能够存储电子数据的一种或多种类型的计算机可读存储媒体,包括易失性存储器或非易失性存储器、可拆卸或不可拆卸存储器、可擦除或不可擦除存储器、可写或可再写存储器等等。逻辑的例子可包括各种软件单元,诸如软件构件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例行程序、子程序、函数、方法、过程、软件接口、应用程序接口(API)、指令集、计算代码、计算机代码、代码段、计算机代码段、单词、值、符号、或它们的任何组合。在一个实施例中,例如,制造品可以存储可执行计算机程序指令,它们在被计算机执行时使得计算机执行按照所描述的实施例的方法和/或操作。可执行计算机程序指令可包括任何适当类型的代码,诸如源代码、编译的代码、解释的代码、可执行代码、静态代码、动态代码等等。可执行计算机程序指令可以按照预定义的计算机语言、方式或语法被实施,用于指令计算机去执行一定的功能。指令可以通过使用任何适当的高级、低级、面向对象的、视觉的、编译的和/或解释的编程语言而被实施。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本公开的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本公开实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。
另外,为简化说明和讨论,并且为了不会使本公开实施例难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本公开实施例难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本公开实施例的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本公开的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本公开实施例。因此,这些描述应被认为是说明性的而不是限制性的。
尽管已经结合了本公开的具体实施例对本公开进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
本公开实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本公开实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (12)
1.一种接口影响检测方法,其特征在于,包括:
响应于目标服务的代码变动触发指令,获取变动代码;
对所述变动代码进行分析,获得所述变动代码对应的目标函数;
获取目标服务的接口调用链路,所述接口调用链路包括所述目标服务的待测接口与服务内各函数之间的调用关系;
基于所述目标函数与所述接口调用链路,确定所述待测接口中调用所述目标函数的目标接口。
2.根据权利要求1所述的方法,其特征在于,所述响应于目标服务的代码变动触发指令,获取变动代码,包括:
基于所述代码变动触发指令,获取变更后的代码文件列表;
基于变更后的所述代码文件列表确定变更后的代码文件,将变更后的代码文件与原始的代码文件进行对比,确定修改文件以及变动代码在所述修改文件中的行号信息。
3.根据权利要求2所述的方法,其特征在于,所述对所述变动代码进行分析,获得所述变动代码对应的目标函数,包括:
获取所述修改文件中各行代码与全部函数之间的所属关系;
基于所述变动代码在所述修改文件中的行号信息以及所述修改文件中各行代码与全部函数之间的所属关系,确定所述变动代码所属的目标函数。
4.根据权利要求3所述的方法,其特征在于,所述获取所述修改文件中各行代码与全部函数之间的所属关系,包括:
对所述修改文件中的代码进行语法分析,获取所述修改文件的语法树;
基于所述修改文件的语法树,确定所述修改文件中各行代码与全部函数之间的所属关系。
5.根据权利要求1所述的方法,其特征在于,所述获取目标服务的接口调用链路,包括:
获取目标服务的全部待测接口;
获取与全部所述待测接口相关的数据包文件;
对所述数据包文件中的代码进行分析,获得所述待测接口与各函数之间的对应关系,并基于所述待测接口与各函数之间的对应关系生成接口调用链路。
6.根据权利要求5所述的方法,其特征在于,所述对所述数据包文件中的代码进行分析,获得所述待测接口与各函数之间的对应关系,并基于所述待测接口与各函数之间的对应关系生成接口调用链路,包括:
对所述数据包文件中的代码进行扫描,获取所述待测接口的初始化引用对象、各函数的函数定义信息和各待测接口的接口定义信息;
根据各待测接口的接口定义信息和各函数的函数定义信息,建立待测接口与接口实现方法间的对应关系;
对各函数的函数定义信息进行解析,得到各函数的函数描述信息,并根据各函数定义信息和各函数描述信息,生成函数间调用信息;
以各待测接口的初始化引用对象为起点,根据待测接口与接口实现方法之间的对应关系,和/或函数间调用信息,生成各待测接口的接口调用链路。
7.根据权利要求1所述的方法,其特征在于,所述基于所述目标函数与所述接口调用链路,确定所述待测接口中调用所述目标函数的目标接口,包括:
基于所述目标函数对所述接口调用链路进行遍历,获取所述接口调用链路中与所述目标函数相同的函数;
基于所述接口调用链路中与所述目标函数相同的函数,确定所述待测接口中调用所述目标函数的目标接口。
8.根据权利要求1-7任一项所述的方法,其特征在于,所述目标接口包括对外暴露接口,所述方法还包括:
获取所述目标服务与其他服务之间的接口调用关系;
基于所述对外暴露接口以及所述接口调用关系,确定其他服务中调用所述对外暴露接口的接口信息。
9.根据权利要求8所述的方法,其特征在于,还包括:
根据跨服务间的距离输出影响面以及预设的距离,确定其他服务中调用所述目标接口的接口信息。
10.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至9任意一项所述的方法。
11.一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,其特征在于,所述计算机指令用于使所述计算机执行权利要求1至9任一所述的方法。
12.一种计算机程序产品,所述计算机程序产品包括存储有指令的计算机可读存储介质,其特征在于,所述指令在被执行时使得计算设备的至少一个中央处理器单元执行根据权利要求1至9任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210217983.9A CN114579452A (zh) | 2022-03-07 | 2022-03-07 | 接口影响检测方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210217983.9A CN114579452A (zh) | 2022-03-07 | 2022-03-07 | 接口影响检测方法及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114579452A true CN114579452A (zh) | 2022-06-03 |
Family
ID=81777965
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210217983.9A Pending CN114579452A (zh) | 2022-03-07 | 2022-03-07 | 接口影响检测方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114579452A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115858348A (zh) * | 2022-11-24 | 2023-03-28 | 上海浦东发展银行股份有限公司 | 一种基于字节码的测试工作量评估方法、设备及介质 |
CN116483735A (zh) * | 2023-06-21 | 2023-07-25 | 平安银行股份有限公司 | 一种代码变更的影响分析方法、装置、存储介质及设备 |
CN117009240A (zh) * | 2023-08-18 | 2023-11-07 | 广州Tcl互联网小额贷款有限公司 | 代码分析方法、系统、装置、电子设备及存储介质 |
-
2022
- 2022-03-07 CN CN202210217983.9A patent/CN114579452A/zh active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115858348A (zh) * | 2022-11-24 | 2023-03-28 | 上海浦东发展银行股份有限公司 | 一种基于字节码的测试工作量评估方法、设备及介质 |
CN115858348B (zh) * | 2022-11-24 | 2024-05-31 | 上海浦东发展银行股份有限公司 | 一种基于字节码的测试工作量评估方法、设备及介质 |
CN116483735A (zh) * | 2023-06-21 | 2023-07-25 | 平安银行股份有限公司 | 一种代码变更的影响分析方法、装置、存储介质及设备 |
CN116483735B (zh) * | 2023-06-21 | 2024-03-19 | 平安银行股份有限公司 | 一种代码变更的影响分析方法、装置、存储介质及设备 |
CN117009240A (zh) * | 2023-08-18 | 2023-11-07 | 广州Tcl互联网小额贷款有限公司 | 代码分析方法、系统、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10990367B2 (en) | Application development method, tool, and device, and storage medium | |
US10120788B2 (en) | Cloud connected automated testing in multiple operating environments using multiple parallel test threads | |
US9436449B1 (en) | Scenario-based code trimming and code reduction | |
CN114579452A (zh) | 接口影响检测方法及相关设备 | |
US11853746B2 (en) | Source code merge conflict resolution | |
CN111260336A (zh) | 基于规则引擎的业务核对方法、装置及设备 | |
CN109800152A (zh) | 一种自动化测试方法及终端设备 | |
JP2017174418A (ja) | モデルチェックのためのデータ構造抽象化 | |
CN116028028A (zh) | 请求函数生成方法、装置、设备及存储介质 | |
US11474795B2 (en) | Static enforcement of provable assertions at compile | |
CN103955425A (zh) | 网页web探索测试装置及方法 | |
CN109284222B (zh) | 软件单元、数据处理系统中的项目测试方法、装置及设备 | |
CN111949510B (zh) | 测试处理方法、装置、电子设备及可读存储介质 | |
CN112232003B (zh) | 对设计进行仿真的方法、电子设备及存储介质 | |
CN111400623B (zh) | 用于搜索信息的方法和装置 | |
US20210055919A1 (en) | Detection of semantic equivalence of program source codes | |
CN111782180A (zh) | 页面生成方法和装置、电子设备和存储介质 | |
CN113778451A (zh) | 文件加载方法、装置、计算机系统和计算机可读存储介质 | |
CN107357926B (zh) | 网页处理方法、装置及电子设备 | |
TWI730384B (zh) | 影像測試方法、裝置、電腦裝置及可讀存儲介質 | |
CN117075912B (zh) | 用于程序语言转换的方法、编译方法及相关设备 | |
CN117555533B (zh) | 代码生成方法、电子设备及存储介质 | |
US20240143485A1 (en) | Presubmit Test Run Minimization Analysis Using Runtime Isolation Guarantees | |
CN116339795A (zh) | 热重载方法及相关设备 | |
CN117056211A (zh) | 低代码自动化测试方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |