CN111752571A - 程序升级方法、装置、设备及存储介质 - Google Patents
程序升级方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN111752571A CN111752571A CN202010604150.9A CN202010604150A CN111752571A CN 111752571 A CN111752571 A CN 111752571A CN 202010604150 A CN202010604150 A CN 202010604150A CN 111752571 A CN111752571 A CN 111752571A
- Authority
- CN
- China
- Prior art keywords
- node
- tree
- upgrading
- target
- program
- 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
- 238000000034 method Methods 0.000 title claims abstract description 77
- 238000006243 chemical reaction Methods 0.000 claims description 63
- 238000012545 processing Methods 0.000 claims description 26
- 238000004590 computer program Methods 0.000 claims description 24
- 230000008569 process Effects 0.000 claims description 12
- 238000010586 diagram Methods 0.000 description 11
- 230000009466 transformation Effects 0.000 description 8
- 230000000694 effects Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000008280 blood Substances 0.000 description 1
- 210000004369 blood Anatomy 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 235000013372 meat Nutrition 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种程序升级方法、装置、设备及存储介质,属于计算机技术领域。所述方法包括:获取第一程序代码,并将该第一程序代码转换为目标抽象语法树,该第一程序代码使用升级前的目标框架语法编写,该目标抽象语法树包括多个树节点;获取各树节点对应的节点升级规则,并根据各树节点对应的节点升级规则对各树节点进行转换处理,得到处理后的目标抽象语法树,该节点升级规则是根据升级前的目标框架语法对应的抽象语法树和升级后的目标框架语法对应的抽象语法树之间的目标差异得到的;将该处理后的目标抽象语法树转换为第二程序代码,该第二程序代码使用升级后的目标框架语法编写。本申请实施例提供的技术方案能够提高程序升级的效率。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种程序升级方法、装置、设备及存储介质。
背景技术
实际应用中,程序通常需要依赖程序框架来进行开发,换句话说,程序通常需要使用程序框架对应的框架语法来进行编写。实际应用中,程序框架可以进行升级,其中,程序框架的升级本质上是框架语法的升级。为了与升级后的程序框架相适应,程序也通常需要跟随其所依赖的程序框架进行升级。
相关技术中,可以由技术人员按照升级后的框架语法对程序中的代码进行重编写,以通过重编写的方式,实现程序的升级。
然而,由技术人员对代码进行重编写的方式效率较低。
发明内容
基于此,本申请实施例提供了一种程序升级方法、装置、设备及存储介质,可以提高程序升级的效率。
第一方面,提供了一种程序升级方法,该方法包括:
获取第一程序代码,并将该第一程序代码转换为目标抽象语法树,该第一程序代码使用升级前的目标框架语法编写,该目标抽象语法树包括多个树节点;获取各树节点对应的节点升级规则,并根据各树节点对应的节点升级规则对各树节点进行转换处理,得到处理后的目标抽象语法树,该节点升级规则是根据升级前的目标框架语法对应的抽象语法树和升级后的目标框架语法对应的抽象语法树之间的目标差异得到的;将该处理后的目标抽象语法树转换为第二程序代码,该第二程序代码使用升级后的目标框架语法编写。
在其中一个实施例中,将该第一程序代码转换成目标抽象语法树,包括:
遍历该第一程序代码中的每个代码组成部分,该代码组成部分包括文件或者程序组件;对于各代码组成部分,分别进行语法树转换处理,得到各代码组成部分所分别对应的该目标抽象语法树。
在其中一个实施例中,该节点升级规则为脚本,根据各树节点对应的节点升级规则对各树节点进行转换处理,包括:
通过执行各树节点对应的节点升级规则对各树节点进行转换处理。
在其中一个实施例中,该方法还包括:调用@babel/core核心库中的transform方法;
对应地,该将该第一程序代码转换为目标抽象语法树,包括:通过该transform方法,将该第一程序代码转换为该目标抽象语法树;
对应地,该将该处理后的目标抽象语法树转换为第二程序代码,包括:通过该transform方法,将该处理后的目标抽象语法树转换为该第二程序代码。
在其中一个实施例中,获取各树节点对应的节点升级规则之前,该方法还包括:
输出语法树转换界面,该语法树转换界面包括代码输入框以及语法树转换选项,该代码输入框用于供用户输入目标程序代码,该目标程序代码使用升级前的目标框架语法编写,或者,使用升级后的目标框架语法编写;在检测到对该语法树转换选项的触发操作后,将该代码输入框中输入的该目标程序代码转换为参照抽象语法树,其中,该参照抽象语法树供用户确定该目标差异。
在其中一个实施例中,获取各树节点对应的节点升级规则,包括:
获取各树节点的节点类型;根据各树节点的节点类型,从升级规则数据库中查找各树节点对应的节点升级规则,该升级规则数据库中存储有节点类型和节点升级规则的至少一个对应关系。
在其中一个实施例中,根据各树节点的节点类型,从升级规则数据库中查找各树节点对应的节点升级规则之前,该方法还包括:
输出升级规则编辑界面,该升级规则编辑界面包括升级规则输入框、节点类型输入框以及保存选项,该升级规则输入框用于供用户输入节点升级规则,该节点类型输入框用于供用户输入节点类型;在检测到对该保存选项的触发操作后,将该升级规则输入框中输入的节点升级规则以及该节点类型输入框中输入的节点类型对应存储至该升级规则数据库中。
第二方面,提供了一种程序升级装置,该程序升级装置包括:
第一转换模块,用于获取第一程序代码,并将该第一程序代码转换为目标抽象语法树,该第一程序代码使用升级前的目标框架语法编写,该目标抽象语法树包括多个树节点;
处理模块,用于获取各树节点对应的节点升级规则,并根据各树节点对应的节点升级规则对各树节点进行转换处理,得到处理后的目标抽象语法树,该节点升级规则是根据升级前的目标框架语法对应的抽象语法树和升级后的目标框架语法对应的抽象语法树之间的目标差异得到的;
第二转换模块,用于将该处理后的目标抽象语法树转换为第二程序代码,该第二程序代码使用升级后的目标框架语法编写。
在其中一个实施例中,该第一转换模块,具体用于:遍历该第一程序代码中的每个代码组成部分,该代码组成部分包括文件或者程序组件;对于各代码组成部分,分别进行语法树转换处理,得到各代码组成部分所分别对应的该目标抽象语法树。
在其中一个实施例中,该节点升级规则为脚本,该处理模块,具体用于:通过执行各树节点对应的节点升级规则对各树节点进行转换处理。
在其中一个实施例中,该装置还包括调用模块,该调用模块,用于:调用@babel/core核心库中的transform方法;
该第一转换模块,具体用于:通过该transform方法,将该第一程序代码转换为该目标抽象语法树;
该第二转换模块,具体用于:通过该transform方法,将该处理后的目标抽象语法树转换为该第二程序代码。
在其中一个实施例中,该装置还包括第一输出模块和第三转换模块;
该第一输出模块,用于输出语法树转换界面,该语法树转换界面包括代码输入框以及语法树转换选项,该代码输入框用于供用户输入目标程序代码,该目标程序代码使用升级前的目标框架语法编写,或者,使用升级后的目标框架语法编写;
该第三转换模块,用于在检测到对该语法树转换选项的触发操作后,将该代码输入框中输入的该目标程序代码转换为参照抽象语法树,其中,该参照抽象语法树供用户确定该目标差异。
在其中一个实施例中,该处理模块,具体用于:获取各树节点的节点类型;根据各树节点的节点类型,从升级规则数据库中查找各树节点对应的节点升级规则,该升级规则数据库中存储有节点类型和节点升级规则的至少一个对应关系。
在其中一个实施例中,该装置还包括第二输出模块以及存储模块;
该第二输出模块,用于:输出升级规则编辑界面,该升级规则编辑界面包括升级规则输入框、节点类型输入框以及保存选项,该升级规则输入框用于供用户输入节点升级规则,该节点类型输入框用于供用户输入节点类型;
该存储模块,用于在检测到对该保存选项的触发操作后,将该升级规则输入框中输入的节点升级规则以及该节点类型输入框中输入的节点类型对应存储至该升级规则数据库中。
第三方面,提供了一种计算机设备,包括存储器和处理器,该存储器存储有计算机程序,该计算机程序被该处理器执行时实现如上述第一方面任一所述的程序升级方法。
第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述第一方面任一所述的程序升级方法。
本申请实施例提供的技术方案带来的有益效果至少包括:
通过将使用升级前的目标框架语法编写的第一程序代码转换为目标抽象语法树,并利用该目标抽象语法树中各树节点对应的节点升级规则,对该目标抽象语法树中各树节点进行转换处理,得到处理后的目标抽象语法树,而后,将处理后的目标抽象语法树转换为第二程序代码,该第二程序代码使用升级后的目标框架语法编写,这样,就可以使程序能够跟随着目标框架语法的升级而自动升级,由于在升级过程中不需要由技术人员对第一程序代码的代码进行重编写,因此,可以提高程序升级的效率。
附图说明
图1为本申请实施例提供到的一种计算机设备的框图;
图2为本申请实施例提供的一种程序升级方法的流程图;
图3为本申请实施例提供的一种示例性的语法树转换界面的示意图;
图4为本申请实施例提供的一种将第一程序代码转换成目标抽象语法树的技术过程的流程图;
图5为本申请实施例提供的一种获取各树节点对应的节点升级规则的技术过程的流程图;
图6为本申请实施例提供的一种示例性的升级规则编辑界面的示意图;
图7为本申请实施例提供的一种程序升级装置的框图;
图8为本申请实施例提供的另一种程序升级装置的框图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
为了使读者易于理解本申请实施例提供的技术方案,下面,将对本申请实施例所涉及到的一些专有概念进行简要解释。
1、程序框架。
程序框架(Framework)这一概念的出现来源于人们对复用的渴望,其指的是可复用的程序逻辑,表现为一组抽象构件及抽象构件之间交互的方法。
在实际应用中,程序开发当然可以不依赖于任何程序框架,在这种情况下,技术人员可以直接从最基础的底层API开始构建程序,然而,这种方式对于微型程序或许可行,但是,对于复杂的大型程序而言,其难度是非常大的。
因此,通常情况下,程序开发都需要依赖程序框架来进行,这样,技术人员就只需要在程序框架相应的地方添加程序的具体逻辑就可以了,也就是说,技术人员只需要使用“血”和“肉”来填充程序框架这一骨架就可以得到程序了。由以上说明可知,所谓依赖程序框架进行程序开发指的就是基于程序框架对应的程序语法编写程序代码的过程。
2、抽象语法树。
在web前端开发的领域中,经常被使用到的程序框架是javascript,计算机在运行基于javascript开发的程序时,通常需要将程序代码转换为抽象语法树(英文:AbstractSyntax Tree;简称:AST),以基于该抽象语法树运行程序。
其中,抽象语法树可以包括多个树节点,每个树节点都可以表示程序中的一种代码结构,在实际应用中,抽象语法树中的树节点可以有多种不同的节点类型,例如,树节点的节点类型可以包括:Identifier类型、Property类型、Object Expression类型、FunctionExpression类型、Variable Declarator类型、Block Statement类型、Return Statement类型、Member Expression类型、This Expression类型等。
在对本申请实施例涉及到的专有概念进行解释之后,下面,将对本申请实施例所涉及到的技术背景进行简要说明,以使读者易于理解本申请实施例提供的技术方案。
在实际应用中,程序框架总是处在不断升级的过程中,通过升级可以修复程序框架的漏洞,并提供更多、更丰富的功能。其中,程序框架的升级本质上就是程序框架对应的框架语法的升级,为了与升级后的程序框架相适应,程序也通常需要跟随其所依赖的程序框架进行升级。然而,相关技术中,一般由技术人员按照升级后的框架语法对程序中的代码进行重编写,以通过重编写的方式,实现程序的升级,这样的程序升级方式效率较低。
有鉴于此,本申请实施例提供了一种程序升级方法,在该程序升级方法中,可以将使用升级前的目标框架语法编写的第一程序代码转换为目标抽象语法树,并利用该目标抽象语法树中各树节点对应的节点升级规则,对该目标抽象语法树中各树节点进行转换处理,得到处理后的目标抽象语法树,而后,将处理后的目标抽象语法树转换为第二程序代码,该第二程序代码使用升级后的目标框架语法编写,这样,就可以使第一程序代码能够跟随着目标框架语法的升级而自动升级,由于在升级过程中不需要由技术人员对第一程序代码的代码进行重编写,因此,可以提高程序升级的效率。
本申请实施例提供的程序升级方法可以用于服务器等计算机设备中,请参考图1,其示出了本申请实施例提供的一种计算机设备的框图。
如图1所示,该计算机设备包括通过系统总线连接的处理器和存储器。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机程序被处理器执行时以实现一种程序升级方法。
本领域技术人员可以理解,图1中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
请参考图2,其示出了本申请实施例提供的一种程序升级方法的流程图,该程序升级方法可以应用于服务器中。如图2所示,该程序升级方法可以包括以下步骤:
步骤201、服务器获取第一程序代码,并将第一程序代码转换为目标抽象语法树。
在本申请实施例中,第一程序代码为待进行升级的程序的代码,也即是,第一程序代码为依赖于升级前的程序框架所开发的程序的代码,其使用升级前的目标框架语法编写,例如,该第一程序代码可以为依赖于升级之前的javascript开发的程序的代码,其使用升级前的javascript的框架语法编写。
在本申请实施例中,服务器可以将第一程序代码转换为目标抽象语法树,其中,目标抽象语法树包括多个树节点。可选的,服务器可以调用@babel/core核心库中的transform方法,该transform方法可以实现程序和抽象语法树之间的转换,通过该transform方法,服务器可以将第一程序代码转换为目标抽象语法树。
步骤202、服务器获取各树节点对应的节点升级规则,并根据各树节点对应的节点升级规则对各树节点进行转换处理,得到处理后的目标抽象语法树。
其中,节点升级规则是根据升级前的目标框架语法对应的抽象语法树和升级后的目标框架语法对应的抽象语法树之间的目标差异得到的。
在本申请的可选实施例中,服务器可以输出语法树转换界面,该语法树转换界面可以包括代码输入框以及语法树转换选项,其中,该代码输入框用于供用户输入目标程序代码,该目标程序代码使用升级前的目标框架语法编写,或者,使用升级后的目标框架语法编写。在服务器检测到对语法树转换选项的触发操作后,服务器可以将代码输入框中输入的目标程序代码转换为参照抽象语法树,其中,参照抽象语法树供用户确定目标差异,也即是,用户(技术人员)可以基于该参照抽象语法树分析得到升级前的目标框架语法对应的抽象语法树和升级后的目标框架语法对应的抽象语法树之间的目标差异。
请参考图3,其为一种示例性的语法树转换界面的示意图,该语法树转换界面可以包括代码输入框a以及语法树转换选项b,此外,该语法树转换界面还可以包括抽象语法树展示框c,该抽象语法树展示框c可以展示转换得到的参照抽象语法树。
在本申请的可选实施例中,节点升级规则可以为脚本。服务器可以通过执行各树节点对应的节点升级规则对各树节点进行转换处理。
步骤203、服务器将处理后的目标抽象语法树转换为第二程序代码。
其中,第二程序代码为升级之后的程序的代码,也即是,该第二程序代码为依赖于升级后的程序框架的程序的代码,其使用升级后的目标框架语法编写,例如,该第二程序代码可以为依赖于升级后的javascript的程序的代码,其使用升级后的javascript的框架语法编写。
如上文所述,@babel/core核心库中的transform方法可以实现程序和抽象语法树之间的转换,因此,在步骤203中,服务器可以通过transform方法,将处理后的目标抽象语法树转换为第二程序代码。
在本申请实施例提供的程序升级方法中,通过将使用升级前的目标框架语法编写的第一程序代码转换为目标抽象语法树,并利用该目标抽象语法树中各树节点对应的节点升级规则,对该目标抽象语法树中各树节点进行转换处理,得到处理后的目标抽象语法树,而后,将处理后的目标抽象语法树转换为第二程序代码,该第二程序代码使用升级后的目标框架语法编写,这样,就可以使程序能够跟随着目标框架语法的升级而自动升级,由于在升级过程中不需要由技术人员对第一程序代码的代码进行重编写,因此,可以提高程序升级的效率。
请参考图4,其示出了本申请实施例提供的一种示例性的“将第一程序代码转换成目标抽象语法树”的技术过程,如图4所示,该技术过程可以包括以下步骤:
步骤301、服务器遍历第一程序代码中的每个代码组成部分,代码组成部分包括文件或者程序组件。
在本申请的可选实施例中,服务器可以调用Node.js组件,通过该Node.js组件,服务器可以对第一程序代码中的每个代码组成部分进行遍历。
步骤302、服务器对于各代码组成部分,分别进行语法树转换处理,得到各代码组成部分所分别对应的目标抽象语法树。
在本申请的可选实施例中,服务器可以调用@babel/core核心库中的transform方法,通过该transform方法,服务器可以将第一程序代码中的各代码组成部分分别转换为目标抽象语法树。
请参考图5,其示出了本申请实施例提供的一种示例性的“获取各树节点对应的节点升级规则”的技术过程,如图5所示,该技术过程可以包括以下步骤:
步骤401、服务器获取各树节点的节点类型。
如上文所述,树节点可以有不同的节点类型,在步骤401中,服务器可以获取目标抽象语法树中各树节点的节点类型。
步骤402、服务器根据各树节点的节点类型,从升级规则数据库中查找各树节点对应的节点升级规则,升级规则数据库中存储有节点类型和节点升级规则的至少一个对应关系。
在本申请的可选实施例中,服务器可以输出升级规则编辑界面,该升级规则编辑界面包括升级规则输入框、节点类型输入框以及保存选项,其中,该升级规则输入框用于供用户输入节点升级规则,该节点类型输入框用于供用户输入节点类型。在检测到对保存选项的触发操作后,服务器可以将升级规则输入框中输入的节点升级规则以及节点类型输入框中输入的节点类型对应存储至该升级规则数据库中。
请参考图6,其为一种示例性的升级规则编辑界面的示意图,如图6所示,该升级规则编辑界面包括升级规则输入框s、节点类型输入框u以及保存选项v。
应该理解的是,虽然图2-6的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-6中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
请参考图7,其示出了本申请实施例提供的一种程序升级装置500的框图,该程序升级装置500可以配置于服务器中。如图7所示,该程序升级装置500可以包括:第一转换模块501、处理模块502以及第二转换模块503。
其中,该第一转换模块501,用于获取第一程序代码,并将该第一程序代码转换为目标抽象语法树,该第一程序代码使用升级前的目标框架语法编写,该目标抽象语法树包括多个树节点。
该处理模块502,用于获取各树节点对应的节点升级规则,并根据各树节点对应的节点升级规则对各树节点进行转换处理,得到处理后的目标抽象语法树,该节点升级规则是根据升级前的目标框架语法对应的抽象语法树和升级后的目标框架语法对应的抽象语法树之间的目标差异得到的。
该第二转换模块503,用于将该处理后的目标抽象语法树转换为第二程序代码,该第二程序代码使用升级后的目标框架语法编写。
在本申请的一个可选实施例中,该第一转换模块501,具体用于:遍历该第一程序代码中的每个代码组成部分,该代码组成部分包括文件或者程序组件;对于各代码组成部分,分别进行语法树转换处理,得到各代码组成部分所分别对应的该目标抽象语法树。
在本申请的一个可选实施例中,该节点升级规则为脚本,该处理模块502,具体用于:通过执行各树节点对应的节点升级规则对各树节点进行转换处理。
在本申请的一个可选实施例中,该处理模块502,具体用于:获取各树节点的节点类型;根据各树节点的节点类型,从升级规则数据库中查找各树节点对应的节点升级规则,该升级规则数据库中存储有节点类型和节点升级规则的至少一个对应关系。
请参考图8,其示出了本申请实施例提供的另一种程序升级装置600的框图,该程序升级装置600除了包括程序升级装置500包括的各个模块外,可选的,还包括调用模块504、第一输出模块505、第三转换模块506、第二输出模块507以及存储模块508。
该调用模块504,用于:调用@babel/core核心库中的transform方法。
该第一转换模块501,具体用于:通过该transform方法,将该第一程序代码转换为该目标抽象语法树。
该第二转换模块503,具体用于:通过该transform方法,将该处理后的目标抽象语法树转换为该第二程序代码。
该第一输出模块505,用于输出语法树转换界面,该语法树转换界面包括代码输入框以及语法树转换选项,该代码输入框用于供用户输入目标程序代码,该目标程序代码使用升级前的目标框架语法编写,或者,使用升级后的目标框架语法编写。
该第三转换模块506,用于在检测到对该语法树转换选项的触发操作后,将该代码输入框中输入的该目标程序代码转换为参照抽象语法树,其中,该参照抽象语法树供用户确定该目标差异。
该第二输出模块507,用于:输出升级规则编辑界面,该升级规则编辑界面包括升级规则输入框、节点类型输入框以及保存选项,该升级规则输入框用于供用户输入节点升级规则,该节点类型输入框用于供用户输入节点类型。
该存储模块508,用于在检测到对该保存选项的触发操作后,将该升级规则输入框中输入的节点升级规则以及该节点类型输入框中输入的节点类型对应存储至该升级规则数据库中。
本申请实施例提供的程序升级装置,可以实现上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
关于程序升级装置的具体限定可以参见上文中对于程序升级方法的限定,在此不再赘述。上述程序升级装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块的操作。
在本申请的一个实施例中,提供了一种计算机设备,该计算机设备包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
获取第一程序代码,并将该第一程序代码转换为目标抽象语法树,该第一程序代码使用升级前的目标框架语法编写,该目标抽象语法树包括多个树节点;获取各树节点对应的节点升级规则,并根据各树节点对应的节点升级规则对各树节点进行转换处理,得到处理后的目标抽象语法树,该节点升级规则是根据升级前的目标框架语法对应的抽象语法树和升级后的目标框架语法对应的抽象语法树之间的目标差异得到的;将该处理后的目标抽象语法树转换为第二程序代码,该第二程序代码使用升级后的目标框架语法编写。
在本申请的一个实施例中,处理器执行计算机程序时还实现以下步骤:遍历该第一程序代码中的每个代码组成部分,该代码组成部分包括文件或者程序组件;对于各代码组成部分,分别进行语法树转换处理,得到各代码组成部分所分别对应的该目标抽象语法树。
在本申请的一个实施例中,该节点升级规则为脚本,处理器执行计算机程序时还实现以下步骤:通过执行各树节点对应的节点升级规则对各树节点进行转换处理。
在本申请的一个实施例中,处理器执行计算机程序时还实现以下步骤:调用@babel/core核心库中的transform方法;通过该transform方法,将该第一程序代码转换为该目标抽象语法树;通过该transform方法,将该处理后的目标抽象语法树转换为该第二程序代码。
在本申请的一个实施例中,处理器执行计算机程序时还实现以下步骤:输出语法树转换界面,该语法树转换界面包括代码输入框以及语法树转换选项,该代码输入框用于供用户输入目标程序代码,该目标程序代码使用升级前的目标框架语法编写,或者,使用升级后的目标框架语法编写;在检测到对该语法树转换选项的触发操作后,将该代码输入框中输入的该目标程序代码转换为参照抽象语法树,其中,该参照抽象语法树供用户确定该目标差异。
在本申请的一个实施例中,处理器执行计算机程序时还实现以下步骤:获取各树节点的节点类型;根据各树节点的节点类型,从升级规则数据库中查找各树节点对应的节点升级规则,该升级规则数据库中存储有节点类型和节点升级规则的至少一个对应关系。
在本申请的一个实施例中,处理器执行计算机程序时还实现以下步骤:输出升级规则编辑界面,该升级规则编辑界面包括升级规则输入框、节点类型输入框以及保存选项,该升级规则输入框用于供用户输入节点升级规则,该节点类型输入框用于供用户输入节点类型;在检测到对该保存选项的触发操作后,将该升级规则输入框中输入的节点升级规则以及该节点类型输入框中输入的节点类型对应存储至该升级规则数据库中。
本申请实施例提供的计算机设备,其实现原理和技术效果与上述方法实施例类似,在此不再赘述。
在本申请的一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取第一程序代码,并将该第一程序代码转换为目标抽象语法树,该第一程序代码使用升级前的目标框架语法编写,该目标抽象语法树包括多个树节点;获取各树节点对应的节点升级规则,并根据各树节点对应的节点升级规则对各树节点进行转换处理,得到处理后的目标抽象语法树,该节点升级规则是根据升级前的目标框架语法对应的抽象语法树和升级后的目标框架语法对应的抽象语法树之间的目标差异得到的;将该处理后的目标抽象语法树转换为第二程序代码,该第二程序代码使用升级后的目标框架语法编写。
在本申请的一个实施例中,计算机程序被处理器执行时还实现以下步骤:遍历该第一程序代码中的每个代码组成部分,该代码组成部分包括文件或者程序组件;对于各代码组成部分,分别进行语法树转换处理,得到各代码组成部分所分别对应的该目标抽象语法树。
在本申请的一个实施例中,该节点升级规则为脚本,计算机程序被处理器执行时还实现以下步骤:通过执行各树节点对应的节点升级规则对各树节点进行转换处理。
在本申请的一个实施例中,计算机程序被处理器执行时还实现以下步骤:调用@babel/core核心库中的transform方法;通过该transform方法,将该第一程序代码转换为该目标抽象语法树;通过该transform方法,将该处理后的目标抽象语法树转换为该第二程序代码。
在本申请的一个实施例中,计算机程序被处理器执行时还实现以下步骤:输出语法树转换界面,该语法树转换界面包括代码输入框以及语法树转换选项,该代码输入框用于供用户输入目标程序代码,该目标程序代码使用升级前的目标框架语法编写,或者,使用升级后的目标框架语法编写;在检测到对该语法树转换选项的触发操作后,将该代码输入框中输入的该目标程序代码转换为参照抽象语法树,其中,该参照抽象语法树供用户确定该目标差异。
在本申请的一个实施例中,计算机程序被处理器执行时还实现以下步骤:获取各树节点的节点类型;根据各树节点的节点类型,从升级规则数据库中查找各树节点对应的节点升级规则,该升级规则数据库中存储有节点类型和节点升级规则的至少一个对应关系。
在本申请的一个实施例中,计算机程序被处理器执行时还实现以下步骤:输出升级规则编辑界面,该升级规则编辑界面包括升级规则输入框、节点类型输入框以及保存选项,该升级规则输入框用于供用户输入节点升级规则,该节点类型输入框用于供用户输入节点类型;在检测到对该保存选项的触发操作后,将该升级规则输入框中输入的节点升级规则以及该节点类型输入框中输入的节点类型对应存储至该升级规则数据库中。
本实施例提供的计算机可读存储介质,其实现原理和技术效果与上述方法实施例类似,在此不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种程序升级方法,其特征在于,所述方法包括:
获取第一程序代码,并将所述第一程序代码转换为目标抽象语法树,所述第一程序代码使用升级前的目标框架语法编写,所述目标抽象语法树包括多个树节点;
获取各所述树节点对应的节点升级规则,并根据各所述树节点对应的节点升级规则对各所述树节点进行转换处理,得到处理后的目标抽象语法树,所述节点升级规则是根据升级前的目标框架语法对应的抽象语法树和升级后的目标框架语法对应的抽象语法树之间的目标差异得到的;
将所述处理后的目标抽象语法树转换为第二程序代码,所述第二程序代码使用升级后的目标框架语法编写。
2.根据权利要求1所述的方法,其特征在于,所述将所述第一程序代码转换成目标抽象语法树,包括:
遍历所述第一程序代码中的每个代码组成部分,所述代码组成部分包括文件或者程序组件;
对于各所述代码组成部分,分别进行语法树转换处理,得到各所述代码组成部分所分别对应的所述目标抽象语法树。
3.根据权利要求1所述的方法,其特征在于,所述节点升级规则为脚本,所述根据各所述树节点对应的节点升级规则对各所述树节点进行转换处理,包括:
通过执行各所述树节点对应的节点升级规则对各所述树节点进行转换处理。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
调用@babel/core核心库中的transform方法;
对应地,所述将所述第一程序代码转换为目标抽象语法树,包括:
通过所述transform方法,将所述第一程序代码转换为所述目标抽象语法树;
对应地,所述将所述处理后的目标抽象语法树转换为第二程序代码,包括:
通过所述transform方法,将所述处理后的目标抽象语法树转换为所述第二程序代码。
5.根据权利要求1所述的方法,其特征在于,所述获取各所述树节点对应的节点升级规则之前,所述方法还包括:
输出语法树转换界面,所述语法树转换界面包括代码输入框以及语法树转换选项,所述代码输入框用于供用户输入目标程序代码,所述目标程序代码使用升级前的目标框架语法编写,或者,使用升级后的目标框架语法编写;
在检测到对所述语法树转换选项的触发操作后,将所述代码输入框中输入的所述目标程序代码转换为参照抽象语法树,其中,所述参照抽象语法树供用户确定所述目标差异。
6.根据权利要求1所述的方法,其特征在于,所述获取各所述树节点对应的节点升级规则,包括:
获取各所述树节点的节点类型;
根据各所述树节点的节点类型,从升级规则数据库中查找各所述树节点对应的节点升级规则,所述升级规则数据库中存储有节点类型和节点升级规则的至少一个对应关系。
7.根据权利要求6所述的方法,其特征在于,所述根据各所述树节点的节点类型,从升级规则数据库中查找各所述树节点对应的节点升级规则之前,所述方法还包括:
输出升级规则编辑界面,所述升级规则编辑界面包括升级规则输入框、节点类型输入框以及保存选项,所述升级规则输入框用于供用户输入节点升级规则,所述节点类型输入框用于供用户输入节点类型;
在检测到对所述保存选项的触发操作后,将所述升级规则输入框中输入的节点升级规则以及所述节点类型输入框中输入的节点类型对应存储至所述升级规则数据库中。
8.一种程序升级装置,其特征在于,所述装置包括:
第一转换模块,用于获取第一程序代码,并将所述第一程序代码转换为目标抽象语法树,所述第一程序代码使用升级前的目标框架语法编写,所述目标抽象语法树包括多个树节点;
处理模块,用于获取各所述树节点对应的节点升级规则,并根据各所述树节点对应的节点升级规则对各所述树节点进行转换处理,得到处理后的目标抽象语法树,所述节点升级规则是根据升级前的目标框架语法对应的抽象语法树和升级后的目标框架语法对应的抽象语法树之间的目标差异得到的;
第二转换模块,用于将所述处理后的目标抽象语法树转换为第二程序代码,所述第二程序代码使用升级后的目标框架语法编写。
9.一种计算机设备,其特征在于,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至7任一所述的程序升级方法。
10.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一所述的程序升级方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010604150.9A CN111752571A (zh) | 2020-06-29 | 2020-06-29 | 程序升级方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010604150.9A CN111752571A (zh) | 2020-06-29 | 2020-06-29 | 程序升级方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111752571A true CN111752571A (zh) | 2020-10-09 |
Family
ID=72676732
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010604150.9A Pending CN111752571A (zh) | 2020-06-29 | 2020-06-29 | 程序升级方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111752571A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112328257A (zh) * | 2020-11-24 | 2021-02-05 | 中国工商银行股份有限公司 | 代码转换方法及装置 |
CN113448605A (zh) * | 2021-06-29 | 2021-09-28 | 北京高途云集教育科技有限公司 | 一种软件更新方法、装置、电子设备及存储介质 |
CN113553064A (zh) * | 2021-07-07 | 2021-10-26 | 北京计算机技术及应用研究所 | 一种web前端代码转换方法 |
CN114816467A (zh) * | 2021-03-25 | 2022-07-29 | 北京百度网讯科技有限公司 | 升级文件的生成方法、装置和电子设备 |
CN114942782A (zh) * | 2021-09-24 | 2022-08-26 | 华为技术有限公司 | 模型的代码迁移方法及装置 |
CN115576586A (zh) * | 2022-11-15 | 2023-01-06 | 四川蜀天信息技术有限公司 | 一种智能运营与维护服务器的服务端程序的方法 |
CN115904480A (zh) * | 2023-01-09 | 2023-04-04 | 成方金融科技有限公司 | 代码重构方法、装置、电子设备及存储介质 |
CN117272918A (zh) * | 2023-11-21 | 2023-12-22 | 芯行纪科技有限公司 | 在gui界面中进行时钟树规则配置的方法及相关设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140282373A1 (en) * | 2013-03-15 | 2014-09-18 | Trinity Millennium Group, Inc. | Automated business rule harvesting with abstract syntax tree transformation |
CN110321138A (zh) * | 2018-03-28 | 2019-10-11 | 阿里巴巴集团控股有限公司 | 一种程序更新、迁移方法和装置 |
CN110457065A (zh) * | 2019-08-14 | 2019-11-15 | 中国工商银行股份有限公司 | 用于获得可兼容多版本系统的应用的方法及装置 |
CN110609693A (zh) * | 2019-08-15 | 2019-12-24 | 平安国际智慧城市科技股份有限公司 | 基于数据标准化的代码更新方法、装置及终端设备 |
-
2020
- 2020-06-29 CN CN202010604150.9A patent/CN111752571A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140282373A1 (en) * | 2013-03-15 | 2014-09-18 | Trinity Millennium Group, Inc. | Automated business rule harvesting with abstract syntax tree transformation |
CN110321138A (zh) * | 2018-03-28 | 2019-10-11 | 阿里巴巴集团控股有限公司 | 一种程序更新、迁移方法和装置 |
CN110457065A (zh) * | 2019-08-14 | 2019-11-15 | 中国工商银行股份有限公司 | 用于获得可兼容多版本系统的应用的方法及装置 |
CN110609693A (zh) * | 2019-08-15 | 2019-12-24 | 平安国际智慧城市科技股份有限公司 | 基于数据标准化的代码更新方法、装置及终端设备 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112328257A (zh) * | 2020-11-24 | 2021-02-05 | 中国工商银行股份有限公司 | 代码转换方法及装置 |
CN114816467A (zh) * | 2021-03-25 | 2022-07-29 | 北京百度网讯科技有限公司 | 升级文件的生成方法、装置和电子设备 |
CN114816467B (zh) * | 2021-03-25 | 2023-04-28 | 北京百度网讯科技有限公司 | 升级文件的生成方法、装置和电子设备 |
CN113448605A (zh) * | 2021-06-29 | 2021-09-28 | 北京高途云集教育科技有限公司 | 一种软件更新方法、装置、电子设备及存储介质 |
CN113448605B (zh) * | 2021-06-29 | 2024-02-09 | 北京高途云集教育科技有限公司 | 一种软件更新方法、装置、电子设备及存储介质 |
CN113553064A (zh) * | 2021-07-07 | 2021-10-26 | 北京计算机技术及应用研究所 | 一种web前端代码转换方法 |
CN113553064B (zh) * | 2021-07-07 | 2023-07-14 | 北京计算机技术及应用研究所 | 一种web前端代码转换方法 |
CN114942782A (zh) * | 2021-09-24 | 2022-08-26 | 华为技术有限公司 | 模型的代码迁移方法及装置 |
CN115576586A (zh) * | 2022-11-15 | 2023-01-06 | 四川蜀天信息技术有限公司 | 一种智能运营与维护服务器的服务端程序的方法 |
CN115904480A (zh) * | 2023-01-09 | 2023-04-04 | 成方金融科技有限公司 | 代码重构方法、装置、电子设备及存储介质 |
CN117272918A (zh) * | 2023-11-21 | 2023-12-22 | 芯行纪科技有限公司 | 在gui界面中进行时钟树规则配置的方法及相关设备 |
CN117272918B (zh) * | 2023-11-21 | 2024-02-23 | 芯行纪科技有限公司 | 在gui界面中进行时钟树规则配置的方法及相关设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111752571A (zh) | 程序升级方法、装置、设备及存储介质 | |
CN109032662B (zh) | 代码文件生成方法、装置、计算机设备和存储介质 | |
US11288050B2 (en) | Method for acquiring executable file of heterogeneous computing system, method for running the heterogeneous computing system and related products | |
CN109840083B (zh) | 网页组件模板构建方法、装置、计算机设备和存储介质 | |
US10269087B2 (en) | Language translation using preprocessor macros | |
US20090222827A1 (en) | Continuation based declarative definition and composition | |
CN109032631B (zh) | 应用程序补丁包获取方法、装置、计算机设备及存储介质 | |
CN109597618B (zh) | 程序开发方法、装置、计算机设备及存储介质 | |
CN108549535B (zh) | 一种基于文件依赖关系的高效程序解析方法和系统 | |
US20180203676A1 (en) | Removing library objects from a static library | |
CN108241516B (zh) | 嵌入式系统程序加载方法、装置、计算机设备和存储介质 | |
CN115686527A (zh) | 基于算子的编译方法、装置、计算机设备和存储介质 | |
US9207956B2 (en) | Class loading device for a java runtime environment, cluster system and method of executing a function | |
EP3441883B1 (en) | Function serialization for inter-thread messaging | |
CN110347588B (zh) | 软件验证方法、装置、计算机设备和存储介质 | |
CN111309332A (zh) | 文件内容按需加载方法、装置及电子设备、存储介质 | |
CN111158665B (zh) | 代码生成方法及装置、电子设备和存储介质 | |
CN111158667A (zh) | 代码注入方法和装置、电子设备及存储介质 | |
US11429358B2 (en) | Representing asynchronous state machine in intermediate code | |
CN112650502A (zh) | 批处理任务处理方法、装置、计算机设备和存储介质 | |
CN109542447B (zh) | 一种otx程序文件执行方法及装置 | |
CN116774988B (zh) | 解除框架包模式符号依赖的方法及装置 | |
CN116911406B (zh) | 风控模型部署方法、装置、计算机设备和存储介质 | |
CN114579135B (zh) | 一种安装包生成方法及装置 | |
CN112860228B (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 | ||
EE01 | Entry into force of recordation of patent licensing contract | ||
EE01 | Entry into force of recordation of patent licensing contract |
Application publication date: 20201009 Assignee: GUANGZHOU CUBESILI INFORMATION TECHNOLOGY Co.,Ltd. Assignor: GUANGZHOU HUADUO NETWORK TECHNOLOGY Co.,Ltd. Contract record no.: X2021440000031 Denomination of invention: Program upgrade method, device, device and storage medium License type: Common License Record date: 20210125 |