一种依赖关系的生成方法及装置制造方法及图纸

技术编号:22166171 阅读:23 留言:0更新日期:2019-09-21 10:16
本申请提供一种依赖关系的生成方法及装置,该方法从object文件的符号表获取该object文件的自定义变量、自定义函数、引用变量以及引用函数,并基于获取到的自定义变量以及引用变量,生成变量依赖关系,基于获取到的自定义函数以及引用函数,生成函数依赖关系,最后基于变量依赖关系以及函数依赖关系,生成文件之间的依赖关系。而不需要在所有代码模块中匹配变量以及函数,并根据匹配结果确定存在函数依赖关系、变量依赖关系的代码模块,从而生成依赖关系,因此节省了匹配过程所需的时间,提高了依赖关系的生成效率。

A Method and Device for Generating Dependency Relations

【技术实现步骤摘要】
一种依赖关系的生成方法及装置
本申请属于数据处理
,尤其涉及一种依赖关系的生成方法及装置。
技术介绍
在对代码进行核查时,需要确定环境中不同代码模块中变量、函数之间的依赖关系。现有获取变量、函数依赖关系的方法为:在环境中检测全部自定义的变量及函数,并在全环境下匹配自定义的变量及函数,根据匹配结果确定自定义的变量或函数被引用的位置以及确认引用自定义的变量或函数的代码模块。由于需要在环境下匹配自定义的变量及函数,而随着程序开发,环境下包括的代码模块越来越多,在环境下匹配自定义的变量及函数耗时较长,导致依赖关系的生成效率低。
技术实现思路
有鉴于此,本申请的目的在于提供一种依赖关系的生成方法及装置,用于解决现有技术中依赖关系的生成效率低的问题。技术方案如下:本申请提供一种依赖关系的生成方法,包括:分别对环境中的每个代码模块进行编译,生成object文件;针对每个object文件,生成该object文件的符号表;所述符号表中至少包括该object文件的自定义变量、自定义函数、引用变量以及引用函数;从所述符号表中分别获取该object文件的自定义变量、自定义函数、引用变量以及引用函数,直至获取到全部object文件中的自定义变量、自定义函数、引用变量以及引用函数;基于获取到的自定义变量以及引用变量,分别确定与每个引用变量匹配的自定义变量所在object文件为该引用变量的依赖文件,生成变量依赖关系;基于获取到的自定义函数以及引用函数,分别确定与每个引用函数匹配的自定义函数所在object文件为该引用函数的依赖文件,生成函数依赖关系;基于变量依赖关系以及函数依赖关系,生成文件之间的依赖关系。优选地,所述从所述符号表中分别获取该object文件的自定义变量、自定义函数、引用变量以及引用函数,直至获取到全部object文件中的自定义变量、自定义函数、引用变量以及引用函数包括:从所述符号表中获取该object文件的自定义变量、自定义函数,并基于自定义变量以及对应的该object文件建立第一数据表,基于自定义函数以及对应的该object文件建立第二数据表;从所述符号表中获取该object文件的引用变量以及引用函数,并基于引用变量、引用函数以及对应的该object文件建立第三数据表。优选地,所述基于获取到的自定义变量以及引用变量,分别确定与每个引用变量匹配的自定义变量所在object文件为该引用变量的依赖文件,生成变量依赖关系包括:针对所述第三数据表中的每个引用变量,在所述第一数据表中查找与该引用变量相同的自定义变量;确定第一数据表中与该自定义变量对应的object文件为该引用变量所依赖的文件,生成变量依赖关系。优选地,所述基于获取到的自定义函数以及引用函数,分别确定与每个引用函数匹配的自定义函数所在object文件为该引用函数的依赖文件,生成函数依赖关系包括:针对所述第三数据表中的每个引用函数,在所述第二数据表中查找与该引用函数相同的自定义函数;确定第二数据表中与该自定义函数对应的object文件为该引用函数所依赖的文件,生成函数依赖关系。本申请还提供了一种依赖关系的生成装置,包括:编译单元,用于分别对环境中的每个代码模块进行编译,生成object文件;第一生成单元,用于针对每个object文件,生成该object文件的符号表;所述符号表中至少包括该object文件的自定义变量、自定义函数、引用变量以及引用函数;第一获取单元,用于从所述符号表中分别获取该object文件的自定义变量、自定义函数、引用变量以及引用函数,直至获取到全部object文件中的自定义变量、自定义函数、引用变量以及引用函数;第二生成单元,用于基于获取到的自定义变量以及引用变量,分别确定与每个引用变量匹配的自定义变量所在object文件为该引用变量的依赖文件,生成变量依赖关系;第三生成单元,用于基于获取到的自定义函数以及引用函数,分别确定与每个引用函数匹配的自定义函数所在object文件为该引用函数的依赖文件,生成函数依赖关系;第四生成单元,用于基于变量依赖关系以及函数依赖关系,生成文件之间的依赖关系。优选地,所述第一获取单元包括:第一获取建立子单元,用于从所述符号表中获取该object文件的自定义变量、自定义函数,并基于自定义变量以及对应的该object文件建立第一数据表,基于自定义函数以及对应的该object文件建立第二数据表;第二获取建立子单元,用于从所述符号表中获取该object文件的引用变量以及引用函数,并基于引用变量、引用函数以及对应的该object文件建立第三数据表。优选地,所述第二生成单元包括:查找子单元,用于针对所述第三数据表中的每个引用变量,在所述第一数据表中查找与该引用变量相同的自定义变量;生成子单元,用于确定第一数据表中与该自定义变量对应的object文件为该引用变量所依赖的文件,生成变量依赖关系。优选地,所述第三生成单元包括:查找子单元,用于针对所述第三数据表中的每个引用函数,在所述第二数据表中查找与该引用函数相同的自定义函数;生成子单元,用于确定第二数据表中与该自定义函数对应的object文件为该引用函数所依赖的文件,生成函数依赖关系。与现有技术相比,本申请提供的上述技术方案具有如下优点:从上述技术方案可知,本申请中从object文件的符号表获取该object文件的自定义变量、自定义函数、引用变量以及引用函数,并基于获取到的自定义变量以及引用变量,生成变量依赖关系,基于获取到的自定义函数以及引用函数,生成函数依赖关系,最后基于变量依赖关系以及函数依赖关系,生成文件之间的依赖关系。而不需要在所有代码模块中匹配变量以及函数,并根据匹配结果确定存在函数依赖关系、变量依赖关系的代码模块,从而生成依赖关系,因此节省了匹配过程所需的时间,提高了依赖关系的生成效率。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本申请公开的一种依赖关系的生成方法的流程图;图2是本申请公开的另一种依赖关系的生成方法的流程图;图3是本申请公开的一种依赖关系的生成装置的结构示意图。具体实施方式为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。本申请实施例提供了一种依赖关系的生成方法,用于确定代码模块中变量、函数之间的依赖关系,以便于基于确定出的依赖关系进行代码的扩展、核查,避免编译错误。以项目开发为例,针对该项目开发的程序代码是由多个代码模块组成的,在需要扩展项目或者项目的某一功能时,可以单独开发至少一个代码模块,但是,每个代码模块不能脱离开其他的代码模块而独立存在,代码模块之间通过互相引用变量或者互相引用函数建立了依赖关系。采用本实施例提供的方法可以确定代码模块之间的变量依赖关系、本文档来自技高网...

