CN114281401A - 基于字节码确定修改功能点的方法、装置、设备及介质 - Google Patents

基于字节码确定修改功能点的方法、装置、设备及介质 Download PDF

Info

Publication number
CN114281401A
CN114281401A CN202111592403.6A CN202111592403A CN114281401A CN 114281401 A CN114281401 A CN 114281401A CN 202111592403 A CN202111592403 A CN 202111592403A CN 114281401 A CN114281401 A CN 114281401A
Authority
CN
China
Prior art keywords
version package
package
function
current deployment
determining
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
Application number
CN202111592403.6A
Other languages
English (en)
Inventor
甘兵
廖瑞毅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Digital Guangdong Network Construction Co Ltd
Original Assignee
Digital Guangdong Network Construction Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Digital Guangdong Network Construction Co Ltd filed Critical Digital Guangdong Network Construction Co Ltd
Priority to CN202111592403.6A priority Critical patent/CN114281401A/zh
Publication of CN114281401A publication Critical patent/CN114281401A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

本申请公开一种基于字节码确定修改功能点的方法、装置、设备及介质,包括:获取当前部署版本包和最新版本包,确定最新版本包相对于当前部署版本包的修改结构体;根据当前部署版本包和最新版本包,执行方法体引用符号解析引擎,分别构建当前部署版本包和最新版本包中对应字节码的方法体指令模型;根据方法体指令模型,分别构建当前部署版本包和最新版本包的结构体影响分析图;根据结构体影响分析图和修改结构体,确定修改结构体中的修改功能点。基于上述方法可以快速、准确地确定出两个不同版本包中的修改功能点,从而可以避免在功能代码修改的情况下,对所有的功能点逐一进行测试,进而提高研发效率,节约研发资源。

Description

