无效依赖检测方法及相关设备技术

技术编号:34087848 阅读:73 留言:0更新日期:2022-07-11 20:27
本公开提供了一种无效依赖检测方法及相关设备,属于计算机技术领域。该方法包括:确定当前构建模块所依赖的源文件;获取所述当前构建模块所依赖的源文件中包含的头文件信息;确定所述当前构建模块的依赖模块;获取所述当前构建模块的依赖模块的头文件列表;将与所述头文件信息无交集的所述头文件列表对应的依赖模块确定为所述当前构建模块的无效依赖。通过本公开实施例提供的方案,能够自动检测出当前构建模块中的无效依赖,加快代码的编译速度,提高研发效率。提高研发效率。提高研发效率。

【技术实现步骤摘要】
无效依赖检测方法及相关设备


[0001]本公开涉及计算机
,具体而言,涉及一种无效依赖检测方法及装置、计算机可读存储介质和电子设备。

技术介绍

[0002]在代码的开发过程中,随着版本的不断迭代,构建模块(target)编译的源文件(srcs)越来越多,在迭代过程代码会不断增加、删除、修改,而构建模块依赖(deps)的target(称之为依赖模块)有些可能并不需要了,而工程编译工具(例如bazel)在编译过程中,对于只要写在deps中的target都会编译,因此如果deps中写了很多不需要用到的target,会导致编译耗时增加,同时会导致二进制的体积变大。
[0003]相关技术中,是通过开发人员人工去确认deps中的target是否会使用到,如果不会使用到,则删除进行测试。但这种人工删除的方式至少存在以下问题:
[0004]第一:耗时,人工确认deps中的target是否会使用到需要较长时间。
[0005]第二:不准确,对于项目没有那么熟悉的开发人员可能会把有效依赖判断为无效依赖,从而导致误判,此时需要重新编译失败后再重新进入。
[0006]第三:每次迭代开发需要重新投入人力。
[0007]需要说明的是,在上述
技术介绍
部分公开的信息仅用于加强对本公开的背景的理解。

技术实现思路

