中文

ModuleGuard:理解与检测Python生态系统中的模块冲突

软件工程 2024-01-05 v1

摘要

Python 已成为软件开发中最流行的编程语言之一,因其简洁、可读性和多功能性。随着 Python 生态系统的增长,开发者在避免模块冲突方面面临越来越大的挑战,模块冲突发生在不同包具有相同命名空间模块时。不幸的是,现有工作既没有全面研究模块冲突,也没有提供检测冲突的工具。因此,本文系统地研究了模块冲突问题及其对 Python 生态系统的影响。我们提出了一种名为 InstSimulator 的新技术,利用语义和安装模拟实现准确高效的模块提取。基于此,我们实现了一个名为 ModuleGuard 的工具来检测 Python 生态系统的模块冲突。研究中,我们首先收集了 97 个 MC 问题,分类了这些 MC 问题的特征和原因,总结了三种不同的冲突模式,并分析了它们的潜在威胁。然后,我们对整个 PyPI 生态系统(420 万个包)和 GitHub 热门项目(3711 个项目)进行了大规模分析,检测每种 MC 模式并分析其潜在影响。我们发现模块冲突仍然影响许多 TPL 和 GitHub 项目。这主要是由于开发者缺乏对其直接依赖项中模块的了解,更不用说传递依赖项的模块了。我们的工作揭示了 Python 在处理命名冲突方面的不足,并为开发者提供了检测冲突的工具和指南。

关键词

引用

@article{arxiv.2401.02090,
  title  = {ModuleGuard:Understanding and Detecting Module Conflicts in Python Ecosystem},
  author = {Ruofan Zhu and Xingyu Wang and Chengwei Liu and Zhengzi Xu and Wenbo Shen and Rui Chang and Yang Liu},
  journal= {arXiv preprint arXiv:2401.02090},
  year   = {2024}
}

备注

The paper was accepted by ICSE24