基于字节码确定修改功能点的方法、装置、设备及介质
技术领域
本申请实施例涉及软件系统处理领域,尤其涉及一种基于字节码确定修改功能点的方法、装置、设备及介质。
背景技术
在对微服务及大型应用系统研发的过程中,通常会发生研发人员流动,导致其他人接手流动研发人员设计的代码的情况。考虑到流动研发人员之前设计的代码的耦合度可能会影响到后续接收的研发人员设计的其他代码模块,那么接手的人员需要在每次发版时对全部功能点都进行测试。这样,不仅会降低研发效率,也极大地浪费研发资源。
发明内容
本申请实施例提供了一种基于字节码确定修改功能点的方法、装置、设备及介质,能够快速、准确地确定出两个不同版本包中的修改功能点,从而可以避免在功能代码修改的情况下,对所有的功能点逐一进行测试,进而提高研发效率,节约研发资源。
第一方面,本申请实施例还提供了一种基于字节码确定修改功能点的方法,该方法包括:
获取当前部署版本包和最新版本包,确定最新版本包相对于当前部署版本包的修改结构体;
根据当前部署版本包和最新版本包,执行方法体引用符号解析引擎,分别构建当前部署版本包和最新版本包中对应字节码的方法体指令模型;
根据方法体指令模型,分别构建当前部署版本包和最新版本包的结构体影响分析图;
根据结构体影响分析图和修改结构体,确定修改结构体中的修改功能点。
第二方面,本申请实施例还提供了一种基于字节码确定修改功能点的装置,该装置包括:
确定模块,用于获取当前部署版本包和最新版本包,确定最新版本包相对于当前部署版本包的修改结构体;构建模块,用于根据当前部署版本包和最新版本包,执行方法体引用符号解析引擎,分别构建当前部署版本包中对应字节码的方法体指令模型和最新版本包中对应字节码的方法体指令模型;
构建模块,还用于根据方法体指令模型,分别构建当前部署版本包和最新版本包的结构体影响分析图;
确定模块,还用于根据结构体影响分析图和修改结构体,确定修改结构体中的修改功能点。
第三方面,本申请实施例还提供了一种计算机设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,当处理器执行计算机程序时,实现如本申请任意实施例提供的基于字节码确定修改功能点的方法。
第四方面,本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时,实现如本申请任意实施例提供的基于字节码确定修改功能点的方法。
本申请实施例提供了一种基于字节码确定修改功能点的方法、装置、设备及存储介质,该方法可以包括:获取当前部署版本包和最新版本包,确定最新版本包相对于当前部署版本包的修改结构体;根据当前部署版本包和最新版本包,执行方法体引用符号解析引擎,分别构建当前部署版本包和最新版本包中对应字节码的方法体指令模型;根据方法体指令模型,分别构建当前部署版本包和最新版本包的结构体影响分析图;根据结构体影响分析图和修改结构体,确定修改结构体中的修改功能点。基于上述方法可以快速、准确地确定出两个不同版本包中的修改功能点,从而可以避免在功能代码修改的情况下,对所有的功能点逐一进行测试,进而提高研发效率,节约研发资源。
附图说明
图1为本申请实施例提供的一种基于字节码确定修改功能点的方法的流程图;
图1a为本申请实施例提供的一种结构体影响分析图的示意图;
图1b为本申请实施例提供的一种构建当前部署版本包中对应字节码的方法体指令模型和的最新版本包中对应字节码的方法体指令模型的方法流程图;
图2是本申请实施例提供的一种确定当前部署版本包和最新版本包中各功能包的影响索引、各功能包包含的字节码的影响索引的方法流程图;
图3是本申请实施例提供的一种基于字节码确定修改功能点的装置结构示意图;
图4是本申请实施例中的计算机设备的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部结构。
另外,在本申请实施例中,“可选地”或者“示例性地”等词用于表示作例子、例证或说明。本申请实施例中被描述为“可选地”或者“示例性地”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“可选地”或者“示例性地”等词旨在以具体方式呈现相关概念。
需要说明的是,在本申请实施例中,当前部署版本包和最新版本包中对应字节码的方法体指令模型可以理解为,当前部署版本包中对应字节码的方法体指令模型和最新版本包中对应字节码的方法体指令模型。当前部署版本包和最新版本包的结构体影响分析图可以理解为,当前部署版本包的结构体影响分析图和最新版本包的结构体影响分析图。同样地,当前部署版本包以及最新版本包中各功能包的影响索引,可以理解为当前部署版本包中各功能包的影响索引以及最新版本包中各功能包的影响索引。相应地,其他关于各功能包包含的字节码、对应字节码的方法体指令模型等与上述类似限定的描述均可以理解为,当前部署版本包和最新版本包各自对应的各功能包包含的字节码、对应字节码的方法体指令模型等,在此不一一赘述。
图1为本申请实施例提供的一种基于字节码确定修改功能点的方法的流程图,该方法可以应用于各类微服务系统或大型应用系统(例如,政务服务系统等)场景下,该方法可以由本申请实施例提供的基于字节码确定修改功能点的装置来执行,该装置可以采用软件和/或硬件的方式实现。在一个具体的实施例中,该装置可以集成在计算机设备中,计算机设备比如可以是服务器。以下实施例将以该装置集成在计算机设备中为例进行说明,如图1所示,该方法可以包括但不限于以下步骤:
S101、获取当前部署版本包和最新版本包,确定最新版本包相对于当前部署版本包的修改结构体。
在本申请实施例中,当前部署版本包可以理解为已经设计好的软件包,最新版本包可以理解为对当前部署版本包更新或重新研发设计后的软件包,当前部署版本包和最新版本包各自对应的版本号不同,即可以通过版本号区分当前部署版本包和最新版本包。上述修改结构体表示最新版本包相对于当前部署版本包更新或重新研发设计后的结构体,该修改结构体仅存在于最新版本包中,而不存在于当前部署版本包中。
S102、根据当前部署版本包和最新版本包,执行方法体引用符号解析引擎,分别构建当前部署版本包和最新版本包中对应字节码的方法体指令模型。
示例性地,本步骤的实现方式可以包括:分别遍历当前部署版本包和最新版本包,确定当前部署版本包和最新版本包中各功能包包含的字节码;基于当前部署版本包和最新版本包中各功能包包含的字节码,执行方法体引用符号解析引擎,生成字节码对应的动态链接;根据当前部署版本包和最新版本包中各功能包包含的字节码,以及各字节码对应的动态链接,分别构建当前部署版本包和最新版本包中对应字节码的方法体指令模型。进一步地,上述执行方法体引用符号解析引擎可以理解为运行某段程序代码,对相关方法体指令进行解析。该方法体引用符号解析引擎中可以包括指令计数器,在执行方法体引用符号解析引擎的过程中,可以通过指令计数器的指示,确定当前的执行进程,例如,当前解析得到某个字节码对应的动态链接等。
S103、根据方法体指令模型,分别构建当前部署版本包和最新版本包的结构体影响分析图。
示例性地,可以采用遍历的方式对当前部署版本包和最新版本包进行遍历处理,确定当前部署版本包和最新版本包中各功能包的影响索引、各功能包包含的字节码的影响索引。进而,根据获取的各功能包的影响索引、各功能包包含的字节码的影响索引,以及上述步骤S102中得到的各字节码的方法体指令模型,分别构建当前部署版本包的结构体影响分析图和最新版本包的结构体影响分析图。
需要说明的是,上述各影响索引也可以理解为耦合散出度,或者该节点是否存在子节点,例如,在耦合散出度为0的情况下,表示该节点为最后一个节点,其并不具备子节点;在耦合散出度不为0的情况下,表示该节点具有子节点,那么该节点对应的影响索引(或耦合散出度)为当前节点相连的所有节点的影响索引构成的集合的消息摘要算法第五版(Message Digest Algorithm,MD5)的散列码。基于各功能包的影响索引以及各功能包包含的字节码的影响索引可以确定出各功能包以及各字节码之间的关联关系。字节码的方法体指令模型也可以理解为是以模型的形式呈现的关于该字节码的具体描述,那么在分别获取当前部署版本包和最新版本包中各功能包的影响索引、各功能包包含的字节码的影响索引,以及各字节码对应的方法体指令模型后,可以得到当前部署版本包的结构体影响分析图和最新版本包的结构体影响分析图。例如,以对应功能包的影响索引和对应功能包包含的字节码的影响索引,分别搭建当前部署版本包和最新版本包的结构体影响分析图框架,进而基于各字节码的方法体指令模型进一步完善该结构体影响分析图框架中各节点的具体描述,从而最终得到当前部署版本包的结构体影响分析图和最新版本包的结构体影响分析图。
S104、根据结构体影响分析图和修改结构体,确定修改结构体中的修改功能点。
由于当前部署版本包和最新版本包各自对应的结构体影响分析图中分别包含有当前部署版本包和最新版本包中各节点的具体描述,那么在确定最新版本包相对于当前部署版本包的修改结构体后,可以基于该结构体,以及当前部署版本包和最新版本包各自对应的结构体影响分析图,确定出最新版本包相对于当前部署版本包的修改结构体中的具体修改功能点。
例如,基于修改结构体在当前部署版本包中确定修改结构体包含的至少一个功能点,并将确定的至少一个功能点确定为第一功能点;根据修改结构体在最新部署版本包中确定修改结构体包含的至少一个功能点,并将确定的至少一个功能点确定为第二功能点;以遍历的方式匹配当前部署版本包中的各第一功能点和最新版本包中的各第二功能点,在最新版本包的修改结构体中各第二功能点中的任一功能点的前面或字节与当前部署版本包的修改结构体中所有第一功能点均不相同的情况下,确定该第二功能点中的任一功能点为最新版本包相对于当前部署版本包修改结构体中的修改功能点。
比如,以图1a所示的结构体影响分析图(当前部署版本包的结构体影响分析图,或最新版本包的结构体影响分析图,图中的Byte[]methodinstr表示方法体指令码(或理解为字节指令码),Blshipaflink linkrefs[……]表示方法体间符号引用链表)为例,从根节点出发,在图中所呈现的结构中寻找首个功能包(或方法体)的影响索引,若当前部署版本包的结构体影响分析图和最新版本包的结构体影响分析图中,该影响索引相同,表示该路径不存在修改结构体,那么停止深度查找,并更换查找路径。若查找路径中存在影响索引不同的情况,表示对应节点为修改结构体,那么可以继续查找到节点耦合散出度为0的节点。进一步地,可以将查找结果记录至affected_method_list,这样基于affected_method_list即可清楚地了解该方法体修改后,对其他相关功能点或方法体的影响,进而也可以提醒相关人员有针对性地进行功能测试,提高研发效率。
即在本申请实施例中,可以通过反向传播影响索引的方式,在结构体影响分析图中,确定修改结构体中的具体修改功能点。
需要说明的是,上述当前部署版本包中修改结构体可能为空,进而该修改结构体包含的至少一个功能点也可能为空。即该修改结构体可能为最新版本包相对于当前部署版本新研发设计的结构体,那么该修改结构体不存在于当前部署版本包中,即当前部署版本包中修改结构体为空。
本申请实施例提供了一种基于字节码确定修改功能点的方法,该方法包括:获取当前部署版本包和最新版本包,确定最新版本包相对于当前部署版本包的修改结构体;根据当前部署版本包和最新版本包,执行方法体引用符号解析引擎,分别构建当前部署版本包和最新版本包中对应字节码的方法体指令模型;根据方法体指令模型,分别构建当前部署版本包和最新版本包的结构体影响分析图;根据结构体影响分析图和修改结构体,确定修改结构体中的修改功能点。基于上述方法可以快速、准确地确定出两个不同版本包中的修改功能点,从而可以避免在功能代码修改的情况下,对所有的功能点逐一进行测试,进而提高研发效率,节约研发资源。
在一种示例中,上述步骤S101中,确定最新版本包相对于当前部署版本包的修改结构体的实现方式可以包括:分别遍历当前部署版本包和最新版本包,确定当前部署版本包中各功能包的影响索引,以及最新版本包中各功能包的影响索引。进而,根据当前部署版本包中各功能包的影响索引,以及最新版本包中各功能包的影响索引,确定最新版本包相对于当前部署版本包的修改结构体。
例如,在本申请实施例中,当前部署版本包和最新版本包均可以实现多个不同的功能,具体地,该多个不同的功能可以通过当前部署版本包和最新版本包中包含的各个功能包实现。进一步地,各功能包(package)中还包含有至少一个字节码(class字节码),即功能包与字节码之间的关系可以理解为树状图,例如,功能包为tree类型的节点,字节码为tree节点下的leaf类型节点。
示例性地,确定上述不同版本包中各功能包的影响索引的实现方式可以包括:以遍历的方式分别提取当前部署版本包中各功能包包含的字节码,以及最新版本包中各功能包包含的字节码;基于消息摘要算法对上述提取的各功能包包含的字节码进行处理,确定字节码的散列码;进而,根据得到的字节码的散列码分别确定当前部署版本包中各功能包的影响索引,以及最新版本包中各功能包的影响索引。
可选地,上述消息摘要算法可以采用消息摘要算法第五版(Message DigestAlgorithm,MD5)。
获取各功能包的影响索引后,可以以遍历的方式匹配最新版本包中各功能包的影响索引与当前部署版本包中各功能包的影响索引,并基于匹配的结果确定最新版本包相对于当前部署版本包的修改结构体。示例性地,该修改结构体可以为某一功能包,也可以为某一功能包中包含的功能点(或称为方法体)。
例如,在最新版本包中任一功能包的影响索引与当前部署版本包中所有功能包的影响索引不同的情况下,确定任一功能包为最新版本包相对于当前部署版本报的修改结构体。比如,假设最新版本包中包含A功能包、B功能包、C功能包,当前部署版本包中包含A功能包、B功能包,当前部署版本包中的A功能包、B功能包的影响索引均与最新版本包中的A功能包、B功能包的影响索引相同,而最新版本包中的C功能包的影响索引与当前部署版本包中的A功能包、B功能包的影响索引均不相同,表示最新版本包中的C功能包为最新研发设计的功能包,那么该C功能包即为最新版本包相对于当前部署版本包的修改结构体。
进一步地,在本申请实施例中,上述遍历匹配的方式可以为按照树状图,从上到下的顺序对当前部署版本包以及最新版本包中各功能包进行遍历、匹配。如图1b所示,在一种示例中,上述步骤S102中,生成字节码对应的动态链接的实现方式可以包括但不限于以下方式:
S1001、分别基于当前部署版本包中各功能包包含的字节码和最新版本包中各自包含的功能包中的字节码提取方法描述表。
具体地,该方法描述表中可以包含变量表、字节码结构总码元表、常量池、方法签名、方法出口等。
S1002、根据方法描述表中包含的变量表、字节码结构总码元表和常量池,确定对应字节码的字节码结构信息体。
提取得到各字节码的方法描述表后,可以解析出方法描述表中包含的变量表、方法签名、方法出口、字节码结构总码元表和常量池(const-pool)等信息,进而根据字节码(例如,为十六进制的字节码)和字节码结构总码元表,在常量池中确定该方法描述表对应字节码的字节码结构信息体,该字节码结构信息体中可以包含有关于该字节码的属性名索引(attribute_name_index)、属性长度(attribute_length)、方法体字节码指令长度(code-length)以及方法执行逻辑指令助记符(即code-length个长度的字节码指令)等属性信息,即字节码结构信息体可以理解为是对该字节码相关信息的具体描述,基于字节码结构信息体可以确定各字节码之间的引用信息。
S1003、将字节码结构信息体反汇编为字节指令码。
S1004、解析字节指令码,获取字节码对应的动态链接。
上述生成动态链接的过程,即可以理解为执行方法体引用符号解析引擎的过程。通过执行上述过程可以对方法体内部的指令进行解析,从而生成字节码对应的动态链接,并且可以基于指令计数器的指示确定当前解析字节指令码,获取动态链接的实施进程。
示例性地,可以通过以下示例说明上述实现过程。例如,假设字节码A的方法体应用于字节码B的方法体,即ClassA的methodA应用于ClassB的methodB,那么可以截取字节码的部分内容,例如,方法表和常量池。进一步地,
假设常量池中有一个常量指向ClassB的methodB,如下:
Figure BDA0003430231430000111
那么获取invokevirtual#4(即上述常量池中的常量#4),其指向ClassA.methodA:()V方法体,即可够成一个简单的方法体全限定名的引用符号,也即字节码对应方法体内部的动态链接。
同样地,通过上述方式也可以获取功能包、字节码、接口等元素的全限定名的引用符号。
在另一种示例中,基于各字节码和获取字节码对应的动态链接,分别构建当前部署版本包和最新版本包中对应字节码的方法体指令模型的实现方式可以包括:基于字节码提取方法描述表,即上述步骤S1001,进而根据获取的字节码对应的动态链接和方法描述表中包含的变量表、方法签名、方法出口,分别构建当前部署版本包和最新版本包中对应字节码的方法体指令模型。
如图2所示,在一种示例中,上述步骤S103中,根据字节码的散列码分别确定当前部署版本包中各功能包的影响索引、各功能包包含的字节码的影响索引,以及最新版本包中各功能包的影响索引、各功能包包含的字节码的影响索引的实现方式可以包括但不限于如下步骤:
S201、对当前部署版本包中各功能包包含的字节码的散列码进行排序,并将排序后的散列码构成的集合确定为第一集合。
S202、对最新版本包中各功能包包含的字节码的散列码进行排序,并将排序后的散列码构成的集合确定为第二集合。
S203、基于摘要信息算法分别对第一集合和第二集合进行处理,确定第一集合的散列码和第二集合的散列码。
S204、将第一集合的散列码和第二集合的散列码分别确定为当前部署版本包中对应功能包的影响索引和所述最新版本包中对应功能包的影响索引。
S205、将字节码的散列码分别确定为当前部署版本包中对应功能包包含的对应字节码的影响索引和最新版本包中对应功能包包含的对应字节码的影响索引。
图3为本申请实施例提供的一种基于字节码确定修改功能点的装置的结构示意图,如图3所示,该装置可以包括:确定模块301、构建模块302。
其中,确定模块,用于获取当前部署版本包和最新版本包,确定最新版本包相对于当前部署版本包的修改结构体;
构建模块,用于根据当前部署版本包和最新版本包,执行方法体引用符号解析引擎,分别构建当前部署版本包和最新版本包中对应字节码的方法体指令模型;
构建模块,还用于根据方法体指令模型,分别构建当前部署版本包和最新版本包的结构体影响分析图;
确定模块,还用于根据结构体影响分析图和修改结构体,确定修改结构体中的修改功能点。
在一种示例中,上述确定模块,用于分别遍历当前部署版本白和最新版本包,确定当前部署版本包中各功能包的影响索引,以及最新版本包中各功能包的影响索引。进而,根据当前部署版本包中各功能包的影响索引,以及最新版本包中各功能包的影响索引,确定最新版本包相对于当前部署版本包的修改结构体。
具体地,上述确定模块,用于以遍历的方式匹配最新版本包中各功能包的影响索引与当前部署版本包中各功能包的影响索引;在最新版本包中任一功能包的影响索引与当前部署版本包中所有功能包的影响索引不同的情况下,确定任一功能包为最新版本包相对于当前部署版本报的修改结构体。
在一种示例中,上述构建模块可以包括遍历单元、生成单元和构建单元;
其中,遍历单元,用于分别遍历当前部署版本包和最新版本包,确定当前部署版本包中各功能包包含的字节码和最新版本包中各功能包包含的字节码;
生成单元,用于基于当前部署版本包和最新版本包中各功能包包含的字节码,执行方法体引用符号解析引擎,生成字节码对应的动态链接;
构建单元,用于当前部署版本包中各功能包包含的字节码、最新版本包中各功能包包含的字节码,以及各字节码对应的动态链接,分别构建当前部署版本包中对应字节码的方法体指令模型和最新版本包中对应字节码的方法体指令模型。
示例性地,生成单元,具体用于分别基于当前部署版本包中各功能包包含的字节码和最新版本包中各功能包包含的字节码提取方法描述表;根据方法描述表中包含的变量表、字节码结构总码元表和常量池,确定对应字节码的字节码结构信息体;将字节码结构信息体反汇编为字节指令码;解析字节指令码,获取字节码对应的动态链接。
示例性地,构建单元,用于基于字节码提取方法描述表;以及,根据生成单元获取的动态链接,和方法描述表中包含的变量表、方法签名、方法出口,分别构建当前部署版本包中对应字节码的方法体指令模型和最新版本包中对应字节码的方法体指令模型。在一种示例中,上述构建模型,还可以用于分别遍历当前部署版本包和最新版本包,确定当前部署版本包中各功能包的影响索引、各功能包包含的字节码的影响索引,以及最新版本包中各功能包的影响索引、各功能包包含的字节码的影响索引;以及,根据当前部署版本包对应的各功能包的影响索引、各功能包包含的字节码的影响索引、方法体指令模型和最新版本包对应的各功能包的影响索引、各功能包包含的字节码的影响索引、方法体指令模型,分别构建当前部署版本包的结构体影响分析图和最新版本包的结构体影响分析图。
示例性地,构建模块,可以具体用于以遍历的方式分别提取当前部署版本包中各功能包包含的字节码,以及最新版本包中各功能包包含的字节码;基于摘要信息算法对字节码进行处理,确定字节码的散列码;根据字节码的散列码分别确定当前部署版本包中各功能包的影响索引、各功能包包含的字节码的影响索引,以及最新版本包中各功能包的影响索引、各功能包包含的字节码的影响索引。
例如,构建模块,可以用于对当前部署版本包中各功能包包含的字节码的散列码进行排序,并将排序后的散列码构成的集合确定为第一集合;对最新版本包中各功能包包含的字节码的散列码进行排序,并将排序后的散列码构成的集合确定为第二集合;基于摘要信息算法分别对第一集合和第二集合进行处理,确定第一集合的散列码和第二集合的散列码;将第一集合的散列码和第二集合的散列码分别确定为当前部署版本包中对应功能包的影响索引和最新版本包中对应功能包的影响索引;将字节码的散列码分别确定为当前部署版本包中对应功能包包含的对应字节码的影响索引和最新版本包中对应功能包包含的对应字节码的影响索引。
在一种示例中,上述确定模块,还用于根据修改结构体在当前部署版本包中确定修改结构体包含的至少一个功能点,并将确定的至少一个功能点确定为第一功能点;根据修改结构体在最新部署版本包中确定修改结构体包含的至少一个功能点,并将确定的至少一个功能点确定为第二功能点;以遍历的方式匹配第一功能点和第二功能点,在第二功能点中的任一功能点的前面或字节与所有第一功能点均不相同的情况下,确定第二功能点中的任一功能点为修改结构体中的修改功能点。
上述基于字节码确定修改功能点的装置可以执行图1-图2所提供的基于字节码确定修改功能点的方法,具备该方法中相应的器件和有益效果。
图4为本发明实施例4提供的一种计算机设备的结构示意图,如图4所示,该计算机设备包括控制器401、存储器402、输入装置403、输出装置404;计算机设备中控制器401的数量可以是一个或多个,图4中以一个控制器401为例;计算机设备中的控制器401、存储器402、输入装置403和输出装置404可以通过总线或其他方式连接,图4中以通过总线连接为例。
存储器402作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如图1、图2实施例中的基于字节码确定修改功能点的方法对应的程序指令/模块(例如,基于字节码确定修改功能点的装置中的获取模块301、确定模块302、构建模块303)。控制器401通过运行存储在存储器402中的软件程序、指令以及模块,从而执行计算机设备的各种功能以及数据处理,即实现上述的基于字节码确定修改功能点的方法。
存储器402可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器402可进一步包括相对于控制器401远程设置的存储器,这些远程存储器可以通过网络连接至终端/服务器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置403可用于接收输入的数字或字符信息,以及产生与计算机设备的用户设置以及功能控制有关的键信号输入。输出装置404可包括显示屏等显示装置。
本申请实施例还提供一种包含计算机可执行指令的存储介质,该计算机可执行指令在由计算机控制器执行时用于执行一种基于字节码确定修改功能点的方法,该方法包括图1所示的步骤。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本申请可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
值得注意的是,上述基于字节码确定修改功能点的装置中所包括的模块只是按照功能逻辑进行划分,但并不局限于上述的划分方式,只要能够实现相应的功能即可,不用于限制本申请的保护范围。
注意,上述仅为本申请的较佳实施例及所运用技术原理。本领域技术人员会理解,本申请不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本申请的保护范围。因此,虽然通过以上实施例对本申请进行了较为详细的说明,但是本申请不仅仅限于以上实施例,在不脱离本申请构思的情况下,还可以包括更多其他等效实施例,而本申请的范围由所附的权利要求范围决定。