[0008]本公开实施例提供一种无效依赖检测方法及装置、计算机可读存储介质、电子设备,能够提高构建模块的无效依赖的检测效率和准确性。
[0009]本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
[0010]本公开实施例提供一种无效依赖检测方法,所述方法包括:确定当前构建模块所依赖的源文件;获取所述当前构建模块所依赖的源文件中包含的头文件信息;确定所述当前构建模块的依赖模块;获取所述当前构建模块的依赖模块的头文件列表;将与所述头文件信息无交集的所述头文件列表对应的依赖模块确定为所述当前构建模块的无效依赖。
[0011]本公开实施例提供一种无效依赖检测装置,所述装置包括:依赖源文件确定单元,用于确定当前构建模块所依赖的源文件;头文件信息获取单元,用于获取所述当前构建模块所依赖的源文件中包含的头文件信息;当前依赖模块确定单元,用于确定所述当前构建模块的依赖模块;头文件列表获取单元,用于获取所述当前构建模块的依赖模块的头文件列表;无效依赖确定单元,用于将与所述头文件信息无交集的所述头文件列表对应的依赖模块确定为所述当前构建模块的无效依赖。
[0012]在示例性实施例中,头文件信息获取单元包括:深度遍历单元,用于深度遍历所述当前构建模块所依赖的源文件,获取所述当前构建模块所依赖的源文件中包含的直接依赖
和间接依赖的头文件;目标路径获取单元,用于获取所述当前构建模块所依赖的源文件中包含的头文件的目标路径;包含列表生成单元,用于将所述当前构建模块所依赖的源文件及其包含的头文件的目标路径作为所述头文件信息存储至所述当前构建模块的包含列表。
[0013]在示例性实施例中,无效依赖检测装置还包括:文件遍历单元,用于遍历获得所述当前构建模块下的头文件的文件名及其绝对路径;文件映射列表存储单元,用于将所述当前构建模块下的头文件的文件名及其绝对路径存储至文件映射列表中。其中,目标路径获取单元可以包括:绝对路径获取单元,用于若所述当前构建模块所依赖的源文件中包含的头文件的路径为相对路径,则从所述文件映射表中获取所述当前构建模块所依赖的源文件中包含的头文件的绝对路径,将所述绝对路径作为所述目标路径。
[0014]在示例性实施例中,头文件列表获取单元包括:依赖文件获取单元,用于获取所述当前构建模块的依赖模块直接包含的头文件和源文件;头文件列表写入单元,用于将所述当前构建模块的依赖模块直接包含的头文件写入所述当前构建模块的依赖模块的头文件列表中;间接头文件获取单元,用于获取所述当前构建模块的依赖模块直接包含的源文件中间接包含的头文件;间接头文件写入单元,用于将所述当前构建模块的依赖模块直接包含的源文件中间接包含的头文件写入所述当前构建模块的依赖模块的头文件列表中。
[0015]在示例性实施例中,间接头文件获取单元包括:源文件依赖头文件获取单元,用于深度遍历所述当前构建模块的依赖模块直接包含的源文件,获取所述当前构建模块的依赖模块直接包含的源文件中包含的直接依赖和间接依赖的头文件;源文件头文件写入单元,用于将所述当前构建模块的依赖模块直接包含的源文件中包含的头文件写入所述当前构建模块的依赖模块的头文件列表中。
[0016]在示例性实施例中,无效依赖检测装置还包括:依赖映射列表存储单元,用于将所述当前构建模块的依赖模块及其头文件列表存储至依赖映射列表中。其中,无效依赖确定单元包括:头文件列表取出单元,用于从所述依赖映射列表中取出所述当前构建模块的依赖模块的头文件列表;无效依赖判定单元,用于若所述当前构建模块的依赖模块的头文件列表中的头文件均不存在于所述当前构建模块的包含列表中,则判定所述依赖模块为所述当前构建模块的无效依赖。
[0017]在示例性实施例中,无效依赖检测装置还包括:提示信息发送单元,用于发送提示信息,以便根据所述提示信息删除所述当前构建模块的无效依赖;重新编译单元,用于重新编译删除所述当前构建模块的无效依赖后的所述当前构建模块。
[0018]本公开实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如上述实施例中所述的无效依赖检测方法。
[0019]本公开实施例提供了一种电子设备,包括:至少一个处理器;存储装置,配置为存储至少一个程序,当所述至少一个程序被所述至少一个处理器执行时,使得所述至少一个处理器实现如上述实施例中所述的无效依赖检测方法。
[0020]根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例的各种可选实现方式中提供的方法。
[0021]在本公开的一些实施例所提供的技术方案中,通过分析当前构建模块所依赖的源
文件中包含的头文件信息,来确定当前构建模块实际依赖到的文件,再通过分析当前构建模块的依赖模块的头文件列表,来获得当前构建模块所编译的文件,如果当前构建模块所编译的文件与其实际依赖到的文件均没有交集,则可以判定该依赖模块为该当前构建模块的无效依赖,从而可以在后续执行过程中,将该依赖模块从该当前构建模块的deps中自动删除,可以快速地向开发人员展示当前构建模块的无效依赖,从而可以优化编译速度,并减少了二进制的大小。实现了无效依赖确认的自动化,大大提升了无效依赖的检测准确性,并提高了研发效率。
[0022]应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
[0023]此本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种无效依赖检测方法,其特征在于,包括:确定当前构建模块所依赖的源文件;获取所述当前构建模块所依赖的源文件中包含的头文件信息;确定所述当前构建模块的依赖模块;获取所述当前构建模块的依赖模块的头文件列表;将与所述头文件信息无交集的所述头文件列表对应的依赖模块确定为所述当前构建模块的无效依赖。2.根据权利要求1所述的方法,其特征在于,获取所述当前构建模块所依赖的源文件中包含的头文件信息,包括:深度遍历所述当前构建模块所依赖的源文件,获取所述当前构建模块所依赖的源文件中包含的直接依赖和间接依赖的头文件;获取所述当前构建模块所依赖的源文件中包含的头文件的目标路径;将所述当前构建模块所依赖的源文件及其包含的头文件的目标路径作为所述头文件信息存储至所述当前构建模块的包含列表。3.根据权利要求2所述的方法,其特征在于,还包括:遍历获得所述当前构建模块下的头文件的文件名及其绝对路径;将所述当前构建模块下的头文件的文件名及其绝对路径存储至文件映射列表中;其中,获取所述当前构建模块所依赖的源文件中包含的头文件的目标路径,包括:若所述当前构建模块所依赖的源文件中包含的头文件的路径为相对路径,则从所述文件映射表中获取所述当前构建模块所依赖的源文件中包含的头文件的绝对路径,将所述绝对路径作为所述目标路径。4.根据权利要求2所述的方法,其特征在于,获取所述当前构建模块的依赖模块的头文件列表,包括:获取所述当前构建模块的依赖模块直接包含的头文件和源文件;将所述当前构建模块的依赖模块直接包含的头文件写入所述当前构建模块的依赖模块的头文件列表中;获取所述当前构建模块的依赖模块直接包含的源文件中间接包含的头文件;将所述当前构建模块的依赖模块直接包含的源文件中间接包含的头文件写入所述当前构建模块的依赖模块的头文件列表中。5.根据权利要求4所述的方法,其特征在于,获取所述当前构建模块的依赖模块直接包含的源文件中间接...

【专利技术属性】
技术研发人员:卢艳梅蒋剑琴
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:

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

1