CN115291931A - 版本变更的处理方法和装置、电子设备及存储介质 - Google Patents
版本变更的处理方法和装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN115291931A CN115291931A CN202210860754.9A CN202210860754A CN115291931A CN 115291931 A CN115291931 A CN 115291931A CN 202210860754 A CN202210860754 A CN 202210860754A CN 115291931 A CN115291931 A CN 115291931A
- Authority
- CN
- China
- Prior art keywords
- change
- version
- code text
- application module
- version change
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
Abstract
本申请实施例提供了一种版本变更的处理方法和装置、电子设备及存储介质,属于软件技术领域。该方法包括:从程序中获取待进行变更的初始代码文本,并获取用于替换所述初始代码文本的目标代码文本;对所述初始代码文本和所述目标代码文本进行比较,得到版本变更类型和所述版本变更类型的版本变更影响范围,所述版本变更类型包括接口层变更、业务逻辑层变更、动态缓存变更或数据持久化变更中的至少一种;根据所述版本变更类型和所述版本变更影响范围,通过所述目标代码文本对所述程序进行版本变更。本申请实施例能够有效降低新版本或版本更新后的产品风险。
Description
技术领域
本申请涉及软件技术领域,尤其涉及一种版本变更的处理方法和装置、电子设备及存储介质。
背景技术
目前,互联网平台和产品在设计过程中,各个模块和功能通常是相互关联和影响的,而开发人员在进行新功能开发或已有功能优化更新时,由于对各个模块和功能之间关联程度的不了解,难以全面且精确地确定代码或模型改动所造成的影响范围,从而增加了新版本或版本更新后的产品风险。
发明内容
本申请实施例的主要目的在于提出一种版本变更的处理方法和装置、电子设备及存储介质,旨在降低新版本或版本更新后的产品风险。
为实现上述目的,本申请实施例的第一方面提出了一种版本变更的处理方法,所述方法包括:
从程序中获取待进行变更的初始代码文本,并获取用于替换所述初始代码文本的目标代码文本;
对所述初始代码文本和所述目标代码文本进行比较,得到版本变更类型和所述版本变更类型的版本变更影响范围,所述版本变更类型包括接口层变更、业务逻辑层变更、动态缓存变更或数据持久化变更中的至少一种;
根据所述版本变更类型和所述版本变更影响范围,通过所述目标代码文本对所述程序进行版本变更。
在一些实施例,所述对所述初始代码文本和所述目标代码文本进行比较,得到版本变更类型和所述版本变更类型的版本变更影响范围,包括:
对所述初始代码文本和所述目标代码文本进行比较,当所述版本变更类型包括接口层变更,获取第一应用模块和第二应用模块;所述第一应用模块包括待变更接口层的数据来源应用模块中具有相同功能的模块,所述第二应用模块包括所述待变更接口层的数据来源应用模块中除开所述第一应用模块外的剩余模块;
确定所述第一应用模块的兼容要求信息和所述第二应用模块的兼容要求信息的交集;
根据所述交集确定接口层变更影响范围。
在一些实施例,所述对所述初始代码文本和所述目标代码文本进行比较,得到版本变更类型和所述版本变更类型的版本变更影响范围,还包括:
当所述版本变更类型包括业务逻辑层变更,获取待变更业务逻辑层的关联上层服务接口;
根据所述关联上层服务接口确定待变更接口层;
获取第一应用模块和第二应用模块;所述第一应用模块包括所述待变更接口层的数据来源应用模块中具有相同功能的模块,所述第二应用模块包括所述待变更接口层的数据来源应用模块中除开所述第一应用模块外的剩余模块;
确定所述第一应用模块的兼容要求信息和所述第二应用模块的兼容要求信息的交集;
根据所述交集确定业务逻辑层变更影响范围。
在一些实施例,所述对所述初始代码文本和所述目标代码文本进行比较,得到版本变更类型和所述版本变更类型的版本变更影响范围,还包括:
当所述版本变更类型包括动态缓存变更或数据持久化变更,获取待变更数据访问类;
获取引用所述待变更数据访问类的待变更子类型,所述待变更子类型包括配置变更或数据变更;
根据所述待变更子类型确定版本变更类型的动态缓存变更影响范围或数据持久化变更影响范围。
在一些实施例,在所述通过所述目标代码文本对所述程序进行版本变更之前,所述方法还包括:
当所述版本变更类型至少包括两个版本变更类型,获取所有所述版本变更类型的依赖关系;
根据所述依赖关系确定所有所述版本变更类型的变更顺序。
在一些实施例,所述根据所述版本变更类型和所述版本变更影响范围,通过所述目标代码文本对所述程序进行版本变更,包括:
当所述版本变更类型包括动态缓存变更或数据持久化变更,确定所述动态缓存变更或数据持久化变更中的待变更子类型;
当所述待变更子类型包括配置变更和数据变更,先执行所述数据变更,再执行所述配置变更。
在一些实施例,所述根据所述版本变更类型和所述版本变更影响范围,通过所述目标代码文本对所述程序进行版本变更,包括:
当所述版本变更类型包括接口层变更或业务逻辑层变更,确定待变更模块;
当所述待变更模块包括第一应用模块和第二应用模块,先执行所述第一应用模块的变更,再执行所述第二应用模块的变更;所述第一应用模块包括待变更接口层的数据来源应用模块中具有相同功能的模块,所述第二应用模块包括所述待变更接口层的数据来源应用模块中除开所述第一应用模块外的剩余模块。
为实现上述目的,本申请实施例的第二方面提出了一种版本变更的处理装置,所述装置包括:
获取模块,用于从程序中获取待进行变更的初始代码文本,并获取用于替换所述初始代码文本的目标代码文本;
比较模块,用于对所述初始代码文本和所述目标代码文本进行比较,得到版本变更类型和所述版本变更类型的版本变更影响范围,所述版本变更类型包括接口层变更、业务逻辑层变更、动态缓存变更或数据持久化变更中的至少一种;
变更模块,用于根据所述版本变更类型和所述版本变更影响范围,通过所述目标代码文本对所述程序进行版本变更。
为实现上述目的,本申请实施例的第三方面提出了一种电子设备,所述电子设备包括存储器、处理器、存储在所述存储器上并可在所述处理器上运行的程序以及用于实现所述处理器和所述存储器之间的连接通信的数据总线,所述程序被所述处理器执行时实现上述第一方面所述的方法。
为实现上述目的,本申请实施例的第四方面提出了一种存储介质,所述存储介质为计算机可读存储介质,用于计算机可读存储,所述存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现上述第一方面所述的方法。
本申请提出的版本变更的处理方法和装置、电子设备及存储介质,其通过先从程序中获取待进行变更的初始代码文本以及用于替换所述初始代码文本的目标代码文本,接着对初始代码文本和目标代码文本进行比较,以得到包括接口层变更、业务逻辑层变更、动态缓存变更或数据持久化变更的版本变更类型以及版本变更类型的版本变更影响范围,然后根据版本变更类型和版本变更影响范围,通过目标代码文本对程序进行版本变更,从而可以有效降低新版本或版本更新后的产品风险。
附图说明
图1是本申请实施例提供的一种版本变更的处理方法的流程图;
图2是图1中的步骤S102的一个实施例流程图;
图3是图1中的步骤S102的另一个实施例流程图;
图4是图1中的步骤S102的另一个实施例流程图;
图5是图1中的步骤S102的一个总流程图;
图6是图1中的步骤S105之前的流程图;
图7是图1中的步骤S103的一个实施例流程图;
图8是图1中的步骤S103的另一个实施例流程图;
图9是图1中的步骤S103的一个总流程图;
图10是本申请实施例提供的一种版本变更的处理装置的结构示意图;
图11是本申请实施例提供的电子设备的硬件结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。
需要说明的是,虽然在装置示意图中进行了功能模块划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于装置中的模块划分,或流程图中的顺序执行所示出或描述的步骤。说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
首先,对本申请中涉及的若干名词进行解析:
软件(Software):是一系列按照特定顺序组织的计算机数据和指令的集合,是计算机中的非有形部分。软件一般被划分为系统软件、应用软件和介于这两者之间的中间件。软件不只包括计算机上运行的所有程序,与程序相关的文档、数据一般也认为是软件的一部分,简单地说,软件就是程序加文档的集合体。软件包括系统软件和应用软件。系统软件是负责管理计算机系统中各种独立的硬件,使得它们可以协调工作。系统软件使得计算机使用者和其他软件将计算机当作一个整体而不需要顾及到底层每个硬件是如何工作的。应用软件是为了某种特定的用途而被开发的软件。它可以是一个特定的程序,比如一个图像浏览器。也可以是一组功能联系紧密,可以互相协作的程序的集合,比如微软的Office软件。也可以是一个由众多独立程序组成的庞大的软件系统,比如数据库管理系统。
软件版本:其包括两种不同含义:第一,为满足不同用户的不同使用要求,例如不同运行环境或不同平台的系列产品;第二,软件产品投入使用后,经过一段时间运行后提出了更换的要求,从而需要对程序做出修正或纠错,以通过修改或纠错后的程序更新之前的软件版本,从而增强软件产品功能或提高软件产品性能。
软件产品:是指向用户提供的计算机软件、信息系统或设备中嵌入的软件或在提供计算机信息系统集成、应用服务技术是提供的计算机软件。
程序:是一组计算机能够识别和执行的指令,运行于电子计算机上,用于满足用户某种需求的信息化工具。程序是以某类计算机设计语言编写,运行于某种目标结构体系上。为使计算机程序得以运行,计算机需要加载代码,同时也需要加载数据。
代码:是程序员用开发工具所支持的语言编写出来的源文件,是一组由字符、符号或信号码元以离散形式表示信息的明确的规则体系。代码设计的原则包括唯一确定性、标准化和通用性、可扩充性与稳定性、便于识别与记忆、力求短小与格式统一以及容易修改等。
基于此,本申请实施例提供了一种版本变更的处理方法和装置、电子设备及存储介质,旨在降低新版本或版本更新后的产品风险。
本申请实施例提供的版本变更的处理方法和装置、电子设备及存储介质,具体通过如下实施例进行说明,首先描述本申请实施例中的版本变更的处理方法。
本申请实施例提供的版本变更的处理方法,涉及软件技术领域。本申请实施例提供的版本变更的处理方法可应用于终端中,也可应用于服务器端中,还可以是运行于终端或服务器端中的软件。在一些实施例中,终端可以是智能手机、平板电脑、笔记本电脑、台式计算机等;服务器端可以配置成独立的物理服务器,也可以配置成多个物理服务器构成的服务器集群或者分布式系统,还可以配置成提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN以及大数据和人工智能平台等基础云计算服务的云服务器;软件可以是实现版本变更的处理方法的应用等,但并不局限于以上形式。
本申请可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
图1是本申请实施例提供的版本变更的处理方法的一个可选的流程图,图1中的方法可以包括但不限于包括步骤S101至步骤S103。
步骤S101,从程序中获取待进行变更的初始代码文本,并获取用于替换初始代码文本的目标代码文本;
步骤S102,对初始代码文本和目标代码文本进行比较,得到版本变更类型和版本变更类型的版本变更影响范围;其中,版本变更类型包括接口层变更、业务逻辑层变更、动态缓存变更或数据持久化变更中的至少一种;
步骤S103,根据版本变更类型和版本变更影响范围,通过目标代码文本对程序进行版本变更。
本申请实施例所示意的步骤S101至步骤S103,通过从程序中获取待进行变更的初始代码文本,以及用于替换该初始代码文本的目标代码文本,然后将初始代码文本和目标代码文件进行内容比较,找到目标代码文本与初始代码文本存在不同的内容,然后根据该不同的内容确定版本变更类型,以及版本变更的影响范围,再根据版本变更类型和影响范围来进行程序的版本变更,从而可以有效降低版本变更后程序对应的产品风险。
在一些实施例的步骤S101中,可以从后台存储的程序中自动获取待进行变更的初始代码文本和目标代码文本。也可以通过其他方式获取待进行变更的初始代码文本和目标代码文本,不限于此。具体地,程序是一组计算机能够识别和执行的指令,运行于电子计算机上,用于满足某种需求的信息化工具。程序是以某些程序设计语言编写的代码组成,运行于某种目标结构体系上。一个软件产品的功能可以通过执行程序实现,程序内包含了若干个描述功能执行过程的代码。后台可以是产品开发人员终端对应的后台系统。在进行产品开发之前,设计人员根据产品功能通过编写代码形成可执行的程序,并将代码保存于对应的文本内。一个产品可能包含多个功能的实现,同时,多个功能的实现过程,又可能依赖于关联产品功能。因此,在进行可执行程序设计时,设计人员也会在代码中设置用于调用其他可执行程序的接口代码。
在完成程序设计后,会将该产品对应的代码文本保存于存储模块内。其中,为了便于其他关联人员的调用,本实施例存储模块包括边缘存储、云端存储等。设计人员的终端可通过云服务器与云端存储进行交互。云服务器可以是独立的服务器,也可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。
在产品功能实现时,通过该存储模块内存储的程序实现功能逻辑。当需要进行产品功能变更时,设计人员可以根据变更后的功能需求编辑新的代码,并将编辑好的新的代码保存于存储模块内。当设计人员需要获取新编辑的目标代码与初始代码对产品功能的影响范围时,本实施例则可以从存储模块中存储的程序内自动获取初始代码文本和目标代码文本,然后执行步骤S102,即能得到当前版本变更涉及到的变更类型和变更影响范围。
请参阅图2,在一些实施例中,步骤S102可以包括但不限于包括步骤S201至步骤S203:
步骤S201,对初始代码文本和目标代码文本进行比较,确定版本变更类型包括接口层变更,获取第一应用模块和第二应用模块;其中,第一应用模块包括待变更接口层的数据来源应用模块中具有相同功能的模块,第二应用模块包括待变更接口层的数据来源应用模块中的剩余模块;
步骤S202,比较第一应用模块的兼容要求信息和第二应用模块的兼容要求信息的交集;
步骤S203,根据交集确定接口层变更影响范围。
在一些实施例的步骤S201中,通过信息抽取的方式抽取到初始代码文本和目标代码文本中用于表示接口层信息的内容,然后判断目标代码文本中表示接口层信息的内容相对于初始代码文本中表示接口层信息的内容发生变化时,则可以确定当前版本变更类型包括接口层变更。在本实施例中,在接口层变更时,当遗漏某接口调用方,则会导致变更发布生产后被遗漏的接口调用方无法继续正常通过该接口获取数据,从而引发未知的更大风险。因此,本实施例在确定当前版本变更类型包括接口层变更时,可以通过该接口层的生产监控记录来源应用或IP等信息获取第一应用模块和第二应用模块。具体地,第一应用模块包括待变更接口层的数据来源应用模块中具有相同功能的模块,第二应用模块包括所述待变更接口层的数据来源应用模块中除开第一应用模块外的剩余模块。
在一些实施例的步骤S202中,可以通过先获取第一应用模块的兼容要求信息,并将该兼容要求信息整理并保存到第一清单中;以及获取第二应用模块的兼容要求信息,并将该兼容要求信息整理并保存到第二清单中。然后将第一清单与第二清单进行比较,得到两个清单内兼容要求信息的交集。
在一些实施例的步骤S203中,当两个清单之间的交集为空集时,表明第一应用模块的变更不会影响第二应用模块的功能;当两个清单之间的交集不是空集时,表明第一应用模块的变更会影响第二应用模块的功能,因此,在进行第一应用模块变更时,需要对第二应用模块也进行变更。在本实施例中,当当两个清单之间的交集不是空集时,还可以通过交集部分的信息确定两者关联内容,从而可以根据关联的内容确定第一应用模块和第二应用模块需要同步变更的信息。
请参阅图3,在另一些实施例中,步骤S102也可以包括但不限于包括步骤S301至步骤S305:
步骤S301,对初始代码文本和目标代码文本进行比较,确定版本变更类型包括业务逻辑层变更,获取待变更业务逻辑层的关联上层服务接口;
步骤S302,根据关联上层服务接口确定待变更接口层;
步骤S303,获取第一应用模块和第二应用模块;其中,第一应用模块包括待变更接口层的数据来源应用模块中具有相同功能的模块,第二应用模块包括所述待变更接口层的数据来源应用模块中除开第一应用模块外的剩余模块;
步骤S304,比较第一应用模块的兼容要求信息和第二应用模块的兼容要求信息的交集;
步骤S305,根据交集确定业务逻辑层变更影响范围。
在一些实施例的步骤S301中,通过信息抽取的方式抽取到初始代码文本和目标代码文本中,分别用于表示业务逻辑层的代码信息;然后判断目标代码文本中表示业务逻辑层的代码信息相对于初始代码文本中表示业务逻辑层的代码信息发生变化时,则可以确定当前版本变更类型包括业务逻辑层变更。在本实施例中,当业务逻辑层发生变更时,若关联业务逻辑层没有同步变更,则会导致变更后的业务逻辑层处理得到的数据不符合实际的情况。因此,本实施例在确定版本变更类型包括业务逻辑层变更时,可以通过生产监控记录来源应用或IP来获取待变更业务逻辑层的关联上层服务接口。
在本实施例中,在得到关联上层服务接口后,获取关联上层服务接口的接口层作为待变更接口层。然后通过图2所示的接口层变更影响确定方式进行数据处理。
请参阅图4,在一些实施例中,步骤S102还可以包括但不限于包括步骤S401至步骤S403:
步骤S401,对初始代码文本和目标代码文本进行比较,确定版本变更类型包括动态缓存变更或数据持久化变更,获取待变更数据访问类;
步骤S402,获取引用待变更数据访问类的待变更子类型;其中,待变更子类型包括配置变更或数据变更;
步骤S403,根据待变更子类型确定版本变更类型的动态缓存变更影响范围或数据持久化变更影响范围。
在一些实施例的步骤S401中,可以通过信息抽取的方式抽取到初始代码文本和目标代码文本中用于表示动态缓存的信息或数据持久化的信息,然后判断目标代码文本中表示表示动态缓存的信息或数据持久化的信息相对于初始代码文本中表示表示动态缓存的信息或数据持久化的信息发生变化时,则可以确定当前版本变更类型包括动态缓存变更或数据持久化变更。对于动态缓存变更,比如key的拼写规则变了,遗漏某关联方导致其无法正常访问和使用该缓存数据。再比如缓存数据的失效时间变化,从5分钟延长至15分钟,对于那些对数据时效性要求不高的应用来说可能无所谓,但是对那些对数据时效性要求极高的应用来说可能就会是致命的伤害。对于数据持久化变更,比如已有数据表TC记录对象C的各项特征,在业务流程S中需要根据C的某特征进行判断,决定采取哪一种包装方案。该特征原来记录在TC.ca字段中,现在修改为新增数据都写到TC.extend字段中。如果流程S被遗漏没有做相应修改,就会导致读取新增对象C的特征数据时报空指针异常。因此,本实施例在确定版本变更类型包括动态缓存变更或数据持久化变更时,获取待变更数据访问类,以通过访问类来进一步确定关联的变化类型。在存在动态缓存变更时,根据配置变更评估得到变更影响范围后,还可以根据目标代码文件内的信息调用修复方案。该修复方案可以是设计人员预先根据发生的案例信息编辑好的修复代码,从而能够有效降低版本变更对产品功能的影响。
在一些实施例的步骤S402中,可以通过扫描的方式定位得到代码文本中所有引用了待变更数据访问类的信息,然后根据扫描得到的信息获取待变更子类型。在本实施例中,待变更子类型包括配置变更或数据变更中的其中至少一类。
在一些实施例的步骤S403中,当待变更子类型包括配置变更时,可以通过配置信息来评估变更影响范围;当待变更子类型包括写数据或读数据时,则可以判断读或写的状态确定变更影响范围。
请参阅图5,在一些实施的步骤102中,可以包括但不限于包括步骤S501至步骤S506:
步骤S501,判断版本变更类型,当版本变更类型包括接口层变更时,则执行步骤S502;当版本变更类型包括业务逻辑层变更时,则执行步骤S503;当版本变更类型包括动态缓存变更时,则执行步骤S504;当版本变更类型包括数据持久变更时,则执行步骤S505;
步骤S502,在接口层变更时,可以通过生产监控记录来源应用或IP来获取该接口层中功能相同的应用或其他应用;并将功能相同的应用中的兼容性要求信息整理在第一清单list1内,将其他应用中兼容性要求信息整理在第二清单list2内,然后比较第一清单和第二清单内的信息,得到两个清单之间的交集;
步骤S503,在业务逻辑层变更时,可以先通过该业务逻辑层对应的生产监控记录来源应用或IP来获取关联上层服务接口,然后通过该关联上层服务接口确定待变更接口层;接着执行步骤502;
步骤S504,在动态缓存变更时,先确定对应的数据访问类,然后通过代码扫描定位所有引用该类处的变更子类型;当变更子类型包括配置变更,则根据配置变更信息评估变更影响范围,并可以设计修复方案;当变更子类型包括数据变更,则需要进一步判断是写数据还是读数据;对于读数据,则可以根据读空或读错来评估变更影响范围;对于写数据,则可以根据写丢或写错来评估变更影响范围;
步骤S505,在数据持久变更时,执行步骤504来确定数据变更影响范围;
步骤S506,判断是否还存在其他变更,若存在,则执行步骤501,反之,则结束处理过程。
请参阅图6,在一些实施例中,在通过目标代码文本对程序进行版本变更之前,图1所示方法还可以包括但不限于包括:
步骤S601,当版本变更类型至少包括两个版本变更类型,获取所有版本变更类型的依赖关系;
步骤S602,根据依赖关系确定所有版本变更类型的变更顺序。
在一些实施例的步骤S601中,由于多个产品功能可能存储依赖关系,这种依赖关系使得他们对数据变更有严格的要求。例如,产品A的功能实现依赖于产品B的功能实现,则在进行版本变更时,则应该先变更产品B的版本,再变更产品A的版本,不然,则可能导致产品A的版本变更后的功能与实际需求不一致。因此,本实施例在确定版本变更类型至少包括两个类型时,可以通过信息抽取的方式从代码文本中抽取两个版本变更类型之间的依赖关系。
在一些实施例的步骤S602中,在得到多个版本变更类型的依赖关系后,根据依赖关系确定多个版本变更的顺序,使得版本变更时,可以根据设置的顺序依次进行每个版本类型的变更过程,从而可以有效提高版本变更后的产品功能的精度。
请参阅图7,在一些实施例中,步骤S103可以包括但不限于包括步骤S701至步骤S702:
步骤S701,当版本变更类型包括动态缓存变更或数据持久化变更,确定动态缓存变更或数据持久化变更中的待变更子类型;
步骤S702,当待变更子类型包括配置变更和数据变更,先执行数据变更,再执行配置变更。
在一些实施例的步骤S103中,可以根据初始代码文本和目标代码文本的具体内容进行比较,来确定动态缓存变更或数据持久化变更中当前变更子类型。其中,待变更子类型包括配置变更和数据变更。数据持久化变更包括数据变更,例如新增或减少字段,修改字段类型、长度或结构等。对于数据变更,可以通过确定该数据模型所对应的数据访问类,然后扫描代码对引用了该数据访问类的地方全部进行染色。接着优先处理写操作之处,然后再处理读操作,同时注意读脏和写丢失。其中,读脏是指读出脏数据。在数据持久化变更过程中,读脏可以理解为一个功能模块读出另一个功能模块未提交的数据。数据持久化变更还包括配置变更。配置变更一般不涉及业务逻辑变更,大多对路由和性能方面的影响。在本实施例中,当数据持久化变更同时存在数据变更和配置变更时,优先处理数据变更。在处理完数据变更后,再处理配置变更,从而可以提高配置变更的准确度。
在一些实施例的步骤S103中,当同时存在数据变更和配置变更时,若先进行配置变更,由于配置变更会涉及到路由和性能变换,因此,使得配置变更后的路由发生变化。此时,若再进行数据变更操作,则可以会导致数据变更过程中数据读错或脏读,以及可能导致数据写错或者写丢。因此,本实施例基于数据变更过程中,对配置信息的依赖性,设定同时存在数据变更和配置变更时,先进行数据变更,确定数据变更完成后,再进行配置变更。同时,在进行数据变更时,设定先进行写数据处理,然后再进行读数据处理。
在一些实施例的步骤S103中,当版本变更包括动态缓存变更时,可以通过数据持久化变更的方式处理动态缓存变更。但是,在进行动态缓存变更是,需要对动态缓存的配置信息进行变更,比如对缓存数据的失效时间进行修改,需要评估原来的数据更新或同步逻辑是否支持。
请参阅图8,在一些实施例中,步骤S103可以包括但不限于包括步骤S801至步骤S802:
步骤S801,当版本变更类型包括接口层变更或业务逻辑层变更,确定待变更模块;
步骤S802,当待变更模块包括第一应用模块和第二应用模块,先执行第一应用模块的变更,再执行第二应用模块的变更;其中,第一应用模块包括待变更接口层的数据来源应用模块中具有相同功能的模块,第二应用模块包括待变更接口层的数据来源应用模块中除开第一应用模块外的剩余模块。
在一些实施例的步骤S103中,在处理完数据持久化变更和动态缓存变更后,再处理业务逻辑层变更或接口层变更。业务逻辑层变更可以通过生产监控记录精准定位到需要调用到它好它需要调用的应用或IP。将具有相同功能的关联应用模块作为第一应用模块,将其他关联应用的模块作为第二应用模块,然后先处理具有关联相同应用的第一应用模块的变更过程。当第一应用模块的变更过程完成后,再处理不具有关联相同应用的第二应用模块。
例如,变更前是计算全年级单科总分的应用模块,变更后是计算全年级全部科目总分的应用模块中,关联相同应用的其他模块包括语文科目总分计算模块、数学科目总分计算模块、英语科目总分计算模块,关联其他应用包括分数查看应用模块。在业务逻辑层变更或接口层变更时,可以通过将语文科目总分计算模块、数学科目总分计算模块、英语科目总分计算模块作为第一应用模块,将分数查看应用模块作为第二应用模块,然后先变更第一应用模块中存在关联影响的信息,例如第一应用模块向计算全年级全部科目总分的应用模块发送数据的接口信息。处理完第一应用模块后,再处理第二应用模块中存在关联影响的信息,例如第二应用模块从全年级全部科目总分的应用模块中获取数据的接口信息等。
请参阅图9,在一些实施的步骤103中,可以包括但不限于包括步骤S901至步骤S905:
步骤S901,开始进行版本变更类型处理时,判断当前版本变更类型是否包括接口层变更、业务逻辑层变更、动态缓存变更或数据持久化变更,若存在数据持久化变更,则跳转执行步骤S902;若存在数据持久化变更和动态缓存变更,则先执行步骤S902,再执行步骤S903;若存在数据持久化变更、动态缓存变更和业务逻辑层变更,则先执行步骤S902,其次执行步骤S903,最后执行步骤S904;若存在数据持久化变更、动态缓存变更、业务逻辑层变更和接口层变更,则先执行步骤S902,其次执行步骤S903,再执行步骤S904,最后执行步骤S905。
步骤S902,处理数据持久化变更。其中,数据持久化变更过程中,需要先判断当前变更子类型,若当前变更子类型同时包括数据变更和配置变更,则先处理数据变更,在处理完数据变更后,再处理配置变更。在数据变更过程中,根据目标代码文本内的信息优先处理写数据,同时需要兼容读数场景,注意读脏和写丢失的情况。在配置变更过程中,根据目标代码文本内的信息对配置进行变更。
步骤S903,处理动态缓存变更。在处理动态缓存变更时,由于动态缓存变更的处理流程和方法和数据持久化层类似,因此,可以通过步骤902的过程实现动态缓存变更的处理。
步骤S904,处理业务逻辑层变更。在处理业务逻辑层变更之前,先重复执行步骤S902和步骤S903,直到所有数据持久化变更和动态缓存变更都完成处理后,再处理业务逻辑层变更。业务逻辑层变更可以通过生产监控记录精准定位到需要调用到它和它需要调用的应用或IP,将与该业务逻辑层关联且具有相同应用的其他模块作为第一应用模块,将与该业务逻辑层具有关联但不具有相同应用的其他模块作为第二应用模块。在本实施例中,优先处理具有相同应用的关联模块的关联影响,然后通过网关接口追踪到其他关联模块,并对其他关联模块进行处理。对于关联影响代码的发现和挖掘,则可以通过分类、正则、染色和关键字匹配查询的自动化方式来统一化、规则化处理,从而可以高效、快速、精准地完成业务逻辑层变更。
步骤S905,处理接口层变更。由于接口层是用调用不同业务逻辑,因此,对于接口层变更,则可以通过步骤S904的处理方式进行处理。
在一些实施例中,当版本变更类型同时数据持久化变更和接口层变更时,根据本实施例对数据持久化变更和接口层变更设定的优先级顺序,则先执行数据持久化变更,确定完成了数据持久化变更之后,再执行接口层变更,从而能够使版本变更后功能实现满足实际需求。假设,在版本变更类型同时数据持久化变更和接口层变更时,先执行接口层变更,由于接口层变更后,接口层对应初始代码全部变更为目标代码文本内的代码,而数据持久化变更中涉及的数据变更和配置变更,都依赖于接口层的数据获取。但是,由于数据持久化变更所使用的代码为初始代码文本中的代码,从而导致数据持久化变更中无法获取定位到需要变更的位置,或者无法获取到需要进行变更的原始配置信息。
请参阅图10,本申请实施例还提供一种版本变更的处理装置,可以实现上述版本变更的处理方法,该装置包括:
获取模块,用于从程序中获取待进行变更的初始代码文本,并获取用于替换所述初始代码文本的目标代码文本;
比较模块,用于对所述初始代码文本和所述目标代码文本进行比较,得到版本变更类型和所述版本变更类型的版本变更影响范围,所述版本变更类型包括接口层变更、业务逻辑层变更、动态缓存变更或数据持久化变更中的至少一种;
变更模块,用于根据所述版本变更类型和所述版本变更影响范围,通过所述目标代码文本对所述程序进行版本变更。
该版本变更的处理装置的具体实施方式与上述版本变更的处理方法的具体实施例基本相同,在此不再赘述。
本申请实施例还提供了一种电子设备,电子设备包括:存储器、处理器、存储在存储器上并可在处理器上运行的程序以及用于实现处理器和存储器之间的连接通信的数据总线,程序被处理器执行时实现上述版本变更的处理方法。该电子设备可以为包括平板电脑、车载电脑等任意智能终端。
请参阅图11,图11示意了另一实施例的电子设备的硬件结构,电子设备包括:
处理器1101,可以采用通用的CPU(CentralProcessingUnit,中央处理器)、微处理器、应用专用集成电路(ApplicationSpecificIntegratedCircuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本申请实施例所提供的技术方案;
存储器1102,可以采用只读存储器(ReadOnlyMemory,ROM)、静态存储设备、动态存储设备或者随机存取存储器(RandomAccessMemory,RAM)等形式实现。存储器1102可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1102中,并由处理器1101来调用执行本申请实施例的版本变更的处理方法;
输入/输出接口1103,用于实现信息输入及输出;
通信接口1104,用于实现本设备与其他设备的通信交互,可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信;
总线1105,在设备的各个组件(例如处理器1101、存储器1102、输入/输出接口1103和通信接口1104)之间传输信息;
其中处理器1101、存储器1102、输入/输出接口1103和通信接口1104通过总线1105实现彼此之间在设备内部的通信连接。
本申请实施例还提供了一种存储介质,存储介质为计算机可读存储介质,用于计算机可读存储,存储介质存储有一个或者多个程序,一个或者多个程序可被一个或者多个处理器执行,以实现上述版本变更的处理方法。
存储器作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序以及非暂态性计算机可执行程序。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施方式中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至该处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
本申请实施例提供的版本变更的处理方法、装置、电子设备及存储介质,其通过先从程序中获取待进行变更的初始代码文本以及用于替换所述初始代码文本的目标代码文本,接着对初始代码文本和目标代码文本进行比较,以得到包括接口层变更、业务逻辑层变更、动态缓存变更或数据持久化变更的版本变更类型以及版本变更类型的版本变更影响范围,然后根据版本变更类型和版本变更影响范围,通过目标代码文本对程序进行版本变更,从而可以有效降低新版本或版本更新后的产品风险。
本申请实施例描述的实施例是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域技术人员可知,随着技术的演变和新应用场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
本领域技术人员可以理解的是,图1-9中示出的技术方案并不构成对本申请实施例的限定,可以包括比图示更多或更少的步骤,或者组合某些步骤,或者不同的步骤。
以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、设备中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。
本申请的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括多指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例的方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序的介质。
以上参照附图说明了本申请实施例的优选实施例,并非因此局限本申请实施例的权利范围。本领域技术人员不脱离本申请实施例的范围和实质内所作的任何修改、等同替换和改进,均应在本申请实施例的权利范围之内。
Claims (10)
1.一种版本变更的处理方法,其特征在于,所述方法包括:
从程序中获取待进行变更的初始代码文本,并获取用于替换所述初始代码文本的目标代码文本;
对所述初始代码文本和所述目标代码文本进行比较,得到版本变更类型和所述版本变更类型的版本变更影响范围,所述版本变更类型包括接口层变更、业务逻辑层变更、动态缓存变更或数据持久化变更中的至少一种;
根据所述版本变更类型和所述版本变更影响范围,通过所述目标代码文本对所述程序进行版本变更。
2.根据权利要求1所述的处理方法,其特征在于,所述对所述初始代码文本和所述目标代码文本进行比较,得到版本变更类型和所述版本变更类型的版本变更影响范围,包括:
对所述初始代码文本和所述目标代码文本进行比较,当所述版本变更类型包括接口层变更,获取第一应用模块和第二应用模块;所述第一应用模块包括待变更接口层的数据来源应用模块中具有相同功能的模块,所述第二应用模块包括所述待变更接口层的数据来源应用模块中除开所述第一应用模块外的剩余模块;
确定所述第一应用模块的兼容要求信息和所述第二应用模块的兼容要求信息的交集;
根据所述交集确定接口层变更影响范围。
3.根据权利要求2所述的处理方法,其特征在于,所述对所述初始代码文本和所述目标代码文本进行比较,得到版本变更类型和所述版本变更类型的版本变更影响范围,还包括:
当所述版本变更类型包括业务逻辑层变更,获取待变更业务逻辑层的关联上层服务接口;
根据所述关联上层服务接口确定待变更接口层;
获取第一应用模块和第二应用模块;所述第一应用模块包括所述待变更接口层的数据来源应用模块中具有相同功能的模块,所述第二应用模块包括所述待变更接口层的数据来源应用模块中除开所述第一应用模块外的剩余模块;
确定所述第一应用模块的兼容要求信息和所述第二应用模块的兼容要求信息的交集;
根据所述交集确定业务逻辑层变更影响范围。
4.根据权利要求3所述的处理方法,其特征在于,所述对所述初始代码文本和所述目标代码文本进行比较,得到版本变更类型和所述版本变更类型的版本变更影响范围,还包括:
当所述版本变更类型包括动态缓存变更或数据持久化变更,获取待变更数据访问类;
获取引用所述待变更数据访问类的待变更子类型,所述待变更子类型包括配置变更或数据变更;
根据所述待变更子类型确定版本变更类型的动态缓存变更影响范围或数据持久化变更影响范围。
5.根据权利要求1所述的处理方法,其特征在于,在所述通过所述目标代码文本对所述程序进行版本变更之前,所述方法还包括:
当所述版本变更类型至少包括两个版本变更类型,获取所有所述版本变更类型的依赖关系;
根据所述依赖关系确定所有所述版本变更类型的变更顺序。
6.根据权利要求1所述的处理方法,其特征在于,所述根据所述版本变更类型和所述版本变更影响范围,通过所述目标代码文本对所述程序进行版本变更,包括:
当所述版本变更类型包括动态缓存变更或数据持久化变更,确定所述动态缓存变更或数据持久化变更中的待变更子类型;
当所述待变更子类型包括配置变更和数据变更,先执行所述数据变更,再执行所述配置变更。
7.根据权利要求1所述的处理方法,其特征在于,所述根据所述版本变更类型和所述版本变更影响范围,通过所述目标代码文本对所述程序进行版本变更,包括:
当所述版本变更类型包括接口层变更或业务逻辑层变更,确定待变更模块;
当所述待变更模块包括第一应用模块和第二应用模块,先执行所述第一应用模块的变更,再执行所述第二应用模块的变更;所述第一应用模块包括待变更接口层的数据来源应用模块中具有相同功能的模块,所述第二应用模块包括所述待变更接口层的数据来源应用模块中除开所述第一应用模块外的剩余模块。
8.一种版本变更的处理装置,其特征在于,所述装置包括:
获取模块,用于从程序中获取待进行变更的初始代码文本,并获取用于替换所述初始代码文本的目标代码文本;
比较模块,用于对所述初始代码文本和所述目标代码文本进行比较,得到版本变更类型和所述版本变更类型的版本变更影响范围,所述版本变更类型包括接口层变更、业务逻辑层变更、动态缓存变更或数据持久化变更中的至少一种;
变更模块,用于根据所述版本变更类型和所述版本变更影响范围,通过所述目标代码文本对所述程序进行版本变更。
9.一种电子设备,其特征在于,所述电子设备包括存储器、处理器、存储在所述存储器上并可在所述处理器上运行的程序以及用于实现所述处理器和所述存储器之间的连接通信的数据总线,所述程序被所述处理器执行时实现如权利要求1至7任一项所述的方法的步骤。
10.一种存储介质,所述存储介质为计算机可读存储介质,用于计算机可读存储,其特征在于,所述存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210860754.9A CN115291931A (zh) | 2022-07-21 | 2022-07-21 | 版本变更的处理方法和装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210860754.9A CN115291931A (zh) | 2022-07-21 | 2022-07-21 | 版本变更的处理方法和装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115291931A true CN115291931A (zh) | 2022-11-04 |
Family
ID=83824049
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210860754.9A Pending CN115291931A (zh) | 2022-07-21 | 2022-07-21 | 版本变更的处理方法和装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115291931A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116483735A (zh) * | 2023-06-21 | 2023-07-25 | 平安银行股份有限公司 | 一种代码变更的影响分析方法、装置、存储介质及设备 |
-
2022
- 2022-07-21 CN CN202210860754.9A patent/CN115291931A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116483735A (zh) * | 2023-06-21 | 2023-07-25 | 平安银行股份有限公司 | 一种代码变更的影响分析方法、装置、存储介质及设备 |
CN116483735B (zh) * | 2023-06-21 | 2024-03-19 | 平安银行股份有限公司 | 一种代码变更的影响分析方法、装置、存储介质及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104391725A (zh) | 页面展示方法和页面展示装置 | |
CN110851209B (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN108399072B (zh) | 应用页面更新方法和装置 | |
CN108536745B (zh) | 基于Shell的数据表提取方法、终端、设备及存储介质 | |
CA2956207C (en) | Program code comparison and reporting | |
CN109144964A (zh) | 基于机器学习的日志解析方法和装置 | |
CN110705226A (zh) | 电子表格的创建方法、装置及计算机设备 | |
CN109815240A (zh) | 用于管理索引的方法、装置、设备和存储介质 | |
CN115291931A (zh) | 版本变更的处理方法和装置、电子设备及存储介质 | |
CN107493370B (zh) | 流量模板确定方法、流量信息识别方法及装置 | |
CN114706894A (zh) | 信息处理方法、装置、设备、存储介质及程序产品 | |
CN110990350B (zh) | 日志的解析方法及装置 | |
CN111737443A (zh) | 答案文本的处理方法和装置、关键文本的确定方法 | |
CN108196921B (zh) | 单据开发方法、装置、计算机设备和存储介质 | |
CN115455006A (zh) | 数据处理方法、数据处理装置、电子设备及存储介质 | |
CN115562993A (zh) | 测试脚本录制方法和装置、电子设备及存储介质 | |
CN114610955A (zh) | 一种智能检索方法、装置、电子设备及存储介质 | |
CN115421831A (zh) | 生成活动组件调用关系的方法、装置、设备及存储介质 | |
CN114791882A (zh) | 变量命名冲突解决方法和装置、电子设备、存储介质 | |
CN115033592A (zh) | 基于数据库的sql语句处理方法、装置、设备及存储介质 | |
CN115292180A (zh) | 代码分析方法、代码分析装置、电子设备及存储介质 | |
CN105808628A (zh) | 网页转码方法、装置及系统 | |
CN114860362A (zh) | 界面的更新方法及装置 | |
CN114115908A (zh) | 一种指令集生成、程序解析方法装置、设备以及存储介质 | |
CN113157722A (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 |