一种Go工程依赖包管理方法、装置、设备及存储介质制造方法及图纸

技术编号:38383908 阅读:11 留言:0更新日期:2023-08-05 17:40
本申请公开了一种Go工程依赖包管理方法、装置、设备及存储介质,涉及软件工程技术领域,包括:获取Go工程中各依赖包之间的直接依赖关系和所述直接依赖关系中被依赖包的版本信息,并将所述直接依赖关系存储在预设散列表中;基于所述预设散列表确定各所述依赖包的依赖路径,并将所述依赖路径和所述依赖路径中所述被依赖包的版本信息记录到路径列表中;将所述路径列表中的全部所述依赖路径和所述被依赖包的版本信息通过预设方式进行图形化展示。可见,利用散列表将获取到的各依赖包之间的版本信息进行统计,然后基于所述各依赖包之间的依赖关系确定出各所述依赖包的依赖路径,并进行相应的可视化展示。这样一来,能够梳理及明确依赖库版本。依赖库版本。依赖库版本。

【技术实现步骤摘要】
一种Go工程依赖包管理方法、装置、设备及存储介质


[0001]本专利技术涉及软件工程
,特别涉及一种Go工程依赖包管理方法、装置、设备及存储介质。

技术介绍

[0002]出现在21世纪的go语言,由于接近C语言的执行性能和接近解析型语言的开发效率,以及近乎完善的编译速度,已经风靡全球。特别是在云项目中,大部都使用了Golang开发。快速发展及演进,也引发了使用过程中的一些痛处,如在go的演进过程,近几年就经历了GOPATH、go vendor和go mod三种依赖管理模式,且管理模式不兼容,即只能选择一种使用。在一些生命周期长一些的项目上,为了使用官方新的管理机制,旧工程面临升级为go mod管理模式的场景。
[0003]升级最大障碍为依赖库版本不一致导致的升级失败,排查困难,效率低下。如何梳理及明确依赖库版本是当前所要解决的。

技术实现思路

