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.
翻译:第三方图书馆(TPL)经常在软件中被重新使用,以减少开发成本和市场到市场的时间,但是外部图书馆依赖性可能会给东道方应用程序带来脆弱性。图书馆依赖性的问题已经受到相当严重的关注。许多软件管理员,如Maven、Pip和国家预防机制,都提议管理TPL。此外,在研究诸如爪哇、Python和JavaScript(C/C++/C+)以外的语言生态系统中的依赖性方面也投入了大量努力。由于C/C++缺乏统一的软件管理员,现有研究对C/C+生态系统中的依赖性了解甚少,特别是大范围而言。为了了解C/C+C+生态系统中的依赖性,我们收集了现有的TPL数据库、软件管理工具和依赖性检测工具,总结了C++项目的依赖性模式,并建立了一个全面、精确的C/C+25的依赖性检测器。由于C++/C++缺乏统一的软件管理员,我们从一个大型数据库中提取了对C/C++生态系统生态系统依赖性依赖性的理解,特别是大范围的依赖性。我们根据C+C/C+C和C+GiBB公司对数据库进行24K的存储库。我们进一步讨论了对数据库和C的研究结果分析,我们的未来分析的结果。我们根据这些结果和对数据库和对CBBBE-S-S-S-S-S-S-S-S-S-S-S-S-S-A-S-A-A-A-A-S-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-C-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-C-A-A-A-A-A-A-A-A