CN115934161A - 一种代码变更的影响分析方法、装置以及设备 - Google Patents
一种代码变更的影响分析方法、装置以及设备 Download PDFInfo
- Publication number
- CN115934161A CN115934161A CN202211694256.8A CN202211694256A CN115934161A CN 115934161 A CN115934161 A CN 115934161A CN 202211694256 A CN202211694256 A CN 202211694256A CN 115934161 A CN115934161 A CN 115934161A
- Authority
- CN
- China
- Prior art keywords
- code
- difference
- determining
- fields
- 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
- 230000008859 change Effects 0.000 title claims abstract description 62
- 238000004458 analytical method Methods 0.000 title claims abstract description 29
- 238000000034 method Methods 0.000 claims abstract description 55
- 238000013507 mapping Methods 0.000 claims abstract description 28
- 230000006870 function Effects 0.000 claims description 18
- 238000012217 deletion Methods 0.000 claims description 9
- 230000037430 deletion Effects 0.000 claims description 9
- 238000010586 diagram Methods 0.000 description 16
- 230000008569 process Effects 0.000 description 13
- 230000006872 improvement Effects 0.000 description 9
- 238000012545 processing Methods 0.000 description 9
- 238000007792 addition Methods 0.000 description 8
- 238000004590 computer program Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012369 In process control Methods 0.000 description 2
- 238000010965 in-process control Methods 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000004886 process control Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 229920001296 polysiloxane Polymers 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Stored Programmes (AREA)
Abstract
本说明书实施例公开了一种代码变更的影响分析方法、装置以及设备。通过生成所述源代码和变更代码的差异代码;将所述差异代码映射为差异中间码;确定所述差异中间码在所述程序所关联的***中的传播路径;确定所述传播路径在数据访问层所关联的字段,将所述字段确定为代码变更的影响字段,从而实现在代码迭代时准确的分析出对于***的影响字段,实现精准的影响分析。
Description
技术领域
本说明书涉及互联网技术领域,尤其涉及一种代码变更的影响分析方法、装置以及设备。
背景技术
在面向服务的***架构中,***中经常会对某个部分模块进行优化或者变更,这在实践中表现为对该模块进行代码上的迭代。在这个过程中,毫无疑问代码的迭代将会对***中的部分产生一些影响,靠人工经验进行影响面分析效率低而且很难准确。
基于此,需要一种更精准的代码变更的影响分析方案。
发明内容
本说明书实施例提供一种代码变更的影响分析方法、装置、设备以及存储介质,用以解决如下技术问题:需要一种更精准的代码变更的影响分析方案。
为解决上述技术问题,本说明书一个或多个实施例是这样实现的:
在第一方面,本说明书实施例提供一种代码变更的影响分析方法,应用于对应于同一程序的源代码和变更代码中,所述方法包括:生成所述源代码和变更代码的差异代码;将所述差异代码映射为差异中间码;确定所述差异中间码在所述程序所关联的***中的传播路径;确定所述传播路径在数据访问层所关联的字段,将所述字段确定为代码变更的影响字段。
在第二方面,本说明书实施例提供一种代码变更的影响分析装置,应用于对应于同一程序的源代码和变更代码中,所述装置包括:差异代码生成模块,生成所述源代码和变更代码的差异代码;映射模块,将所述差异代码映射为差异中间码;路径确定模块,确定所述差异中间码在所述程序所关联的***中的传播路径;字段确定模块,确定所述传播路径在数据访问层所关联的字段,将所述字段确定为代码变更的影响字段。
在第三方面,本说明书一个或多个实施例提供一种电子设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如第一方面所述的方法。
在第四方面,本说明书实施例提供一种非易失性计算机存储介质存储有计算机可执行指令,当计算机读取存储介质中的计算机可执行指令后,该指令使得一个或多个处理器执行如第一方面所述的方法。
本说明书一个或多个实施例采用的上述至少一个技术方案能够达到以下有益效果:通过生成所述源代码和变更代码的差异代码;将所述差异代码映射为差异中间码;确定所述差异中间码在所述程序所关联的***中的传播路径;确定所述传播路径在数据访问层所关联的字段,将所述字段确定为代码变更的影响字段,从而实现在代码迭代时准确的分析出对于***的影响字段,实现精准的影响分析。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书实施例提供的一种代码变更的影响分析方法的流程示意图;
图2为本说明书实施例所提供的一种数据关系图谱的示意图;
图3为本说明书实施例所提供的的一种整体分析的流程逻辑框图;
图4为本说明书实施例提供的一种代码变更的影响分析装置的结构示意图;
图5为本说明书实施例提供的一种电子设备的结构示意图。
具体实施方式
本说明书实施例提供一种代码变更的影响分析方法、装置、设备以及存储介质。
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本说明书实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
在第一方面,如图1所示,图1为本说明书实施例提供的一种代码变更的影响分析方法的流程示意图,应用于对应于同一程序的源代码和变更代码中,所述方法可以包括以下步骤:
S101:生成所述源代码和变更代码的差异代码。
所述源代码是指所述程序在变更之前正常运行时所采用的代码,所述变更代码是指变更之后所采用的代码。
以企业级的服务***为例,该服务***中可以包括多个子***,多个子***之间能够相互协作,以完成多种业务。例如,以支付宝的服务***为例,支付宝服务***中可以包含有数量众多的子***及其相应的功能模块,通过子***之间的相互调用能够实现各项业务,例如缴费业务、外卖业务、购物业务、各类查询业务等等。所述程序可以是各类子***或者各子***中的功能模块或者所采用的程序。
在实际的代码迭代中,变更代码和源代码的差异可以通过相应的指令来直接获取。例如,在一些***中,可以采用diff<源代码><变更代码>来直接比较源代码和变更代码之间的差异。并通过差异代码的形式来表示。差异代码的表现形式也可以有多种,例如,可以诸如正常格式(normal diff)、上下文格式(context diff)或者合并格式(unifieddiff)等等。
举例而言,假设源代码包含了5行代码(a,a,a,a,a),变更代码同样是包含了5行代码(a,a,a,b,a),其中二者的不同是将源代码中的第4行a替换成为了b,此时,通过diff<源代码><变更代码>可能得到正常格式的差异代码的形式为包含了变动位置、变动形式和变动内容的正常格式,例如,其形式可以是“4c4,a,b”,即通过符号“c”表征了变动形式为代码替换,“4c4,a,b”表征变动位置为双方的第4行,a和b表征了变动内容为从a替换为b。此外,变动形式还可以包括诸如表征“增加”(例如,采用a来表示)或者“删除”(采用d来表示)等。
上下文格式则可以同样是包含了变动位置、变动形式和变动内容,但是在差异代码中可以分别将源代码和变更代码的变更进行同时显示。而如果源代码和变更代码的相似度很高,则还可以使用合并格式,即在差异代码中将源代码和变更代码的上下文代码合并在一起显示,将变动部分(变动位置、变动形式和变动内容)使用特定字符进行标识等等。
S103,将所述差异代码映射为差异中间码。
中间码又可以称为中间表示码(Intermediate Representation,IR),IR码是一种于高级程序语言与低级机器语言中间的一种语言形态。其形式可以是由基于图、基于线性代码或者基于图与线性代码混合的。
在实际应用中,可以基于实际需要来选择所采用的中间码的形式,例如,可以采用Jimple中间码,Jimple中间码即为一种基于类型化的、三地址的、基于语句的中间代码。通过将差异代码转换为差异中间码,可以简化分析,以及简化向字节码的过渡。生成的差异中间码是可以包含多行形式的代码。
此外,在将所述差异代码映射为差异中间码之前,还还可以首先对所述差异代码进行去噪,并将去噪后的差异代码映射为差异中间码。
例如,在差异代码中,可能还同时包含了所述源代码和变更代码的基本信息,这些基本信息可能包括诸如版本号、代码哈希值、代码的生成时间等等,而这些基本信息对于差异分析可能都是用处很小的,因此,可以从差异代码中将这些基本信息去除,从而生成去噪后的差异代码。
又例如,在上下文格式或者合并格式的差异代码中,可能还同时包含了源代码和变更代码中的相同部分的代码(即未变更的代码),这部分对于后续的差异分析的用处也可能是很小的,因此,还可以将这部分同时存在于所述源代码和变更代码中的相同代码去除,从而生成去噪后的差异代码。
S105,确定所述差异中间码在所述程序所关联的***中的传播路径。
在这个过程中,可以将差异中间码中的每一行中的字段、函数或者行代码视为一个source,或者也可以称为传播起点。并确定该传播起点在所述程序所关联的***中的传播路径。这种传播路径可以包括数据表、字段与业务链路之间的映射关系。
例如,当接收到用户针对某业务服务的目标请求时,假设该目标请求需要涉及到所述差异中间码中的行代码1中所包含的函数或者字段,服务***基于该目标请求,执行行代码1,并层层调用与该请求对应的子***,确定出该请求的响应结果,并将响应结果反馈给用户。例如,当用户发起目标请求时,该目标请求首先发送给***A,然后***A调用***B,***B在数据库中获取字段X,接下来***2将数据X反馈至上游的***A,***A再将字段X反馈给行代码1中的函数或者字段进行赋值。上述过程构成一条传播路径,字段X与该行代码1之间的映射关系可以作为行代码1的传播路径。
应理解的是,对于包含了多个行代码的差异中间码来说,差异中间码中的每个行代码或者行代码中所包含的字段或者可执行函数可能都可以确定出一条以上的传播路径,这些传播路径的集合就构成了差异中间码的传播路径。
又例如,对于一个静态的***,获取该***的***源代码,还可以对***源代码进行静态代码分析,构建抽象语法树。抽象语法树可以是***源代码的抽象语法结构的树状表现形式。抽象语法树可以通过***的字节码文件以及字节码文件中的字节码信息来构建,字节码文件可以是类文件,字节码信息可以是类的属性字段、类函数字段等。通过字节码信息能够得到改***的静态结构,确定出***中存在的类之间的关系。通过抽象语法树以及字节码指令解析的方法,对***内部的数据链路继续梳理,能够得到***内部的数据对象之间的流转关系,即***内部的传播路径。
此时,即可以基于所述差异中间码所对应的传播起点,并根据前述***内部的数据对象之间的流转关系,来获得所述差异代码的传播路径。
S107,确定所述传播路径在数据访问层所关联的字段,将所述字段确定为代码变更的影响字段。
数据访问层(Date Access Object,DAO)的作用是封装对于数据库的访问:增删改查,不涉及业务逻辑,只是达到按某个条件获得指定数据的要求。在实践过程中,传播路径在数据访问层通常表现为对于数据库的操作请求,这种操作请求需要读取数据库中的数据,或者需要更新数据库中的数据,这些操作请求通常都是结构化查询语言(StructuredQuery Language,SQL)来实现。
因此,确定所述传播路径在数据访问层所关联的字段时,通常可以首先确定所述传播路径在数据访问层的关联执行语句(关联执行语句通常均为SQL语句),进而将所述关联执行语句所影响的字段确定为所述传播路径在数据访问层所关联的字段。
对于一条SQL语句来说,通过解析SQL语句获得抽象语法树,抽象语法树中可以包括多个节点,其中每个节点代表原sql语句中的一种结构。通过遍历抽象语法树中的节点即可以提取出SQL语句的操作类型。
进而,在确定了SQL语句的操作类型之后,基于操作类型获取SQL语句中的表列以及字段信息,在具体实施过程中,可以采用以下方式实现:针对所述SQL语句的操作类型,在该条SQL语句的操作类型表明该条SQL语句为为预设操作类型时,在该条SQL语句抽象语法树中的目标SQL节点对应的节点内容中提取出操作字段信息,作为该条SQL语句所影响的字段(即所述传播路径在数据访问层所关联的字段),并将该SQL语句所影响的字段确定为代码变更的影响字段。
不同操作类型的SQL语句操作的对象可能不同,例如,select、update、insert操作类型的SQL语句可以对字段级对象进行操作,delete操作类型的SQL语句对表级对象进行操作。。前述的预设操作类型可以为select、update、insert中的一者,预设操作类型的操作对象为字段。
当SQL语句操作类型为删除操作类型时,由于删除操作类型涉及到的是表的行级操作,因此本说明书实施例中,解析到表名即可。即该操作类型在不为预设操作类型,此时,可以将该操作所对应的表名作为代码变更的影响字段。
通过生成所述源代码和变更代码的差异代码;将所述差异代码映射为差异中间码;确定所述差异中间码在所述程序所关联的***中的传播路径;确定所述传播路径在数据访问层所关联的字段,将所述字段确定为代码变更的影响字段,从而实现在代码迭代时准确的分析出对于***的影响字段,实现精准的影响分析。
在一种实施方式中,将所述差异代码映射为差异中间码时,还可以首先对差异代码进行分组。如前所述,在差异代码中,可以通过不同的标识符来显示源代码和变更代码的差异,例如,可以用“a”来标识增加,用“d”来标识删除,因此,可以确定所述差异代码中表征删除的第一代码,和,确定所述差异代码中表征增加的第二代码;将所述第一代码和第二代码进行分组;将所述分组后的第一代码和分组后的第二代码映射为差异中间码。
通过这种方式,可以对代码迭代时所产生的增加代码和删除代码所产生的影响进行分类,从而映射得到两组差异中间码,一组对应于增加的代码(即第一代码),一组对应于删除的代码(即第二代码),进而即可以基于这两组差异中间码分别作为传播的起点来分别判断增加代码所影响的字段和删除代码所影响的字段,实现精准的影响分析。
在一种实施方式中,将所述分组后的第一代码和分组后的第二代码映射为差异中间码时,还可以根据所述分组后的第一代码和分组后的第二代码的行号,将所分组后的第一代码和分组后的第二代码映射为差异中间码。
在第一代码或者第二代码中,其所包含的都是同类型的代码,因此,在基于行号将所述差异代码映射至差异中间码之后,所述差异中间码与所述第一代码或者第二代码即形成行与行的一一对应关系,从而,在后续分析时,可以将差异中间码中的任一行作为传播的起点来进行分析,最终分析得到同一行号所对应的差异代码在传播时所最终影响到的影响字段,实现精准的分析。
在一种实施例中,确定所述差异中间码在所述程序所关联的***中的传播路径时,可以提取所述差异中间码中的有效资源,其中,所述有效资源包含所述差异中间码中的字段、函数或者行代码;确定所述有效资源在所述程序所关联的***中的传播路径。
换言之,在最大粒度的情形下,可以将行代码作为有效资源(即传播路径中的传播的起点),但是在实际应用中,行代码中并不是所有的代码都有实际的传播影响。例如,对于一个使用Jimple中间代码所生成的差异中间码,其形式可能是诸如“int i,j,temp$0,temp$1,temp$2”,而其中的temp$0,temp$1,temp$2等等都是一些临时变量,这些临时变量本身并不存在于源代码和变更代码中,对于源代码和变更代码的执行也没有影响,因此,这些临时变量所对应的字段或者包含包含这些临时变量的行代码都可能被视为无效资源而被剔除。
又例如,在使用Jimple中间代码所生成的差异中间码中,可能包含了一些负责过程内控制流的语句、负责过程间的控制流语句和一些监控语句等等,这些语句对于数据流转和传播是有明显意义的,因此,这些负责过程内控制流的语句、负责过程间的控制流语句和一些监控语句将会被视为有效资源。
在一种实施例中,确定所述差异中间码在所述程序所关联的***中的传播路径中,还可以采用静态分析的方式,首先构建得到***之间的字段数据的关系图谱。
即可以获取所述***中所包含的字段数据,构建所述***中的字段数据的关系图谱;确定所述有效资源在所述关系图谱中所对应的节点;根据所述节点在所述关系图谱中的连接关系,确定所述有效资源在所述程序所关联的***中的传播路径。根据粒度的不同,节点可以对应于表或者字段等等不同的粒度。
例如,在一个***间,可以首先获取得到该***的在线业务数据和离线业务数据,进而对业务数据进行数据关系图谱分析,得到全链路的数据关系图谱。例如,先将在线业务数据以及离线业务数据结合起来,对结合起来的业务数据进行数据关系图谱分析,得到全链路数据关系图谱;或者,分别对在线业务数据以及离线业务数据进行处理,得到全链路数据关系图谱。
具体而言,在线业务数据以数据表的形式保存在数据库中,数据表又包含多个字段。通过数据关系图谱分析,可以分析出各个数据表之间的关联,如数据表A是对数据表B进行加工处理得到的,数据表B又是通过对数据表C处理得到的,这种映射关系即为表级别的关系图谱。另外,还可以从字段的粒度来进行关系图谱分析,例如数据表D中的字段1与数据表E中的字段2相关联,数据表E中的字段2与数据表F中的字段3相关联,这种字段之间的映射关系可以作为字段级数据关系图谱。
通过构建这种***内的数据关系图谱,可以将一个***内的数据流转关系转换为一个直观可视化的图表。图像中的一个节点即对应了一个最小粒度(表或者字段),图中的节点之间的连接关系即表征了节点之间的数据流转关系,这种连接关系可以是有向的。
从而在分析差异中间码在所述程序所关联的***中的传播路径时,只需要从差异代码中提取得到有效资源,并将所述有效资源对应至所述数据关系图谱中的节点中,即可以找到该节点在在所述程序所关联的***中的传播路径。如图2所示,图2为本说明书实施例所提供的一种数据关系图谱的示意图。在该示意图中,差异代码中的有效资源对应了一个节点A,从而可以从该节点A为起点,找到其最终传播至数据访问层的终点,从而生成一条或者多条传播路径,即该示意图中的A→B→C和路径A→D→E。通过这种方式,可以快速有效的获取得到任意的一个有效资源所对应的传播路径。
在一种实施例中,当所述差异中间码在所述程序中的传播路径影响到另一***时,所述方法还包括:确定所述传播路径在所述另一***的数据访问层所关联的另一字段,将所述另一字段确定为代码变更的跨***的影响字段。
例如,差异代码的传播路径涉及到***1中的数据接口A,并通过数据接口A向***2发起数据调用,***2的数据访问层基于该数据调用请求,读取数据表2中的字段X反馈给***1,***1将字段X写入数据表1,并将写入的字段X重命名为字段Y。
又例如,差异代码的传播路径涉及到***1中的数据接口A,并通过数据接口A向***2发起数据***,***2的数据访问层基于该数据***请求,数据表2中的字段X修改为字段Y。
在前述的两个示例中,都是***1的差异代码所涉及的传播路径不仅影响了***1中的相关字段,还涉及到影响到***2中的相关字段,因此,可以确定所述传播路径在所述另一***的数据访问层所关联的另一字段,将所述另一字段确定为代码变更的跨***的影响字段。通过这种方式,即可以实现对应于代码变更在跨***时的影响作出精准的分析。
基于前述,已经可以精准的分析得到代码迭代时对于整个***中的影响,这种影响分析可以精确到字段粒度。因此,此时即可以基于分析得到的影响来进行推荐或者阻断。如图3所述,图3为本说明书实施例所提供的的一种整体分析的流程逻辑框图。
例如,假设对差异代码基于增加或者删除进行了分组,第一组为表征删除的第一代码的第一集合,第二组为表征增加的第二代码的第二集合。在进行分析之后,发现,第一集合影响到的字段数量较少,且不涉及敏感字段(例如敏感字段可能包括用户余额或者用户隐私信息等等),而同时第二集合影响到的字段数量较多,且可能涉及到敏感字段。
那么即可以对于第一集合进行推荐(即对于表征删除的代码推荐进行迭代),而对第二集合进行阻断(即不推荐对于表征增加的代码进行变更)。
进一步,在第二代码中基于行号进行分析,可以更准确的分析得到各行分别影响到了多少个字段,以及,是哪些行代码的增加可能涉及到敏感字段,从而可以更为精准的对于那些涉及字段多或者敏感的行代码进行阻断,以便后端进行修改、替换或者删除等等,精准降低代码迭代中的影响。
基于同样的思路,本说明书一个或多个实施例还提供了上述方法对应的装置和设备,如图4、图5所示。
在第二方面,如图4所示,图4为本说明书实施例提供的一种代码变更的影响分析装置的结构示意图,应用于对应于同一程序的源代码和变更代码中,所述装置包括:
差异代码生成模块401,生成所述源代码和变更代码的差异代码;
映射模块403,将所述差异代码映射为差异中间码;
路径确定模块405,确定所述差异中间码在所述程序所关联的***中的传播路径;
字段确定模块407,确定所述传播路径在数据访问层所关联的字段,将所述字段确定为代码变更的影响字段。
可选地,所述映射模块403,确定所述差异代码中表征删除的第一代码,和,确定所述差异代码中表征增加的第二代码;将所述第一代码和第二代码进行分组;将所述分组后的第一代码和分组后的第二代码映射为差异中间码。
可选地,所述映射模块403,根据所述分组后的第一代码和分组后的第二代码的行号,将所分组后的第一代码和分组后的第二代码映射为差异中间码。
可选地,所述路径确定模块405,提取所述差异中间码中的有效资源,其中,所述有效资源包含所述差异中间码中的字段、函数或者行代码;确定所述有效资源在所述程序所关联的***中的传播路径。
可选地,所述路径确定模块405,获取所述***中所包含的字段数据,构建所述***中的字段数据的关系图谱;确定所述有效资源在所述关系图谱中所对应的节点;根据所述节点在所述关系图谱中的连接关系,确定所述有效资源在所述程序所关联的***中的传播路径。
可选地,所述字段确定模块407,确定所述传播路径在数据访问层的关联执行语句;将所述关联执行语句所影响的字段确定为所述传播路径在数据访问层所关联的字段。
可选地,所述装置还包括跨***模块409,确定所述传播路径在所述另一***的数据访问层所关联的另一字段,将所述另一字段确定为代码变更的跨***的影响字段。
可选地,所述差异代码生成模块401,对所述差异代码进行去噪,将去噪后的差异代码映射为差异中间码。
在第三方面,如图5所示,图5为本说明书实施例提供的一种电子设备的结构示意图,所述设备包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如第一方面所述的方法。
在第四方面,基于同样的思路,本说明书实施例还提供了对应于上述方法的一种非易失性计算机存储介质,存储有计算机可执行指令,当计算机读取存储介质中的计算机可执行指令后,该指令使得一个或多个处理器执行如第一方面所述的方法。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字***“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的***、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可
以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体5播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备
中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本说明书实施例可提供为方法、***、或计算机程序产0品。因此,本说明书实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件
方面的实施例的形式。而且,本说明书实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)
上实施的计算机程序产品的形式。
本说明书是参照根据本说明书实施例的方法、设备(***)、和计算机程序产品的流程5图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一
流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生
用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的0装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
5这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机
或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接0口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备、非易失性计算机存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
以上所述仅为本说明书的一个或多个实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书的一个或多个实施例可以有各种更改和变化。凡在本说明书的一个或多个实施例的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。
Claims (10)
1.一种代码变更的影响分析方法,应用于对应于同一程序的源代码和变更代码中,所述方法包括:
生成所述源代码和变更代码的差异代码;
将所述差异代码映射为差异中间码;
确定所述差异中间码在所述程序所关联的***中的传播路径;
确定所述传播路径在数据访问层所关联的字段,将所述字段确定为代码变更的影响字段。
2.如权利要求1所述的方法,其中,将所述差异代码映射为差异中间码,包括:
确定所述差异代码中表征删除的第一代码,和,确定所述差异代码中表征增加的第二代码;
将所述第一代码和第二代码进行分组;
将所述分组后的第一代码和分组后的第二代码映射为差异中间码。
3.如权利要求2所述的方法,其中,将所述分组后的第一代码和分组后的第二代码映射为差异中间码,包括:
根据所述分组后的第一代码和分组后的第二代码的行号,将所分组后的第一代码和分组后的第二代码映射为差异中间码。
4.如权利要求1所述的方法,其中,确定所述差异中间码在所述程序所关联的***中的传播路径,包括:
提取所述差异中间码中的有效资源,其中,所述有效资源包含所述差异中间码中的字段、函数或者行代码;
确定所述有效资源在所述程序所关联的***中的传播路径。
5.如权利要求4所述的方法,其中,确定所述差异中间码在所述程序所关联的***中的传播路径,包括:
获取所述***中所包含的字段数据,构建所述***中的字段数据的关系图谱;
确定所述有效资源在所述关系图谱中所对应的节点;
根据所述节点在所述关系图谱中的连接关系,确定所述有效资源在所述程序所关联的***中的传播路径。
6.如权利要求1所述的方法去,其中,确定所述传播路径在数据访问层所关联的字段,包括:
确定所述传播路径在数据访问层的关联执行语句;
将所述关联执行语句所影响的字段确定为所述传播路径在数据访问层所关联的字段。
7.如权利要求1所述的方法,其中,当所述差异中间码在所述程序中的传播路径影响到另一***时,所述方法还包括:
确定所述传播路径在所述另一***的数据访问层所关联的另一字段,将所述另一字段确定为代码变更的跨***的影响字段。
8.如权利要求1所述的方法,其中,将所述差异代码映射为差异中间码,包括:
对所述差异代码进行去噪,将去噪后的差异代码映射为差异中间码。
9.一种代码变更的影响分析装置,应用于对应于同一程序的源代码和变更代码中,所述装置包括:
差异代码生成模块,生成所述源代码和变更代码的差异代码;
映射模块,将所述差异代码映射为差异中间码;
路径确定模块,确定所述差异中间码在所述程序所关联的***中的传播路径;
字段确定模块,确定所述传播路径在数据访问层所关联的字段,将所述字段确定为代码变更的影响字段。
10.一种电子设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1至8任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211694256.8A CN115934161A (zh) | 2022-12-28 | 2022-12-28 | 一种代码变更的影响分析方法、装置以及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211694256.8A CN115934161A (zh) | 2022-12-28 | 2022-12-28 | 一种代码变更的影响分析方法、装置以及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115934161A true CN115934161A (zh) | 2023-04-07 |
Family
ID=86552249
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211694256.8A Pending CN115934161A (zh) | 2022-12-28 | 2022-12-28 | 一种代码变更的影响分析方法、装置以及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115934161A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116483735A (zh) * | 2023-06-21 | 2023-07-25 | 平安银行股份有限公司 | 一种代码变更的影响分析方法、装置、存储介质及设备 |
-
2022
- 2022-12-28 CN CN202211694256.8A patent/CN115934161A/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 |
---|---|---|
CN107562775B (zh) | 一种基于区块链的数据处理方法及设备 | |
JP6875557B2 (ja) | サービス・データをブロックチェーン・システムに書き込むための方法およびデバイス | |
US10042746B2 (en) | Callpath finder | |
CN107644286B (zh) | 工作流处理方法及装置 | |
CN107622080B (zh) | 一种数据处理方法及设备 | |
CN107578338B (zh) | 一种业务发布方法、装置及设备 | |
CN115756449B (zh) | 一种页面复用方法、装置、存储介质及电子设备 | |
CN111966334A (zh) | 一种业务处理方法、装置及设备 | |
CN113434533A (zh) | 一种数据溯源工具构建方法、数据处理方法、装置及设备 | |
CN114547024A (zh) | 一种sql语句风险检测方法、装置、设备及介质 | |
CN115934161A (zh) | 一种代码变更的影响分析方法、装置以及设备 | |
CN115774552A (zh) | 配置化的算法设计方法、装置、电子设备及可读存储介质 | |
CN113254163B (zh) | 区块链数据的处理方法及装置 | |
CN111694992A (zh) | 一种数据处理方法和装置 | |
CN116432185B (zh) | 一种异常检测方法、装置、可读存储介质及电子设备 | |
CN116341642B (zh) | 一种数据处理的方法、装置、存储介质及电子设备 | |
CN109409037B (zh) | 一种数据混淆规则的生成方法、装置及设备 | |
CN115391426A (zh) | 一种数据查询方法、装置、存储介质及电子设备 | |
CN108153799B (zh) | 数据库访问控制方法、装置和数据库*** | |
CN114594944A (zh) | 一种应用构建***以及设备 | |
CN110704742B (zh) | 一种特征提取方法及装置 | |
CN111324778A (zh) | 数据、业务处理方法、装置及电子设备 | |
CN110704039B (zh) | 应用开发过程中的配置数据处理方法以及装置 | |
US20240256613A1 (en) | Data processing method and apparatus, readable storage medium, and electronic device | |
Schöttle et al. | On the difficulties of raising the level of abstraction and facilitating reuse in software modelling: the case for signature extension |
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 |