首页> 中国专利> 代码改动对页面影响的定位方法、装置、设备及存储介质

代码改动对页面影响的定位方法、装置、设备及存储介质

摘要

本申请公开了一种代码改动对页面影响的定位方法、装置、设备及存储介质,本申请通过代码改动分析出受到影响的页面,先获取同一项目的改动前和改动后的两个不同版本的工程代码,分析不同版本的工程代码,得到不同版本工程代码的差异方法的改动信息,该改动信息包括改动包名、改动类名和改动方法名;进一步地,利用该改动信息确定差异方法对应的代码调用链路集合,依据每一代码调用链路对工程代码进行遍历,可以得到该差异方法对应的页面调用接口集合,最后地,根据该页面调用接口集合中的每一页面调用接口可以确定差异方法对应的调用页面集合,本申请从改动的代码可以分析得到受到影响的页面,从而实现快速故障告警和进行页面问题定位。

著录项

  • 公开/公告号CN113835746A

    专利类型发明专利

  • 公开/公告日2021-12-24

    原文格式PDF

  • 申请/专利权人 广州品唯软件有限公司;

    申请/专利号CN202111124454.6

  • 发明设计人 叶勇;

    申请日2021-09-24

  • 分类号G06F8/71(20180101);G06F8/74(20180101);

  • 代理机构11227 北京集佳知识产权代理有限公司;

  • 代理人刘思言

  • 地址 510000 广东省广州市荔湾区芳村花海街20号自编6号楼(仅限办公)

  • 入库时间 2023-06-19 13:49:36

说明书

技术领域

本申请涉及测试技术领域,更具体的说,是涉及一种代码改动对页面影响的定位方法、装置、设备及存储介质。

背景技术

在项目开发中,Web项目的前后端是分离开发的,需要定义接口来实现前端与后端的数据交互与通信。接口可以理解为承上启下的角色,一个接口只负责一个完整的业务功能。一般需要实现新的业务功能或者修改原有业务的逻辑时,会对业务功能代码进行改动。因为前端页面显示内容是根据接口返回的信息来展示的,那么,改动代码意味着接口也会跟着改动,接口改动则意味着接口返回给客户端的内容可能会有所变化,这种变化可能会影响客户端展示页面的变化,可能会导致客户端的页面上无任何内容显示或者导致其他页面展示失败的情况,从而影响了用户的使用体验。

因此,亟需提供一种受到代码改动的影响页面的定位方法,在代码有改动的事情下,迅速准确定位出受到影响的页面,从而为后续的处理提供数据基础。

发明内容

鉴于上述问题,本申请提供了一种代码改动对页面影响的定位方案,以便实现快速定位出受到代码改动影响的页面。具体方案如下:

一种代码改动对页面影响的定位方法,包括:

获取同一项目的两个不同版本的工程代码,所述两个不同版本的工程代码分别为改动前和改动后的工程代码;

分析所述两个不同版本的工程代码,得到不同版本的工程代码的差异方法的改动信息,所述改动信息包括改动包名、改动类名和改动方法名;

利用所述改动信息确定所述差异方法对应的代码调用链路集合;

依据所述代码调用链路集合中的每一代码调用链路对工程代码进行遍历,得到所述差异方法对应的页面调用接口集合;

根据所述页面调用接口集合中的每一页面调用接口确定所述差异方法对应的调用页面集合。

可选的,所述获取同一项目的两个不同版本的工程代码,包括:

获取所述项目的项目域名和仓库地址;

利用所述项目域名和仓库地址在数据库中查询所述项目的工程代码,得到不同版本的工程代码。

可选的,利用所述改动信息确定所述差异方法对应的代码调用链路集合,包括:

获取所述项目的元信息,所述元信息包括包名、类名、方法名和方法调用关系;

对比所述改动信息与所述元信息,若所述改动信息与所述元信息一致,则确定所述元信息中存在所述差异方法的调用关系,获得所述差异方法对应的代码调用链路集合。

可选的,对比所述改动信息与所述元信息,包括:

分别对比所述包名、类名、方法名与所述改动包名、改动类名、改动方法名是否均一致,若一致,则确定所述改动信息与所述元信息一致。

可选的,分析所述两个不同版本的工程代码,得到不同版本的工程代码的差异方法的改动信息,包括:

利用版本控制命令Git diff对所述两个不同版本的工程代码进行分析,得到所述不同版本的工程代码的差异方法的改动信息。

可选的,依据所述代码调用链路集合中的每一代码调用链路对工程代码进行遍历,得到所述差异方法对应的页面调用接口集合,包括:

依据每一代码调用链路对工程代码的方法进行回溯,得到所述差异方法对应的服务入口方法集合;

利用上下游调用链关系确定所述服务入口方法集合的所有上游服务;

将所有上游服务中最上游层服务利用开放服务平台osp服务映射出所述差异方法对应的页面调用接口,得到所述差异方法对应的页面调用接口集合。

可选的,根据所述页面调用接口集合中的每一页面调用接口确定所述差异方法对应的调用页面集合,包括:

获取所述页面调用接口集合中的每一页面调用接口;

在配置的映射关系中确定所述页面调用接口对应的页面,得到所述差异方法对应的调用页面集合,所述映射关系包含页面调用接口与调用页面的对应关系。

一种代码改动对页面影响的定位装置,包括:

工程代码获取单元,用于获取同一项目的两个不同版本的工程代码,所述两个不同版本的工程代码分别为改动前和改动后的工程代码;

改动信息获取单元,用于分析所述两个不同版本的工程代码,得到不同版本的工程代码的差异方法的改动信息,所述改动信息包括改动包名、改动类名和改动方法名;

代码调用链路确定单元,用于利用所述改动信息确定所述差异方法对应的代码调用链路集合;

接口获取单元,用于依据所述代码调用链路集合中的每一代码调用链路对工程代码进行遍历,得到所述差异方法对应的页面调用接口集合;

页面获取单元,用于根据所述页面调用接口集合中的每一页面调用接口确定所述差异方法对应的调用页面集合。

一种代码改动对页面影响的定位设备,包括:存储器和处理器;

所述存储器,用于存储程序;

所述处理器,用于执行所述程序,实现如上述的代码改动对页面影响的定位方法的各个步骤。

一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现如上述的代码改动对页面影响的定位方法的各个步骤。

借由上述技术方案,本申请通过代码改动分析出受到影响的页面,先获取同一项目的改动前和改动后的两个不同版本的工程代码,分析两个不同版本的工程代码,可以得到不同版本的工程代码的差异方法的改动信息,该改动信息包括改动包名、改动类名和改动方法名;进一步地,利用该改动信息确定出差异方法对应的代码调用链路集合,依据该代码调用链路集合中的每一代码调用链路对工程代码进行遍历,可以得到所述差异方法对应的页面调用接口集合,最后地,根据所述页面调用接口集合中的每一页面调用接口可以确定所述差异方法对应的调用页面集合,本申请从改动的代码可以分析得到受到影响的页面,从而可以实现快速故障告警和进行页面问题定位。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本申请实施例提供的代码改动对页面影响的定位方法的流程示意图;

图2为本申请实施例提供的一种代码改动对页面影响的定位装置结构示意图;

图3为本申请实施例提供的代码改动对页面影响的定位设备的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请提供了一种代码改动对页面影响的定位方案,接下来,结合图1所示,本申请的代码改动对页面影响的定位方法可以包括如下步骤:

步骤S110,获取同一项目的两个不同版本的工程代码。

具体地,获取同一项目的两个不同版本的工程代码,需要说明的是,所述两个不同版本的工程代码分别为改动前和改动后的工程代码。对于一个项目,要实现新的业务功能或者修改原有的业务逻辑实现版本升级,需要对项目工程代码进行改动,改动后形成新版本工程代码,与改动前的工程代码存在差异。可以理解的是,开发人员或者运维人员可以在各自的机器上根据不同的开发目的,创建分支并修改工程代码,进而使用版本控制系统Git将改动后的工程代码提交到工程代码版本仓库。在本申请中,获取的两个不同版本的工程代码为此前开发人员或者运维人员使用提交命令git commit提交到工程代码版本仓库的两个不同版本的工程代码。

步骤S120,分析所述两个不同版本的工程代码,得到不同版本的工程代码的差异方法的改动信息。

具体地,对上述步骤S110中获取的两个不同版本的工程代码进行分析,可以得到这两个不同版本的工程代码的差异方法的改动信息。差异方法指的可以是对两个不同版本的工程代码进行对比,有差异的代码范围。需要说明的是,差异方法可以用改动信息来表示,其中,改动信息可以包括改动包名,改动类名和改动方法名。

