CN116048615B - 基于自然语言处理的分布式程序切片方法、装置及设备 - Google Patents
基于自然语言处理的分布式程序切片方法、装置及设备 Download PDFInfo
- Publication number
- CN116048615B CN116048615B CN202310047166.8A CN202310047166A CN116048615B CN 116048615 B CN116048615 B CN 116048615B CN 202310047166 A CN202310047166 A CN 202310047166A CN 116048615 B CN116048615 B CN 116048615B
- Authority
- CN
- China
- Prior art keywords
- node
- program
- interface
- con
- communication
- 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.)
- Active
Links
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/75—Structural analysis for program understanding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
-
- 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/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
-
- 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
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及程序分析领域,提供一种基于自然语言处理的分布式程序切片方法、装置、设备和存储介质,包括如下步骤:利用自然语言处理技术提取及分析程序源代码所使用的分布式通信包中的具有通信功能的接口,并依据接口功能对其分类;基于所述程序源代码构造程序依赖图;基于所述通信接口和所述程序依赖图构造分布式程序依赖图;基于所述分布式程序依赖图计算分布式程序切片。本发明利用自然语言处理技术自动提取和识别通信接口并构造分布式程序依赖图,从而达到高效且精准计算分布式切片的效果。
Description
技术领域
本发明涉及程序分析技术领域,具体涉及一种基于自然语言处理的分布式程序切片方法、装置及设备。
背景技术
随着软件产业的不断发展与应用场景的不断扩大,分布式程序的结构越来越复杂且规模越来越庞大。程序切片技术作为一种程序分析技术,能够用于软件度量、故障定位等,因此,分布式程序切片技术对于维护软件质量具有十分重要的现实意义。
现有的分布式程序切片技术在实际应用过程中所存在不足有:(1)分布式通信的方式有很多种,只有采用了相同通信机制的程序才能互相通信,但现有技术没有依据通信机制来判断程序之间是否可以通信;(2)程序之间是否通讯还取决于程序所指定的通信地址,但现有技术忽略了程序通信地址的信息;(3)目前有多种多样的通信包,现有技术没有分析如何将通信包中的接口进行分类和关联,导致无法自动化地建立分布式程序之间的关联。
发明内容
本发明的目的在于提供一种基于自然语言处理的分布式程序切片方法、装置及设备,用以解决现有技术没有关注如何自动化解析通信包以及如何依据通信机制和通信地址来建立准确的分布式程序之间的依赖的问题,以达到提高计算分布式程序切片准确性的技术效果。
为实现上述目的,本发明提供如下方案:
本申请的第一个方面,提供了一种基于自然语言处理的分布式程序切片方法,包括如下步骤:
提取及分析程序源代码所使用的分布式通信包中的通信接口,并依据所述通信接口功能对所述通信接口进行分类;
基于所述程序源代码构造程序依赖图;
将分类后的所述通信接口所对应的所述程序依赖图中的节点分别进行标记,获得标记节点,所述标记节点包含若干个属性;
根据所述标记节点的属性分别进行匹配,连接具有相同属性的所述标记节点,获得依赖边;
所述程序依赖图、所述标记节点和所述依赖边构成分布式程序依赖图;
选定所述程序源代码中任意一条语句作为切片准则,将所述切片准则记为<f,l>,其中f为所述切片准则所在的文件,l为所述切片准则所在的行号;
在所述分布式程序依赖图中找到所述切片准则所对应的节点,并按照所述分布式程序依赖图中依赖边的方向遍历所述分布式程序依赖图中所能到达的所有节点;
被遍历到的所述节点所对应的语句即为所述切片准则的切片。
进一步的,所述提取及分析程序源代码所使用的分布式通信包中的通信接口,并依据所述通信接口功能对其进行分类,包括:
利用自然语言处理技术分析分布式通信包,提取所述分布式通信包中具有通信功能的接口,获得所述通信接口,分析所述通信接口的功能描述,按功能对所述通信接口进行分类;
其中,所述通信接口至少包括如下类别:连接请求接口,连接接收接口,消息发送接口,消息接收接口;
所述连接请求接口是具有申请建立连接功能的接口;
所述连接接收接口是具有接收连接请求功能的接口;
所述消息发送接口是具有发送数据功能的接口;
所述消息接收接口是具有接收数据功能的接口。
进一步的,所述基于所述程序源代码构造程序依赖图,包括:
将程序语句拆分为多个变量的组合形式,获得包含有若干个变量的节点的所述语句;
基于抽象语法树分析所述程序,依据数据依赖连接各个所述节点;
基于抽象语法树分析所述程序,依据控制依赖连接各个所述节点。
进一步的,所述将分类后的所述通信接口所对应的所述程序依赖图中的节点分别进行标记,获得标记节点,所述标记节点包含若干个属性,包括:
将所述连接请求接口所对应的所述程序依赖图中的节点标记为con-req节点,所述con-req节点包含mechanism和configuration两个属性,其中,所述mechanism属性是所述连接请求接口所采用的通信机制,所述configuration属性包含着连接的通信地址;
将所述连接接收接口所对应的所述程序依赖图中的节点标记为con-rec节点,所述con-rec节点包含mechanism和configuration两个属性,其中,所述mechanism属性是所述连接接收接口所采用的通信机制,所述configuration属性包含着所述连接接收接口所监听的通信地址;
将所述消息发送接口所对应的所述程序依赖图中的节点标记为mes-req节点,所述mes-req节点包含con-req和message两个属性,其中,所述con-req属性代表所述mes-req节点所依赖的连接请求接口con-req节点,所述message属性代表所述消息发送接口所要传输的数据;
将所述消息接收接口所对应的所述程序依赖图中的节点标记为mes-rec节点,所述mes-rec节点包含con-rec和message两个属性,其中,所述con-rec属性代表所述mes-rec节点所依赖的连接接收接口con-rec节点,所述message属性代表所述消息接收接口所要传输的数据;
进一步的,所述根据所述标记节点的属性分别进行匹配,连接具有相同属性的所述标记节点,获得依赖边,包括:
匹配所述con-req节点和所述con-rec节点,将具有相同所述mechanism属性和相同所述configuration属性的所述con-req节点和所述con-rec节点相连,且依赖边由所述con-req节点指向所述con-rec节点,记该依赖边为连接依赖边;
匹配所述mes-req节点和所述mes-rec节点,将所述mes-req节点和所述mes-rec节点各自所包含的所述con-req属性和所述con-rec属性相匹配,若con-req属性所代表的con-req节点与con-rec属性所代表的con-rec节点之间有连接依赖边,将所述mes-req节点和所述mes-rec节点相连,且依赖边由所述mes-req节点指向所述mes-rec节点,记该依赖边为消息依赖边。
本申请的第二个方面,提供一种基于自然语言处理的分布式程序切片装置,包括:
分析模块,用于提取及分析程序源代码所使用的分布式通信包中的通信接口,并依据所述通信接口功能对所述通信接口进行分类;
第一获取模块,用于基于所述程序源代码构造程序依赖图;
第二获取模块,用于将分类后的所述通信接口所对应的所述程序依赖图中的节点分别进行标记,获得标记节点,所述标记节点包含若干个属性;
第三获取模块,用于根据所述标记节点的属性分别进行匹配,连接具有相同属性的所述标记节点,获得依赖边;
构造模块,用于所述程序依赖图、所述标记节点和所述依赖边构成分布式程序依赖图;
第一计算模块:用于选定所述程序源代码中任意一条语句作为切片准则,将所述切片准则记为<f,l>,其中f为所述切片准则所在的文件,l为所述切片准则所在的行号;
第二计算模块:用于在所述分布式程序依赖图中找到所述切片准则所对应的节点,并按照所述分布式程序依赖图中依赖边的方向遍历所述分布式程序依赖图中所能到达的所有节点;
第三计算模块:用于被遍历到的所述节点所对应的语句即为所述切片准则的切片。
本申请的第三个方面,还提供一种电子设备,包括:
至少一个处理器;
与所述至少一个处理器通信连接的存储器;
其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本申请第一个方面所述的方法。
本申请的第四个方面,提供一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行本申请第一个方面所述的方法。
有益效果:
1、由以上技术方案可知,本发明的技术方案提供了一种基于自然语言处理的分布式程序切片方法、装置、设备和存储介质,本发明从分布式程序的通信机制出发,对通信机制接口进行分类,提高通信机制解析的精准性。
2、本发明利用自然语言处理技术,自动化地提取通信包中的通信接口并分类,提高了分布式程序切片的自动化程度。
3、本发明基于程序中通信接口的通信机制、通信地址等信息关联分布式程序,提高分布式程序依赖图的准确度,进而提高分布式程序切片的准确度。
应当理解,前述构思以及在下面更加详细地描述的额外构思的所有组合只要在这样的构思不相互矛盾的情况下都可以被视为本公开的发明主题的一部分。
结合附图从下面的描述中可以更加全面地理解本发明教导的前述和其他方面、实施例和特征。本发明的其他附加方面例如示例性实施方式的特征和/或有益效果将在下面的描述中显见,或通过根据本发明教导的具体实施方式的实践中得知。
附图说明
附图不意在按比例绘制。在附图中,在各个图中示出的每个相同或近似相同的组成部分可以用相同的标号表示。为了清晰起见,在每个图中,并非每个组成部分均被标记。现在,将通过例子并参考附图来描述本发明的各个方面的实施例,其中:
图1是本申请实施例中的方法流程示意图;
图2是本申请实施例中程序依赖图示意图;
图3是本申请实施例中分布式程序依赖图示意图。
具体实施方式
为使本发明实施例的目的和技术方案更加清楚,下面将结合本发明实施例,对本发明的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于所描述的本发明的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语)具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样定义,不会用理想化或过于正式的含义来解释。
本发明的实施例从分布式程序的通信机制出发,并利用自然语言处理技术对通信机制接口进行分类,提高通信机制解析的精准性和自动化程度,以及基于程序中通信接口的通信机制、通信地址等信息关联分布式程序,提高分布式程序切片的准确度。
本发明的实施例提供一种基于自然语言处理的分布式程序切片方法、设备和存储介质,以下分别进行说明。
本发明的实施例提供了一种基于自然语言处理的分布式程序切片方法,为了便于描述,本实施例使用两个程序的源代码进行示例说明,这两个程序的文件名分别为Client.java和Server.java,Client.java和Server.java的源代码如下所示:
Client.java
Server.java
如图1所示,为本发明实施例的一种基于自然语言处理的分布式程序切片方法的示意图,该方法包括如下步骤:
步骤S101、提取及分析程序源代码所使用的分布式通信包中的通信接口,并依据所述通信接口功能对所述通信接口进行分类。
步骤S102、基于所述程序源代码构造程序依赖图。
步骤S103、基于所述通信接口和所述程序依赖图构造分布式程序依赖图。
步骤S104、基于所述分布式程序依赖图计算分布式程序切片。
本发明实施例提供的分布式程序切片方法,从分布式程序的通信机制出发,并利用自然语言处理技术对通信机制接口进行分类,提高通信机制解析的精准性和自动化程度,以及基于程序中通信接口的通信机制、通信地址等信息关联分布式程序。相较于现有技术中常规的分布式通信机制方法,本发明实现了自动化解析通信包及能够依据通信机制和通信地址来建立准确的分布式程序之间的关联,达到了提高分布式程序切片的自动化程度和准确度的效果。
在某些实施例中,所述步骤S101具体过程如下:
利用自然语言处理技术分析所述程序源代码所使用的分布式通信包,提取所述分布式通信包中具有通信功能的接口,获得所述通信接口,分析所述通信接口的功能描述,按所述通信接口在数据传递中的作用对所述通信接口进行分类。
其中,所述通信接口至少包括如下类别:连接请求接口,连接接收接口,消息发送接口,消息接收接口;
所述连接请求接口是具有申请建立连接功能的接口;
所述连接接收接口是具有接收连接请求功能的接口;
所述消息发送接口是具有发送数据功能的接口;
所述消息接收接口是具有接收数据功能的接口。
以上述提到的两个文件名分别为Client.java和Server.java的程序的源代码进行示例说明,并以Client.java和Server.java中使用的分布式通信包Socket作为分析对象为例,利用自然语言处理技术分析分布式通信包Socket,得到Socket中所包含的通信接口及其类别如表1所示:
表1Socket中所包含的通信接口及其类别
在某些实施例中,仍以Client.java和Server.java的源代码作为分析对象为例,步骤S102具体过程如下;
为Client.java和Server.java的源代码分别构造程序依赖图,包括以下步骤:
步骤S1021、将所述程序源代码中的语句拆分为多个变量的组合形式,拆分后的所述语句包含有若干个变量的节点。
例如,Client.java中第6行语句拆分为6.this节点、6.socket节点和6.2001节点。
步骤S1022、基于抽象语法树分析程序,依据数据依赖连接各个节点。
例如,如图2所示,Client.java中第3行语句所对应的节点与第4行语句所对应的节点之间建立数据依赖边。
步骤S1023、基于抽象语法树分析程序,依据控制依赖连接各个节点。
例如,如图2所示,Client.java中第5行语句所对应的节点与第6行语句所对应的节点之间建立控制依赖边。
在某些实施例中,仍以Client.java和Server.java的源代码中的所述分布式通信包Socket作为分析对象为例,所述步骤S103具体过程如下;
步骤S1031、将分类后的所述通信接口所对应的所述程序依赖图中的节点分别进行标记,获得标记节点,所述标记节点包含若干个属性。
上述步骤S1031在某些实施例中,按照如下方式实施:将所述连接请求接口所对应的所述程序依赖图中的节点标记为con-req节点,所述con-req节点包含mechanism和configuration两个属性,其中,所述mechanism属性是所述连接请求接口所采用的通信机制,所述configuration属性包含着连接的通信地址。
将所述连接接收接口所对应的所述程序依赖图中的节点标记为con-rec节点,所述con-rec节点包含mechanism和configuration两个属性,其中,所述mechanism属性是所述连接接收接口所采用的通信机制,所述configuration属性包含着所述连接接收接口所监听的通信地址。
将所述消息发送接口所对应的所述程序依赖图中的节点标记为mes-req节点,所述mes-req节点包含con-req和message两个属性,其中,所述con-req属性代表所述mes-req节点所依赖的连接请求接口con-req节点,所述message属性代表所述消息发送接口所要传输的数据。
将所述消息接收接口所对应的所述程序依赖图中的节点标记为mes-rec节点,所述mes-rec节点包含con-rec和message两个属性,其中,所述con-rec属性代表所述mes-rec节点所依赖的连接接收接口con-rec节点,所述message属性代表所述消息接收接口所要传输的数据。
步骤S1032、根据所述标记节点的属性分别进行匹配,连接具有相同属性的所述标记节点,获得依赖边。
上述步骤S1032在某些实施例中,按照如下方式实施:匹配con-req和con-rec,将具有相同mechanism且具有相同的configuration的con-req和con-rec相连,且依赖边由con-req指向con-rec,该依赖边记为连接依赖边。
匹配mes-req和mes-rec,匹配con-req和con-rec各自所包含的con-req和con-rec,若con-req所代表的con-req节点和con-rec所代表的con-rec节点之间有依赖边,则将mes-req和mes-rec相连,且依赖边由mes-req指向mes-rec,该依赖边记为消息依赖边。
上述各实施例中,将上述步骤S1031和步骤S1032结合Client.java和Server.java的源代码作进一步说明:
Client.java的第10行语句是一个连接请求接口,其所对应的节点为con-req,其mechanism为Socket机制,其请求的接口为2000端口。
Server.java的第3行语句是一个连接接收接口,其所对应的节点为con-rec,其mechanism为Socket机制,其监听的接口为2000端口。
con-req和con-rec具有相同的mechanism,且所使用的通信地址相同,所以建立con-req和con-rec之间的连接依赖边。
Client.java的第11行语句是一个消息发送接口,其所对应的节点为m-req其所对应的con-req为Client.java的第10行语句。
Server.java的第6行语句是一个消息接收接口,其所对应的节点为m-rec,其所对应的con-rec为Server.java的第3行语句。
m-req和m-rec各自所包含的con-req和con-rec相连,所以建立m-req和m-rec之间的消息依赖边。
本实施例中,经上述步骤后,获得如图3所示的基于Client.java和Server.java中的各类通信接口构造的分布式程序依赖图。
在某些实施例中,仍以Client.java和Server.java的源代码进行示例说明,步骤S104具体过程如下:
步骤S1041、选定所述程序源代码中任意一条语句作为切片准则,将所述切片准则记为<f,l>,其中f为所述切片准则所在的文件,l为所述切片准则所在的行号。
本实施例中,选择Client.java的第11行语句为切片准则,则该切片准则记为<Client.java,11>。
步骤S1042、在所述分布式程序依赖图中找到所述切片准则所对应的节点,并按照所述依赖边的方向遍历所述分布式程序依赖图中所能到达的所有节点。
如图3所示,从Client.java的第11行语句的节点可以遍历到Client.java的第12、13、14节点和Server.java的第6、7、8、9、10节点。
步骤S1043、被遍历到的所述节点所对应的语句即为所述切片准则的切片。即Client.java的第11行语句的切片为Client.java的第12、13、14行语句和Server.java的第6、7、8、9、10行语句。
基于上述的基于自然语言处理的分布式程序切片方法,本发明实施例还提供一种基于自然语言处理的分布式程序切片装置。
示例性的,基于自然语言处理的分布式程序切片方法可以被分割成多个模块,多个模块被存储在存储器中,由处理器执行完成本发明。所述多个模块或单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述基于自然语言处理的分布式程序切片方法的执行过程。例如,分析模块、第一获取模块、构造模块和第一计算模块等,各模块的具体功能如下:
分析模块,用于提取及分析程序源代码所使用的分布式通信包中的通信接口,并依据所述通信接口功能对所述通信接口进行分类;
第一获取模块,用于基于所述程序源代码构造程序依赖图;
第二获取模块,用于将分类后的所述通信接口所对应的所述程序依赖图中的节点分别进行标记,获得标记节点,所述标记节点包含若干个属性;
第三获取模块,用于根据所述标记节点的属性分别进行匹配,连接具有相同属性的所述标记节点,获得依赖边;
构造模块,用于所述程序依赖图、所述标记节点和所述依赖边构成分布式程序依赖图;
第一计算模块:用于选定所述程序源代码中任意一条语句作为切片准则,将所述切片准则记为<f,l>,其中f为所述切片准则所在的文件,l为所述切片准则所在的行号;
第二计算模块:用于在所述分布式程序依赖图中找到所述切片准则所对应的节点,并按照所述分布式程序依赖图中依赖边的方向遍历所述分布式程序依赖图中所能到达的所有节点;
第三计算模块:用于被遍历到的所述节点所对应的语句即为所述切片准则的切片。
相应的,本发明实施例还提供一种电子设备,包括:
至少一个处理器;
与所述至少一个处理器通信连接的存储器;
其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明任一实施例中所述的方法。
这些计算机程序也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤,对应与不同的步骤可以通过不同的模块来实现。
上述程序可以运行在处理器中,或者也可以存储在存储器中(或称为计算机可读介质),计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
相应的,本发明还提供一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行本发明任一实施例中所述的方法。
虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明。本发明所属技术领域中具有通常知识者,在不脱离本发明的精神和范围内,当可作各种的更动与润饰。因此,本发明的保护范围当视权利要求书所界定者为准。
Claims (8)
1.一种基于自然语言处理的分布式程序切片方法,其特征在于,包括如下步骤:
提取及分析程序源代码所使用的分布式通信包中的通信接口,并依据所述通信接口功能对所述通信接口进行分类;
基于所述程序源代码构造程序依赖图;
将分类后的所述通信接口所对应的所述程序依赖图中的节点分别进行标记,获得标记节点,所述标记节点包含若干个属性;
根据所述标记节点的属性分别进行匹配,连接具有相同属性的所述标记节点,获得依赖边;
所述程序依赖图、所述标记节点和所述依赖边构成分布式程序依赖图;
选定所述程序源代码中任意一条语句作为切片准则,将所述切片准则记为<f,l>,其中f为所述切片准则所在的文件,l为所述切片准则所在的行号;
在所述分布式程序依赖图中找到所述切片准则所对应的节点,并按照所述分布式程序依赖图中依赖边的方向遍历所述分布式程序依赖图中所能到达的所有节点;
被遍历到的所述节点所对应的语句即为所述切片准则的切片。
2.根据权利要求1所述的方法,其特征在于:所述提取及分析程序源代码所使用的分布式通信包中的通信接口,并依据所述通信接口功能对所述通信接口进行分类,包括:
利用自然语言处理技术分析所述程序源代码所使用的分布式通信包,提取所述分布式通信包中具有通信功能的接口,获得所述通信接口,分析所述通信接口的功能描述,按所述通信接口在数据传递中的作用对所述通信接口进行分类;
其中,所述通信接口至少包括如下类别:连接请求接口,连接接收接口,消息发送接口,消息接收接口;
所述连接请求接口是具有申请建立连接功能的接口;
所述连接接收接口是具有接收连接请求功能的接口;
所述消息发送接口是具有发送数据功能的接口;
所述消息接收接口是具有接收数据功能的接口。
3.根据权利要求1所述的方法,其特征在于:所述基于所述程序源代码构造程序依赖图,包括:
将所述程序源代码中的语句拆分为多个变量的组合形式,拆分后的所述语句包含有若干个用于变量的节点;
基于抽象语法树分析所述程序源代码,依据数据依赖连接各个所述节点;
基于抽象语法树分析所述程序源代码,依据控制依赖连接各个所述节点。
4.根据权利要求2所述的方法,其特征在于:所述将分类后的所述通信接口所对应的所述程序依赖图中的节点分别进行标记,获得标记节点,所述标记节点包含若干个属性,包括:
将所述连接请求接口所对应的所述程序依赖图中的节点标记为con-req节点,所述con-req节点包含mechanism和configuration两个属性,其中,所述mechanism属性是所述连接请求接口所采用的通信机制,所述configuration属性包含着连接的通信地址;
将所述连接接收接口所对应的所述程序依赖图中的节点标记为con-rec节点,所述con-rec节点包含mechanism和configuration两个属性,其中,所述mechanism属性是所述连接接收接口所采用的通信机制,所述configuration属性包含着所述连接接收接口所监听的通信地址;
将所述消息发送接口所对应的所述程序依赖图中的节点标记为mes-req节点,所述mes-req节点包含con-req和message两个属性,其中,所述con-req属性代表所述mes-req节点所依赖的连接请求接口con-req节点,所述message属性代表所述消息发送接口所要传输的数据;
将所述消息接收接口所对应的所述程序依赖图中的节点标记为mes-rec节点,所述mes-rec节点包含con-rec和message两个属性,其中,所述con-rec属性代表所述mes-rec节点所依赖的连接接收接口con-rec节点,所述message属性代表所述消息接收接口所要传输的数据。
5.根据权利要求4所述的方法,其特征在于:所述根据所述标记节点的属性分别进行匹配,连接具有相同属性的所述标记节点,获得依赖边,包括:
匹配所述con-req节点和所述con-rec节点,将具有相同所述mechanism属性和相同所述configuration属性的所述con-req节点和所述con-rec节点相连,且依赖边由所述con-req节点指向所述con-rec节点,记该依赖边为连接依赖边;
匹配所述mes-req节点和所述mes-rec节点,将所述mes-req节点和所述mes-rec节点各自所包含的所述con-req属性和所述con-rec属性相匹配,若con-req属性所代表的con-req节点与con-rec属性所代表的con-rec节点之间有连接依赖边,将所述mes-req节点和所述mes-rec节点相连,且依赖边由所述mes-req节点指向所述mes-rec节点,记该依赖边为消息依赖边。
6.一种基于自然语言处理的分布式程序切片装置,其特征在于,包括:
分析模块,用于提取及分析程序源代码所使用的分布式通信包中的通信接口,并依据所述通信接口功能对所述通信接口进行分类;
第一获取模块,用于基于所述程序源代码构造程序依赖图;
第二获取模块,用于将分类后的所述通信接口所对应的所述程序依赖图中的节点分别进行标记,获得标记节点,所述标记节点包含若干个属性;
第三获取模块,用于根据所述标记节点的属性分别进行匹配,连接具有相同属性的所述标记节点,获得依赖边;
构造模块,用于所述程序依赖图、所述标记节点和所述依赖边构成分布式程序依赖图;
第一计算模块:用于选定所述程序源代码中任意一条语句作为切片准则,将所述切片准则记为<f,l>,其中f为所述切片准则所在的文件,l为所述切片准则所在的行号;
第二计算模块:用于在所述分布式程序依赖图中找到所述切片准则所对应的节点,并按照所述分布式程序依赖图中依赖边的方向遍历所述分布式程序依赖图中所能到达的所有节点;
第三计算模块:用于被遍历到的所述节点所对应的语句即为所述切片准则的切片。
7.一种电子设备,包括:
至少一个处理器;
与所述至少一个处理器通信连接的存储器;
其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1至5中任一项所述的方法。
8.一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行权利要求1至5中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310047166.8A CN116048615B (zh) | 2023-01-31 | 2023-01-31 | 基于自然语言处理的分布式程序切片方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310047166.8A CN116048615B (zh) | 2023-01-31 | 2023-01-31 | 基于自然语言处理的分布式程序切片方法、装置及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116048615A CN116048615A (zh) | 2023-05-02 |
CN116048615B true CN116048615B (zh) | 2023-08-25 |
Family
ID=86114407
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310047166.8A Active CN116048615B (zh) | 2023-01-31 | 2023-01-31 | 基于自然语言处理的分布式程序切片方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116048615B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105700893A (zh) * | 2016-02-23 | 2016-06-22 | 南京邮电大学 | 基于改进系统依赖图的llvm ir程序切片方法 |
CN109033843A (zh) * | 2018-08-02 | 2018-12-18 | 南瑞集团有限公司 | 用于分布式静态检测系统的Java文件依赖性分析方法及模块 |
CN113094242A (zh) * | 2015-12-31 | 2021-07-09 | 微软技术许可有限责任公司 | 分布式计算依赖管理系统 |
CN113420296A (zh) * | 2021-07-08 | 2021-09-21 | 国网甘肃省电力公司电力科学研究院 | 一种基于Bert模型与BiLSTM的C源代码漏洞检测方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11687245B2 (en) * | 2020-11-19 | 2023-06-27 | EMC IP Holding Company LLC | Dynamic slice assignment in a distributed storage system |
-
2023
- 2023-01-31 CN CN202310047166.8A patent/CN116048615B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113094242A (zh) * | 2015-12-31 | 2021-07-09 | 微软技术许可有限责任公司 | 分布式计算依赖管理系统 |
CN105700893A (zh) * | 2016-02-23 | 2016-06-22 | 南京邮电大学 | 基于改进系统依赖图的llvm ir程序切片方法 |
CN109033843A (zh) * | 2018-08-02 | 2018-12-18 | 南瑞集团有限公司 | 用于分布式静态检测系统的Java文件依赖性分析方法及模块 |
CN113420296A (zh) * | 2021-07-08 | 2021-09-21 | 国网甘肃省电力公司电力科学研究院 | 一种基于Bert模型与BiLSTM的C源代码漏洞检测方法 |
Non-Patent Citations (1)
Title |
---|
王洪达 ; 邢建春 ; 宋巍 ; 杨启亮 ; .基于程序依赖图的静态BPEL程序切片技术.计算机应用.2012,32(08),第2338-2341页. * |
Also Published As
Publication number | Publication date |
---|---|
CN116048615A (zh) | 2023-05-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107122296B (zh) | 用于测试接口的数据断言的方法及设备 | |
CN108390773B (zh) | 一种用于脚手架的动态路由的方法及设备 | |
CN112181804B (zh) | 一种参数校验方法、设备以及存储介质 | |
CN107092535B (zh) | 用于测试接口的数据存储的方法及设备 | |
CN110798373A (zh) | 一种实现性能测试的方法、测试服务器及计算机存储介质 | |
CN113868698A (zh) | 一种文件脱敏方法及设备 | |
CN113190220A (zh) | Json文件差异化对比方法及装置 | |
CN113923268B (zh) | 一种针对多版本通信规约的解析方法、设备及存储介质 | |
CN118012939A (zh) | 一种用于Oracle EBS数据查询的方法、装置及设备 | |
CN116048615B (zh) | 基于自然语言处理的分布式程序切片方法、装置及设备 | |
CN110147313B (zh) | 一种日志输出方法及装置 | |
CN114330278B (zh) | 一种判断返回数据一致性的方法及设备 | |
CN111078905A (zh) | 一种数据处理方法、装置、介质以及设备 | |
CN114866627A (zh) | 报文核对方法、装置、处理器及电子设备 | |
CN115168124A (zh) | 硬盘并发执行多个文件的稳定性测试方法、装置、计算机设备及介质 | |
CN112286792A (zh) | 一种接口测试方法、装置、设备和存储介质 | |
CN112948634A (zh) | 一种用于确定目标物品的监控视频的方法与设备 | |
CN117130946B (zh) | 一种测试场景生成方法、装置、电子设备和可读存储介质 | |
CN111061834B (zh) | 基于神经网络的文档检索引用的方法、装置和存储介质 | |
CN113742225B (zh) | 一种测试数据生成方法、装置、设备及存储介质 | |
CN116610679B (zh) | json数据的解析方法、装置、计算机设备及介质 | |
CN113672518B (zh) | 一种测试用例构建方法及相关设备 | |
CN116775484A (zh) | Ui自动化测试的实现方法、装置、设备及介质 | |
CN113111641A (zh) | 一种基于全文搜索引擎的数据操作方法及设备 | |
CN117194091A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |