摘要:第三方库 (third-party library, TPL)在软件开发中得到了广泛应用, 但也带来了安全漏洞和许可证冲突等风险. 为应对这些挑战, 软件成分分析 (software composition analysis, SCA)技术应运而生, 旨在通过识别和分析软件中使用的开源组件及其依赖关系, 帮助开发者检测安全漏洞、过时补丁和许可证合规性问题, 确保软件供应链的安全. 然而, 现有SCA工具在C/C++领域存在3大局限: 缺乏全面的TPL特征库、难以识别库粒度复用、对TPL依赖关系的分析能力不足. 针对上述问题, 提出C/C++源代码软件成分分析技术——CAnalyzer, 用于软件库粒度的复用检测场景. CAnalyzer通过整合15个平台的数据, 构建了一个包含33100个TPL和30047290个函数的特征库, 并通过特征库预处理与多重阈值匹配策略, 显著提升了TPL检测的准确性. 此外, CAnalyzer通过解析源码中的依赖指令, 实现了TPL间依赖关系的自动化构建. 实验结果表明, CAnalyzer在TPL检测中的精确率为90.63%, 召回率为86.57%, 在两项指标上均优于现有方法CENTRIS、TPLite和OSSFP. 在TPL依赖关系检测中, CAnalyzer的召回率和精确率分别为94.79%和98.99%. 目前, CAnalyzer已被OpenHarmony社区采纳, 在689个代码仓库中识别出166项外部组件, 体现了其在开源社区管理中的应用价值.