[0004]有鉴于此,本专利技术的目的在于提供一种Go工程依赖包管理方法、装置、设备及存储介质,能够梳理及明确依赖库版本,协助项目组技术决策,解决开发阶段难题。其具体方案如下:
[0005]第一方面,本申请公开了一种Go工程依赖包管理方法,包括:
[0006]获取Go工程中各依赖包之间的直接依赖关系和所述直接依赖关系中被依赖包的版本信息,并将所述直接依赖关系存储在预设散列表中;
[0007]基于所述预设散列表确定各所述依赖包的依赖路径,并将所述依赖路径和所述依赖路径中所述被依赖包的版本信息记录到路径列表中;
[0008]将所述路径列表中的全部所述依赖路径和所述被依赖包的版本信息通过预设方式进行图形化展示。
[0009]可选的,所述获取Go工程中各依赖包之间的直接依赖关系和所述直接依赖关系中被依赖包的版本信息,包括:
[0010]获取Go mod graph命令输出的Go工程中各依赖包之间的直接依赖关系和所述直接依赖关系中被依赖包的版本信息。
[0011]可选的,所述将所述直接依赖关系存储在预设散列表中,包括:
[0012]将所述直接依赖关系中的所述被依赖包作为预设散列表的键值存储在所述预设散列表中,并将与所述被依赖包对应的所有所述依赖包进行汇总以作为所述键值对应的数组元素存储在所述预设散列表中;其中,与所述被依赖包对应的依赖包为依赖所述被依赖包的依赖包。
[0013]可选的,所述方法还包括:
[0014]将Go工程中直接引用的依赖包作为预设散列表的键值存储在所述预设散列表中,
并将预设工程根作为所述键值对应的数组元素存储在所述预设散列表中;其中,与所述预设工程根对应的依赖包为被所述预设工程根所依赖的被依赖包。
[0015]可选的,所述基于所述预设散列表确定各所述依赖包的依赖路径,包括:
[0016]基于所述预设散列表中所述键值和所述键值对应的数组元素确定各所述依赖包的依赖路径。
[0017]可选的。所述基于所述预设散列表中所述键值和所述键值对应的数组元素确定各所述依赖包的依赖路径,包括:
[0018]将任一依赖包作为当前目标被依赖包存入至预设列表中,并获取当前目标被依赖包对应的依赖对象作为当前依赖对象;所述依赖对象包括依赖包和所述预设工程根;
[0019]将当前依赖对象存入至所述预设列表中与当前目标被依赖包对应的位置,并判断当前依赖对象是否为所述预设工程根,如果是则退出当前循环,如果否则将当前依赖对象确定为新的当前目标被依赖包;
[0020]获取当前目标被依赖包对应的所述依赖对象作为新的当前依赖对象,并重新跳转至所述将当前依赖对象存入至所述预设列表中与当前目标被依赖包对应的位置的步骤;
[0021]基于所述预设列表中的所有目标被依赖包和所述预设工程根确定与所述目标依赖包对应的依赖路径。
[0022]可选的,所述将所述路径列表中的全部所述依赖路径和所述被依赖包的版本信息通过预设方式进行图形化展示,包括:
[0023]利用预设广度优先算法将所述路径列表中的全部所述依赖路径绘制成节点连接图或树形图进行展示。
[0024]第二方面,本申请公开了一种Go工程依赖包管理装置,包括:
[0025]直接依赖关系获取模块,用于获取Go工程中各依赖包之间的直接依赖关系和所述直接依赖关系中被依赖包的版本信息,并将所述直接依赖关系存储在预设散列表中;
[0026]依赖路径确定模块,用于基于所述预设散列表确定各所述依赖包的依赖路径,并将所述依赖路径和所述依赖路径中所述被依赖包的版本信息记录到路径列表中;
[0027]图形化展示模块,用于将所述路径列表中的全部所述依赖路径和所述被依赖包的版本信息通过预设方式进行图形化展示。
[0028]第三方面,本申请公开了一种电子设备,包括:
[0029]存储器,用于保存计算机程序;
[0030]处理器,用于执行所述计算机程序以实现前述的Go工程依赖包管理方法。
[0031]第四方面,本申请公开了一种计算机可读存储介质,用于保存计算机程序,所述计算机程序被处理器执行时实现前述的Go工程依赖包管理方法。
[0032]可见,本申请中,首先获取Go工程中各依赖包之间的直接依赖关系和所述直接依赖关系中被依赖包的版本信息,并将所述直接依赖关系存储在预设散列表中;基于所述预设散列表确定各所述依赖包的依赖路径,并将所述依赖路径和所述依赖路径中所述被依赖包的版本信息记录到路径列表中;将所述路径列表中的全部所述依赖路径和所述被依赖包的版本信息通过预设方式进行图形化展示。即,先获取到各个依赖包之间的直接依赖关系,然后将所述直接依赖关系存入之预设散列表中,其中,所述预设散列表可以记录有向的数据关系的特性。利用上述特性以及所述直接依赖关系确定出各所述依赖包的依赖路径,然
后将所述依赖路径进行图形化展示。这样一来,可以利用图形,将各依赖包之间的依赖关系进行合理的梳理,能够大幅提升确认依赖库版本的准确性及效率,协助项目组在进行Go工程升级时进行技术决策,解决开发阶段难题。
附图说明
[0033]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0034]图1为本申请公开的一种Go工程依赖包管理方法流程图;
[0035]图2为本申请公开的一种具体的Go工程依赖包依赖路径查找方法流程图;
[0036]图3为本申请公开的一种具体的Go工程依赖包依赖路径图;
[0037]图4为本申请公开的一种具体的Go工程升级方法流程图;
[0038]图5为本申请公开的一种Go工程依赖包管理装置结构示意图;
[0039]图6为本申请公开的一种电子设备结构图。
具体实施方式
[0040]下面将结合本申请实施例中的附本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种Go工程依赖包管理方法,其特征在于,包括:获取Go工程中各依赖包之间的直接依赖关系和所述直接依赖关系中被依赖包的版本信息,并将所述直接依赖关系存储在预设散列表中;基于所述预设散列表确定各所述依赖包的依赖路径,并将所述依赖路径和所述依赖路径中所述被依赖包的版本信息记录到路径列表中;将所述路径列表中的全部所述依赖路径和所述被依赖包的版本信息通过预设方式进行图形化展示。2.根据权利要求1所述的Go工程依赖包管理方法,其特征在于,所述获取Go工程中各依赖包之间的直接依赖关系和所述直接依赖关系中被依赖包的版本信息,包括:获取Go mod graph命令输出的Go工程中各依赖包之间的直接依赖关系和所述直接依赖关系中被依赖包的版本信息。3.根据权利要求2所述的Go工程依赖包管理方法,其特征在于,所述将所述直接依赖关系存储在预设散列表中,包括:将所述直接依赖关系中的所述被依赖包作为预设散列表的键值存储在所述预设散列表中,并将与所述被依赖包对应的所有所述依赖包进行汇总以作为所述键值对应的数组元素存储在所述预设散列表中;其中,与所述被依赖包对应的依赖包为依赖所述被依赖包的依赖包。4.根据权利要求3所述的Go工程依赖包管理方法,其特征在于,还包括:将Go工程中直接引用的依赖包作为预设散列表的键值存储在所述预设散列表中,并将预设工程根作为所述键值对应的数组元素存储在所述预设散列表中;其中,与所述预设工程根对应的依赖包为被所述预设工程根所依赖的被依赖包。5.根据权利要求4所述的Go工程依赖包管理方法,其特征在于,所述基于所述预设散列表确定各所述依赖包的依赖路径,包括:基于所述预设散列表中所述键值和所述键值对应的数组元素确定各所述依赖包的依赖路径。6.根据权利要求5所述的Go工程依赖包管理方法,其特征在于,所述基于所述预设散列表中所述键值和所述键值对应的数组元素确定各所述依赖包的依...

【专利技术属性】
技术研发人员:陈金龙魏子重李锐
申请(专利权)人:山东浪潮科学研究院有限公司
类型:发明
国别省市:

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

1