近日,中国科学院软件研究所软件工程技术研究开发中心在Python程序构建中的依赖分析推断方面取得研究进展,提出知识驱动的Python程序依赖推断方法及工具,帮助开发人员提高代码复用效率,减少依赖缺失和依赖版本错误导致的Python程序构建和运行错误,为提升开发运维一体化中的应用构建自动化能力起到支撑作用。
Python语言广泛应用于科学计算等,开发者常常通过代码复用提高开发效率。但Python程序运行环境复杂,依赖于Python包、系统库和特定版本的Python解释器。缺少程序依赖或者依赖版本不兼容,会导致程序构建失败和运行错误。
针对该问题,研究提出一种知识驱动的Python程序依赖推断方法,包括知识图谱构建和程序依赖推断两个阶段。在知识图谱构建阶段,该方法收集大量多源异构数据,进行知识的抽取和融合,构建Python领域知识图谱。在程序依赖推断阶段,该方法基于领域知识图谱,通过程序分析和约束求解方法推断目标Python程序的多层次依赖。
基于上述方法,该研究开发了PyEGo:知识驱动的Python程序依赖推断工具。实验结果显示,PyEGo工具的依赖推断成功率是已有方法的1.5—4.5倍,极大提升了程序构建的正确率和执行效率。
相关成果以Knowledge-Based Environment Dependency Inference for Python Programs为题,被软件工程领域会议ICSE 2022接收。研究团队依托该成果获得了2021年第四届中国软件开源创新大赛(自由组)一等奖。
Python程序依赖分析方法示意图
来源:中国科学院软件研究所