版权所有:内蒙古大学图书馆 技术提供:维普资讯• 智图
内蒙古自治区呼和浩特市赛罕区大学西街235号 邮编: 010021
作者机构:四川大学计算机学院(软件学院智能科学与技术学院) 四川旅游学院信息与工程学院
出 版 物:《计算机科学与探索》 (Journal of Frontiers of Computer Science and Technology)
年 卷 期:2025年
核心收录:
学科分类:08[工学] 0835[工学-软件工程] 081202[工学-计算机软件与理论] 0812[工学-计算机科学与技术(可授工学、理学学位)]
基 金:国家自然科学基金(U2133208) 中央在川高校院所“聚源兴川”项目(24JYXC0043) 四川大学-泸州市人民政府战略合作项目(2022CDLZ-5)
主 题:开源软件 软件组件分析 第三方库检测 代码克隆 修改重用 静态分析
摘 要:第三方库(Third-party libraries,TPL)作为现代C/C++软件开发的重要组成部分,其精确检测与管理对于保障软件质量与安全性至关重要。然而,现有方法主要依赖代码语法特征,对Type II和Type III克隆重用场景的适应性不足,易导致检测失效。为此,本文提出一种基于函数抽象语法树(Abstract syntax tree,AST)特征的TPL检测方法——TPLADD。该方法利用AST节点度数与次序的度量信息快速实现函数语法向量嵌入,并结合向量数据库与近似最近邻检索技术,显著提升了修改重用场景下的检测鲁棒性。此外,基于异常检测的过滤技术有效减少干扰函数对检测的影响,提高结果精确性。基于GitHub搜集的29782个开源软件(Open-source software,OSS)共计726074个版本,构建了特征向量索引库,并在100个知名项目上验证有效性。结果表明,在精度上,TPLADD相较于CENTRIS,精确率和召回率分别提升了3.88%和2.76%;在鲁棒性上,TPLADD即使出现较大程度代码修改时,仍能保持74%的F1值;在性能上,TPLADD平均每个TPL检测耗时仅0.42s,索引库存储占用率仅为总体函数特征的0.41%,充分体现了其高鲁棒性、高精确性的特点,且具备良好的性能表现。