利用全局标识符的唯一性确定 Python 软件源代码的来源
软件工程
2023-05-25 v1
摘要
我们考虑识别自由/开源软件(FOSS)来源的问题,特别是识别复用源代码复制自何处这一需求。我们提出了一种基于软件标识符(如程序员选择的变量、类和函数名称)的轻量级方法来解决该问题。所提方法能够高效地将候选来源产品缩小至一小组,以便使用更耗费资源的技术进一步分析以做出最终来源判定。通过分析 PyPI(Python Packaging Index,Python 包索引)开源生态,我们发现全局定义的标识符非常独特。在 PyPI 的 244K 个包中,我们发现了 11.2M 个不同的全局标识符(类与方法/函数名——仅 0.6% 的标识符在两类实体间共享);76% 的标识符仅在一个包中使用,93% 至多用于 3 个包。从输入产品中随机选取 3 个非频繁全局标识符,足以在 89% 的情况下将其来源缩小至最多 3 个产品。我们通过将 Debian 中以 Python 实现的源代码包映射到相应的 PyPI 包来验证所提方法;该方法至多使用五次尝试,每次尝试从受试软件包随机选择的 python 文件中取三个随机全局标识符,然后使用流行度指数对结果排序,且只需检查排名第一的结果。在我们的实验中,该方法能有效地以 0.9 的召回率和 0.77 的精确率找到项目的真实来源。
引用
@article{arxiv.2305.14837,
title = {Using the Uniqueness of Global Identifiers to Determine the Provenance of Python Software Source Code},
author = {Yiming Sun and Daniel M. German and Stefano Zacchiroli},
journal= {arXiv preprint arXiv:2305.14837},
year = {2023}
}