当前位置: 首页 > 专利查询>厦门大学专利>正文

基于调用图的依赖冲突修复方法及装置制造方法及图纸

技术编号:34864114 阅读:56 留言:0更新日期:2022-09-08 08:08
本公开提供一种基于调用图的依赖冲突修复方法,包括:输入Python项目路径和依赖冲突的包,经过调用图生成器处理后得到第一集合,第一集合包含项目调用到冲突包的所有方法;输入依赖冲突的包的所有版本,经过调用图生成器处理后得到第二集合,第二集合包含冲突包的其他版本包含的所有方法;将第一集合与第二集合进行比较,如果第一集合是第二集合的子集,获取依赖冲突的包的可替代版本,输出可替代版本列表。本公开还提供一种基于调用图的依赖冲突修复装置、电子设备以及可读存储介质。电子设备以及可读存储介质。电子设备以及可读存储介质。

【技术实现步骤摘要】
基于调用图的依赖冲突修复方法及装置


[0001]本公开涉及Python库依赖冲突修复技术,尤其涉及一种基于调用图的依赖冲突修复方法、装置、电子设备及可读存储介质。

技术介绍

[0002]已经对数百万个Python库建立了索引,以允许开发人员根据指定的版本约束自动下载和安装他们的项目的依赖项。尽管自动化带来了便利性,但Python项目中的版本约束很容易发生冲突,从而导致构建失败。这类冲突称为依赖冲突(DC)问题。由远程依赖关系更新引起的冲突,远程依赖关系引起的冲突又分为直接依赖之间引起的冲突,直接依赖和传递依赖引起的冲突,传递依赖和传递依赖关系引起的冲突。
[0003]现有的包管理工具pip可以自动安装服务器端中央存储库PyPI中的第三方库。在这种设置中,开发人员以setup.py或者requirements.txt指定依赖关系,然后交由pip进行安装,pip通过扫描PyPI上的包依赖关系,给出合适的推荐版本。库的名称和版本通常遵循事实上的约定,例如语义版本控制。但是新版本pip工具也有无法解决的问题,根据项目开发人员所指定的包版本的范围本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种基于调用图的依赖冲突修复方法,其特征在于,包括:输入Python项目路径和依赖冲突的包,经过调用图生成器处理后得到第一集合,所述第一集合包含项目调用到冲突包的所有方法;输入所述依赖冲突的包的所有版本,经过调用图生成器处理后得到第二集合,所述第二集合包含冲突包的其他版本包含的所有方法;以及比较模块,将所述第一集合与第二集合进行比较,如果第一集合是第二集合的子集,获取所述依赖冲突的包的可替代版本,输出所述可替代版本列表。2.根据权利要求1所述的基于调用图的依赖冲突修复方法,其特征在于,所述调用图生成器的处理过程包括:获取需要安装的包/项目及需要分析的包的包名;下载所述项目所需要的包到指定的目录;构建包与包之间的依赖树;通过Pycg处理所述包或包的名称,得到单个包的函数关系调用图;将所述单个包的函数关系调用图的边集取出并对命名空间处理,获得全局的函数关系调用图;基于所述全局的函数关系调用图,通过深度优先或广度优先搜索,获取包与包之间的可达性;以及输出包含调用到的所述包的方法的集合。3.根据权利要求2所述的基于调用图的依赖冲突修复方法,其特征在于,所述函数关系调用图的表示结构包括:图G=(V,E),其中,V表示顶点集合,大小记为|V|,E表示边的集合,大小记为|E|,所述顶点集合为各个所述包或包中的方法集合,所述边的集合为各个所述包或包中的方法之间的调用关系。4.根据权利要求3所述的基于调用图的依赖冲突修复方法,其特征在于,所述函数关系调用图为有向图的情况下,函数关系调用图通过邻接矩阵表示。5.根据权利要求2所述的基于调用图的依赖冲突修复方法,其特征在于,构建包与包之间的依赖树,包括:从pipdeptree获取生成依赖树的入口函数;以及对pipdeptree数据结构进行转化,去掉包括版本及安装时间...

【专利技术属性】
技术研发人员:吴荣鑫王超林立
申请(专利权)人:厦门大学
类型:发明
国别省市:

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

1