论文标题

要了解C/C ++生态系统中的第三方库依赖性

Towards Understanding Third-party Library Dependency in C/C++ Ecosystem

论文作者

Tang, Wei, Xu, Zhengzi, Liu, Chengwei, Wu, Jiahui, Yang, Shouguo, Li, Yi, Luo, Ping, Liu, Yang

论文摘要

第三方图书馆(TPLS)经常在软件中重复使用,以减少开发成本和上市时间。但是,外部库依赖性可能会将漏洞引入主机应用程序。图书馆依赖性问题受到了相当大的关注。建议许多软件包经理,例如Maven,PIP和NPM来管理TPLS。此外,除了C/C ++以外,在研究语言生态系统中的依赖性方面已经大大努力。由于缺乏C/C ++的统一软件包管理器,现有研究对C/C ++生态系统中TPL依赖性的了解很少,尤其是在大规模上。 为了了解C/C ++生态系统中的TPL依赖关系,我们收集现有的TPL数据库,软件包管理工具和依赖性检测工具,总结C/C ++项目的依赖性模式,并构建一个全面,精确的C/C ++依赖性检测器。使用我们的检测器,我们从包含GitHub的24K C/C ++存储库的大规模数据库中提取依赖项。基于提取的依赖性,我们提供了一项经验研究的结果和发现,旨在了解TPL依赖性的特征。我们进一步讨论了管理C/C ++依赖性的含义以及图书馆开发,软件组成分析和C/C ++软件包管理器领域软件工程研究人员和开发人员的未来研究方向。

Third-party libraries (TPLs) are frequently reused in software to reduce development cost and the time to market. However, external library dependencies may introduce vulnerabilities into host applications. The issue of library dependency has received considerable critical attention. Many package managers, such as Maven, Pip, and NPM, are proposed to manage TPLs. Moreover, a significant amount of effort has been put into studying dependencies in language ecosystems like Java, Python, and JavaScript except C/C++. Due to the lack of a unified package manager for C/C++, existing research has only few understanding of TPL dependencies in the C/C++ ecosystem, especially at large scale. Towards understanding TPL dependencies in the C/C++ecosystem, we collect existing TPL databases, package management tools, and dependency detection tools, summarize the dependency patterns of C/C++ projects, and construct a comprehensive and precise C/C++ dependency detector. Using our detector, we extract dependencies from a large-scale database containing 24K C/C++ repositories from GitHub. Based on the extracted dependencies, we provide the results and findings of an empirical study, which aims at understanding the characteristics of the TPL dependencies. We further discuss the implications to manage dependency for C/C++ and the future research directions for software engineering researchers and developers in fields of library development, software composition analysis, and C/C++package manager.

扫码加入交流群

加入微信交流群

微信交流群二维码

扫码加入学术交流群,获取更多资源