【技术保护点】
1.一种依赖关系的生成方法,其特征在于,包括:分别对环境中的每个代码模块进行编译,生成object文件;针对每个object文件,生成该object文件的符号表;所述符号表中至少包括该object文件的自定义变量、自定义函数、引用变量以及引用函数;从所述符号表中分别获取该object文件的自定义变量、自定义函数、引用变量以及引用函数,直至获取到全部object文件中的自定义变量、自定义函数、引用变量以及引用函数;基于获取到的自定义变量以及引用变量,分别确定与每个引用变量匹配的自定义变量所在object文件为该引用变量的依赖文件,生成变量依赖关系;基于获取到的自定义函数以及引用函数,分别确定与每个引用函数匹配的自定义函数所在object文件为该引用函数的依赖文件,生成函数依赖关系;基于变量依赖关系以及函数依赖关系,生成文件之间的依赖关系。

【技术特征摘要】
1.一种依赖关系的生成方法,其特征在于,包括:分别对环境中的每个代码模块进行编译,生成object文件;针对每个object文件,生成该object文件的符号表;所述符号表中至少包括该object文件的自定义变量、自定义函数、引用变量以及引用函数;从所述符号表中分别获取该object文件的自定义变量、自定义函数、引用变量以及引用函数,直至获取到全部object文件中的自定义变量、自定义函数、引用变量以及引用函数;基于获取到的自定义变量以及引用变量,分别确定与每个引用变量匹配的自定义变量所在object文件为该引用变量的依赖文件,生成变量依赖关系;基于获取到的自定义函数以及引用函数,分别确定与每个引用函数匹配的自定义函数所在object文件为该引用函数的依赖文件,生成函数依赖关系;基于变量依赖关系以及函数依赖关系,生成文件之间的依赖关系。2.根据权利要求1所述的生成方法,其特征在于,所述从所述符号表中分别获取该object文件的自定义变量、自定义函数、引用变量以及引用函数,直至获取到全部object文件中的自定义变量、自定义函数、引用变量以及引用函数包括:从所述符号表中获取该object文件的自定义变量、自定义函数,并基于自定义变量以及对应的该object文件建立第一数据表,基于自定义函数以及对应的该object文件建立第二数据表;从所述符号表中获取该object文件的引用变量以及引用函数,并基于引用变量、引用函数以及对应的该object文件建立第三数据表。3.根据权利要求2所述的方法,其特征在于,所述基于获取到的自定义变量以及引用变量,分别确定与每个引用变量匹配的自定义变量所在object文件为该引用变量的依赖文件,生成变量依赖关系包括:针对所述第三数据表中的每个引用变量,在所述第一数据表中查找与该引用变量相同的自定义变量;确定第一数据表中与该自定义变量对应的object文件为该引用变量所依赖的文件,生成变量依赖关系。4.根据权利要求2所述的方法,其特征在于,所述基于获取到的自定义函数以及引用函数,分别确定与每个引用函数匹配的自定义函数所在object文件为该引用函数的依赖文件,生成函数依赖关系包括:针对所述第三数据表中的每个引用函数,在所述第二数据表中查找与该引用函数相同的自定义函数;确定第二...

【专利技术属性】
技术研发人员:许晓梦李峰刘硕何晓明宋炳雨
申请(专利权)人:潍柴动力股份有限公司
类型:发明
国别省市:山东,37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1