在一个项目的工程代码中,为了方便查找相关功能代码,一般将工程代码以不同标识符命名,标识符可以包括包名、类名、方法名、接口名等,在一个java工程代码中,可以有很多个类,每个类有且只有一个主函数,每一个类都有各自的类名,一个类可以实现多个接口。

包是类和接口的集合,一个包内可以定义一系列功能相关的类和接口,以便于进行代码复用。包名可以是包的标识,类名可以是类的标识,可以理解的是,方法名可以是方法的标识,接口名可以是接口的标识。对于描述一个实体(对象),通常可以在类的定义中定义相应功能的方法来描述;方法可以代表功能的模块,方法通常需要完成的功能体来描述方法的具体功能。

步骤S130,利用所述改动信息确定所述差异方法对应的代码调用链路集合。

具体地,可以利用上述步骤S120中得到的改动信息确定所述差异方法对应的代码调用链路集合。代码调用链路,指的是不同方法之间的各种调用关系形成的链路,不同的方法之间的调用链路可以有多个。在微服务项目中,存在多条调用链路,当某个链路出现故障、性能问题时,需要对整个链路进行分析检查,定位问题所在的具体位置。在本申请实施例中,在确定所述差异方法对应的代码调用链路,可以依据调用链路回溯到受到差异方法影响的页面。

步骤S140,依据所述代码调用链路集合中的每一代码调用链路对工程代码进行遍历,得到所述差异方法对应的页面调用接口集合。

具体地,调用链路存在多条,在本步骤中,可以依据步骤S130中得到的代码调用链路集合中的每一代码调用链路对工程代码进行遍历,从而得到所述差异方法对应的页面调用接口集合。可以理解的是,遍历指的是沿着某条调用链路,一次对整个项目的工程代码中的每个接口做一次访问。

步骤S150,根据所述页面调用接口集合中的每一页面调用接口确定所述差异方法对应的调用页面集合。

具体地,在上述步骤步骤S140中得到的页面调用接口集合可用于本步骤,根据所述页面调用接口集合中的每一个页面调用接口可以确定所述差异方法的多个调用页面,从而得到所述差异方法对应的调用页面集合。

借由上述技术方案,本申请通过代码改动分析出受到影响的页面,先获取同一项目的改动前和改动后的两个不同版本的工程代码,分析两个不同版本的工程代码,可以得到不同版本的工程代码的差异方法的改动信息,该改动信息包括改动包名、改动类名和改动方法名;进一步地,利用该改动信息确定出差异方法对应的代码调用链路集合,依据该代码调用链路集合中的每一代码调用链路对工程代码进行遍历,可以得到所述差异方法对应的页面调用接口集合,最后地,根据所述页面调用接口集合中的每一页面调用接口可以确定所述差异方法对应的调用页面集合,本申请从改动的代码可以分析得到受到影响的页面,从而可以实现快速故障告警和进行页面问题定位。

在本申请的一些实施例中,将对上述步骤S110,获取同一项目的两个不同版本的工程代码的过程进行介绍。该过程可以包括以下步骤:

S1,获取所述项目的项目域名和仓库地址。

S2,利用所述项目域名和仓库地址在数据库中查询所述项目的工程代码,得到不同版本的工程代码。

具体地,获取所述项目的项目域名和仓库地址,可以理解的是,所述项目在项目变更后,形成新版本项目工程代码,利用所述项目域名和仓库地址可以在代码仓库中查询并获取到所述项目的工程代码,可以得到不同版本的工程代码。

在本申请的一些实施例中,将对上述步骤S130,利用所述改动信息确定所述差异方法对应的代码调用链路集合的过程进行介绍,该过程可以包括以下步骤:

S1,获取所述项目的元信息,所述元信息包括包名、类名、方法名和方法调用关系。

具体地,获取所述项目的元信息,需要说明的是,所述项目的元信息包括项目的包名、类名、方法名以及方法调用关系,元信息是关于项目工程代码体系结构的信息,可用于描述项目工程代码的结构、语义、用途和用法。其中,方法调用关系指的是方法与方法之间的调用,Java中方法的调用主要有非静态方法调用和静态方法调用,其中,非静态方法的调用是通过对象来调用的,静态方法的调用是通过类名来调用的,方法与方法之间的调用主要是在一个方法内部调用其他方法。

S2,对比所述改动信息与所述元信息,若所述改动信息与所述元信息一致,则确定所述元信息中存在所述差异方法的调用关系,获得所述差异方法对应的代码调用链路集合。

具体地,对比所述改动信息与所述元信息,可以确定差异方法的调用关系。可以理解的是,若所述改动信息与所述元信息一致,则可以确定所述元信息中存在所述差异方法的调用关系,因为方法之间的调用关系非唯一的,复杂的,确定的差异方法的调用关系可以是多个,从而获得所述方法对应的代码调用链路集合。

需要说明的是,对比所述改动信息与所述元信息的过程具体可以是分别对比所述包名、类名、方法名与所述改动包名、改动类名、改动方法名是否均一致,若一致,则确定所述改动信息与所述元信息一致。

在本申请的一些实施例中,将对上述步骤S140,依据所述代码调用链路集合中的每一代码调用链路对工程代码进行遍历,得到所述差异方法对应的页面调用接口集合的过程进行介绍,该过程的步骤可以包括:

S1,依据每一代码调用链路对工程代码的方法进行回溯,得到所述差异方法对应的服务入口方法集合。

具体地,在业务功能升级或者业务功能模块有改动时,可能会导致业务系统模块或者接口出现问题,可以使用调用链路对工程代码的方法进行回溯,得到差异方法(改动方法)对应的所有服务入口方法,得到服务入口方法集合。

S2,利用上下游调用链关系确定所述服务入口方法集合的所有上游服务。

具体地,在上述步骤S1,依据每一代码调用链路对工程代码的方法进行回溯,得到所述差异方法对应的服务入口方法集合后,可以利用上下游调用链关系确定所述服务入口方法集合的所以上游服务。所述上下游调用链关系是一种相对关系,指的是不同的服务之间存在一种调用关联关系。例如,A服务内部调用B服务的接口,那么B服务是A服务的上游服务,相应地,A服务是B服务的下游服务。

S3,将所有上游服务中最上游层服务利用开放服务平台osp服务映射出所述差异方法对应的页面调用接口,得到所述差异方法对应的页面调用接口集合。

具体地,将所有上游服务中最上游层服务利用开放服务平台osp服务映射出所述差异方法对应的页面调用接口,在所有上游服务中,可以逐层往上回溯服务,直到找到服务入口janus方法。在本申请实施例中,开放服务平台osp的作用主要是提供服务化的核心远程调用机制以及基础服务治理功能,契约化的服务接口可以保证系统间的解耦清晰。在本申请实施例中,服务入口janus可以为业务服务提供同一对外的HTTP网关,服务入口janus方法指的页面调用接口。

在本申请的一些实施例中,将对上述步骤S150,根据所述页面调用接口集合中的每一页面调用接口确定所述差异方法对应的调用页面集合的过程进行介绍,该过程的步骤可以包括:

S1,获取所述页面调用接口集合中的每一页面调用接口。

S2,在配置的映射关系中确定所述页面调用接口对应的页面,得到所述差异方法对应的调用页面集合,所述映射关系包含页面调用接口与调用页面的对应关系。

具体地,获取页面调用接口集合中的每一页面调用接口,进一步地,利用配置的映射关系确定所述页面调用接口对应的页面,从而可以得到所述差异方法对应的调用页面集合。其中,所述映射关系可以包含页面调用接口与调用页面的对应关系。需要说明的是,页面可以是原生页面,也可以是H5页面,原生页面一般指的是使用安卓android或者os语言编写出来的页面,而H5页面区别于原生页面,H5页面指的是通过html技术实现可以在应用软件app展示的页面。

下面对本申请实施例提供的代码改动对页面影响的定位装置进行描述,下文描述的代码改动对页面影响的定位装置与上文描述的代码改动对页面影响的定位方法可相互对应参照。

参见图2,图2为本申请实施例提供的一种代码改动对页面影响的定位装置结构示意图。如图2所示,该装置可以包括:

工程代码获取单元11,用于获取同一项目的两个不同版本的工程代码,所述两个不同版本的工程代码分别为改动前和改动后的工程代码;

改动信息获取单元12,用于分析所述两个不同版本的工程代码,得到不同版本的工程代码的差异方法的改动信息,所述改动信息包括改动包名、改动类名和改动方法名;

代码调用链路确定单元13,用于利用所述改动信息确定所述差异方法对应的代码调用链路集合;

