软件学报

北大核心,INSPEC,JST,Pж(AJ),EI

国内刊号:11-2560/TP

国际刊号:1000-9825

软件学报杂志2026年第7期:CAnalyzer: 一种面向C/C++源代码的软件成分分析技术

发布日期:

作者:徐美秋,王舒婧,王莹,于海,朱志良

单位:徐美秋,东北大学 软件学院, 辽宁 沈阳 11016911,王舒婧,东北大学 软件学院, 辽宁 沈阳 11016902,王莹,东北大学 软件学院, 辽宁 沈阳 11016903,于海,东北大学 软件学院, 辽宁 沈阳 11016904,朱志良,东北大学 软件学院, 辽宁 沈阳 11016905

关键词:开源软件复用;软件成分分析;第三方库依赖

基金:国家重点研发计划(2024YFF0908000); 中国博士后科学基金(2024M750375); CCF华为胡杨林基金软件工程专项(鸿蒙专题)(CCF-HuaweiSE20240210)

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

来源:2026年第7期

《软件学报》期刊编辑部

查看软件学报杂志2026年第7期

联系我们

  • 地址:北京8718信箱
  • 电话:010-62562563
  • E-mail:jos (a) iscas. ac. cn

咨询工作人员