Claims (13)

1.一种基于字节码确定修改功能点的方法,其特征在于,包括:
获取当前部署版本包和最新版本包,确定所述最新版本包相对于所述当前部署版本包的修改结构体;
根据所述当前部署版本包和最新版本包,执行方法体引用符号解析引擎,分别构建所述当前部署版本包和所述最新版本包中对应字节码的方法体指令模型;
根据所述方法体指令模型,分别构建所述当前部署版本包和所述最新版本包的结构体影响分析图;
根据所述结构体影响分析图和所述修改结构体,确定所述修改结构体中的修改功能点。
2.根据权利要求1所述的方法,其特征在于,所述确定所述最新版本包相对于所述当前部署版本包的修改结构体,包括:
分别遍历所述当前部署版本包和最新版本包,确定所述当前部署版本包以及所述最新版本包中各功能包的影响索引;
根据所述当前部署版本包以及所述最新版本包中各功能包的影响索引,确定所述最新版本包相对于所述当前部署版本包的修改结构体。
3.根据权利要求2所述的方法,其特征在于,所述根据所述当前部署版本包以及所述最新版本包中各功能包的影响索引,确定所述最新版本包相对于所述当前部署版本包的修改结构体,包括:
以遍历的方式匹配所述最新版本包中各功能包的影响索引与所述当前部署版本包中各功能包的影响索引;
在所述最新版本包中任一功能包的影响索引与所述当前部署版本包中所有功能包的影响索引不同的情况下,确定所述任一功能包为所述最新版本包相对于所述当前部署版本包的修改结构体。
4.根据权利要求1所述的方法,其特征在于,所述根据所述当前部署版本包和最新版本包,执行方法体引用符号解析引擎,分别构建所述当前部署版本包和所述最新版本包中对应字节码的方法体指令模型,包括:
分别遍历所述当前部署版本包和最新版本包,确定所述当前部署版本包和所述最新版本包中各功能包包含的字节码;基于所述当前部署版本包和所述最新版本包中各功能包包含的字节码,执行方法体引用符号解析引擎,生成所述字节码对应的动态链接;
根据所述字节码和所述动态链接,分别构建所述当前部署版本包和所述最新版本包中对应字节码的方法体指令模型。
5.根据权利要求4所述的方法,其特征在于,所述基于所述当前部署版本包和所述最新版本包中各功能包包含的字节码,执行方法体引用符号解析引擎,生成所述字节码对应的动态链接,包括:
分别基于所述当前部署版本包中各功能包包含的字节码和所述最新版本包中各功能包包含的字节码提取方法描述表;
根据所述方法描述表中包含的变量表、字节码结构总码元表和常量池,确定对应字节码的字节码结构信息体;
将所述字节码结构信息体反汇编为字节指令码;
解析所述字节指令码,获取所述字节码对应的动态链接。
6.根据权利要求4或5所述的方法,其特征在于,所述根据所述字节码和所述动态链接,分别构建所述当前部署版本包和所述最新版本包中对应字节码的方法体指令模型,包括:
基于所述字节码提取方法描述表;
根据所述动态链接和所述方法描述表中包含的变量表、方法签名、方法出口,分别构建所述当前部署版本包和所述最新版本包中对应字节码的方法体指令模型。
7.根据权利要求1或4所述的方法,其特征在于,根据所述方法体指令模型,分别构建所述当前部署版本包和所述最新版本包的结构体影响分析图,包括:
分别遍历所述当前部署版本包和最新版本包,确定所述当前部署版本包以及所述最新版本包中各功能包的影响索引、各功能包包含的字节码的影响索引;
根据所述各功能包的影响索引、各功能包包含的字节码的影响索引和所述方法体指令模型,分别构建所述当前部署版本包和所述最新版本包的结构体影响分析图。
8.根据权利要求7所述的方法,其特征在于,所述确定所述当前部署版本包以及所述最新版本包中各功能包的影响索引、各功能包包含的字节码的影响索引,包括:
以遍历的方式分别提取所述当前部署版本包中各功能包包含的字节码,以及最新版本包中各功能包包含的字节码;
基于摘要信息算法对所述字节码进行处理,确定所述字节码的散列码;
根据所述字节码的散列码分别确定所述当前部署版本包以及所述最新版本包中各功能包的影响索引、各功能包包含的字节码的影响索引。
9.根据权利要求8所述的方法,其特征在于,所述根据所述字节码的散列码分别确定所述当前部署版本包以及所述最新版本包中各功能包的影响索引、各功能包包含的字节码的影响索引,包括:
对所述当前部署版本包中各功能包包含的字节码的散列码进行排序,并将排序后的散列码构成的集合确定为第一集合;
对所述最新版本包中各功能包包含的字节码的散列码进行排序,并将排序后的散列码构成的集合确定为第二集合;
基于摘要信息算法分别对所述第一集合和所述第二集合进行处理,确定所述第一集合的散列码和所述第二集合的散列码;
将所述第一集合的散列码和所述第二集合的散列码分别确定为所述当前部署版本包中对应功能包的影响索引和所述最新版本包中对应功能包的影响索引;
将所述字节码的散列码分别确定为所述当前部署版本包中对应功能包包含的对应字节码的影响索引和所述最新版本包中对应功能包包含的对应字节码的影响索引。
10.根据权利要求1-3任一项所述的方法,其特征在于,所述根据所述结构体影响分析图和所述修改结构体,确定所述修改结构体中的修改功能点,包括:
根据所述修改结构体在所述当前部署版本包中确定所述修改结构体包含的至少一个功能点,并将确定的至少一个功能点确定为第一功能点;
根据所述修改结构体在所述最新部署版本包中确定所述修改结构体包含的至少一个功能点,并将确定的至少一个功能点确定为第二功能点;
以遍历的方式匹配所述第一功能点和所述第二功能点,在所述第二功能点中的任一功能点的前面或字节与所有第一功能点均不相同的情况下,确定所述第二功能点中的任一功能点为所述修改结构体中的修改功能点。
11.一种基于字节码确定修改功能点的装置,其特征在于,包括:
确定模块,用于获取当前部署版本包和最新版本包,确定所述最新版本包相对于所述当前部署版本包的修改结构体;
构建模块,用于根据所述当前部署版本包和最新版本包,执行方法体引用符号解析引擎,分别构建所述当前部署版本包和所述最新版本包中对应字节码的方法体指令模型;
所述构建模块,还用于根据所述方法体指令模型,分别构建所述当前部署版本包和所述最新版本包的结构体影响分析图;
所述确定模块,还用于根据所述结构体影响分析图和所述修改结构体,确定所述修改结构体中的修改功能点。
12.一种计算机设备,其特征在于,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如权利要求1-10任一项所述的基于字节码确定修改功能点的方法。
13.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现如权利要求1-10任一项所述的基于字节码确定修改功能点的方法。
CN202111592403.6A 2021-12-23 2021-12-23 基于字节码确定修改功能点的方法、装置、设备及介质 Pending CN114281401A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111592403.6A CN114281401A (zh) 2021-12-23 2021-12-23 基于字节码确定修改功能点的方法、装置、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111592403.6A CN114281401A (zh) 2021-12-23 2021-12-23 基于字节码确定修改功能点的方法、装置、设备及介质