接口获取单元14,用于依据所述代码调用链路集合中的每一代码调用链路对工程代码进行遍历,得到所述差异方法对应的页面调用接口集合;

页面获取单元15,用于根据所述页面调用接口集合中的每一页面调用接口确定所述差异方法对应的调用页面集合。

可选的,上述工程代码获取单元11可以包括:

项目信息获取单元,用于获取所述项目的项目域名和仓库地址;

查询单元,用于利用所述项目域名和仓库地址在数据库中查询所述项目的工程代码,得到不同版本的工程代码。

可选的,上述代码调用链路确定单元13可以包括:

元信息获取单元,用于获取所述项目的元信息,所述元信息包括包名、类名、方法名和方法调用关系;

对比单元,用于对比所述改动信息与所述元信息,若所述改动信息与所述元信息一致,则确定所述元信息中存在所述差异方法的调用关系,获得所述差异方法对应的代码调用链路集合。

可选的,上述对比单元可以包括:

对比子单元,用于分别对比所述包名、类名、方法名与所述改动包名、改动类名、改动方法名是否均一致,若一致,则确定所述改动信息与所述元信息一致。

可选的,上述改动信息获取单元12可以包括:

版本差异分析单元,用于利用版本控制命令Git diff对所述两个不同版本的工程代码进行分析,得到所述不同版本的工程代码的差异方法的改动信息。

可选的,上述接口获取单元14可以包括:

服务入口方法获取单元,用于依据每一代码调用链路对工程代码的方法进行回溯,得到所述差异方法对应的服务入口方法集合;

上游服务确定单元,用于利用上下游调用链关系确定所述服务入口方法集合的所有上游服务;

osp服务映射单元,用于将所有上游服务中最上游层服务利用开放服务平台osp服务映射出所述差异方法对应的页面调用接口,得到所述差异方法对应的页面调用接口集合。

可选的,上述页面获取单元15可以包括:

调用接口获取单元,用于获取所述页面调用接口集合中的每一页面调用接口;

调用页面确定单元,用于在配置的映射关系中确定所述页面调用接口对应的页面,得到所述差异方法对应的调用页面集合,所述映射关系包含页面调用接口与调用页面的对应关系。

本申请实施例提供的代码改动对页面影响的定位装置可应用于代码改动对页面影响的定位设备。可选的,图3示出了代码改动对页面影响的定位设备的硬件结构框图,参照图3,代码改动对页面影响的定位设备的硬件结构可以包括:至少一个处理器1,至少一个通信接口2,至少一个存储器3和至少一个通信总线4;

在本申请实施例中,处理器1、通信接口2、存储器3、通信总线4的数量为至少一个,且处理器1、通信接口2、存储器3通过通信总线4完成相互间的通信;

处理器1可能是一个中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路等;

存储器3可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatilememory)等,例如至少一个磁盘存储器;

其中,存储器存储有程序,处理器可调用存储器存储的程序,所述程序用于:

获取同一项目的两个不同版本的工程代码,所述两个不同版本的工程代码分别为改动前和改动后的工程代码;

分析所述两个不同版本的工程代码,得到不同版本的工程代码的差异方法的改动信息,所述改动信息包括改动包名、改动类名和改动方法名;

利用所述改动信息确定所述差异方法对应的代码调用链路集合;

依据所述代码调用链路集合中的每一代码调用链路对工程代码进行遍历,得到所述差异方法对应的页面调用接口集合;

根据所述页面调用接口集合中的每一页面调用接口确定所述差异方法对应的调用页面集合。

可选的,所述程序的细化功能和扩展功能可参照上文描述。

本申请实施例还提供一种存储介质,该存储介质可存储有适于处理器执行的程序,所述程序用于:

获取同一项目的两个不同版本的工程代码,所述两个不同版本的工程代码分别为改动前和改动后的工程代码;

分析所述两个不同版本的工程代码,得到不同版本的工程代码的差异方法的改动信息,所述改动信息包括改动包名、改动类名和改动方法名;

利用所述改动信息确定所述差异方法对应的代码调用链路集合;

依据所述代码调用链路集合中的每一代码调用链路对工程代码进行遍历,得到所述差异方法对应的页面调用接口集合;

根据所述页面调用接口集合中的每一页面调用接口确定所述差异方法对应的调用页面集合。

可选的,所述程序的细化功能和扩展功能可参照上文描述。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间可以根据需要进行组合,且相同相似部分互相参见即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号