Publications (1)

Publication Number Publication Date
CN114281401A true CN114281401A (zh) 2022-04-05

Family

ID=80874743

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111592403.6A Pending CN114281401A (zh) 2021-12-23 2021-12-23 基于字节码确定修改功能点的方法、装置、设备及介质

Country Status (1)

Country Link
CN (1) CN114281401A (zh)

Similar Documents

Publication Publication Date Title
US10684943B2 (en) Generating executable test automation code automatically according to a test case
US8869111B2 (en) Method and system for generating test cases for a software application
CN106156186B (zh) 一种数据模型管理装置、服务器及数据处理方法
Abdulla et al. String constraints for verification
US10229104B2 (en) Efficient DFA generation for non-matching characters and character classes in regular expressions
CN107292170B (zh) Sql注入攻击的检测方法及装置、系统
He et al. Model approach to grammatical evolution: deep-structured analyzing of model and representation
JP2018097846A (ja) Api学習
CN107220096A (zh) 一种json数据解析方法及装置
CN103853650A (zh) 一种模糊测试的测试用例生成方法及装置
CN114077534B (zh) 测试用例生成方法、装置和计算机可读存储介质
CN115328756A (zh) 一种测试用例生成方法、装置及设备
US9390117B2 (en) Method of transforming sets of input strings into at least one pattern expression that is string expressing sets of input strings, method of extracting transformation pattern as approximate pattern expression, and computer and computer program for the methods
CN112069052A (zh) 一种异常对象检测方法、装置、设备及存储介质
Tekchandani et al. Semantic code clone detection using parse trees and grammar recovery
CN113885880A (zh) 一种多规则匹配方法、装置及设备
CN114489594A (zh) 一种命令解析器的构建方法、命令解析处理方法及装置
CN109634569A (zh) 基于注解的流程实现方法、装置、设备及可读存储介质
CN112860263A (zh) 一种基于智能合约知识图谱的合约缺陷检测方法
Lu et al. Zen-CC: An automated and incremental conformance checking solution to support interactive product configuration
CN109670317B (zh) 一种基于原子控制流图的物联网设备继承性漏洞挖掘方法
CN102902538A (zh) 移动互联网智能终端应用中间件安全开发方法
CN114281401A (zh) 基于字节码确定修改功能点的方法、装置、设备及介质
US8819645B2 (en) Application analysis device
CN112487421B (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