中文

JC-Finder:基于类级树分析的 Java 克隆式第三方库检测

软件工程 2025-08-05 v1

摘要

尽管第三方库 (TPL) 的重用促进了软件开发,但其混乱的管理方式带来了软件维护的重大威胁,未经授权的代码重用也引发了诸如侵犯版权等道德问题。为识别项目中 TPL 的使用,采用软件构成分析 (SCA),基于 TPL 引入方式的不同,分为克隆式 SCA 与基于包管理器的 SCA (PM-based SCA)。尽管通过克隆引入的 TPL 在 Java 中广泛存在,但目前没有专为 Java 设计的克隆式 SCA 工具。直接将其他工具的克隆式 SCA 技术应用于 Java 也存在问题。为填补这一空白,我们引入 JC-Finder,一种新型的克隆式 SCA 工具,旨在准确、全面地识别 Java 项目中由源代码克隆引入的 TPL 使用实例。JC-Finder 通过捕获类级特征、保持函数间关系,并排除平凡或重复元素,在代码克隆中实现了 SCA 的准确性和效率。为评估 JC-Finder 的效率,我们将其应用于 9965 个最流行的 Maven 库作为参考数据,并测试了 1000 个 GitHub 项目中 TPL 的使用情况。结果显示,JC-Finder 的 F1 分数为 0.818,优于现有函数级工具提升 0.427。解决 TPL 使用的平均耗时为 14.2 秒,约为现有工具的 9 倍。我们进一步将 JC-Finder 应用于 7947 个 GitHub 项目,发现约 9.89% 的项目(789 个)存在由代码克隆引起的 TPL 使用,识别出 2142 个 TPL。JC-Finder 成功检测到 26.20% 的 TPL 未在包管理器中声明。

关键词

引用

@article{arxiv.2508.02397,
  title  = {JC-Finder: Detecting Java Clone-based Third-Party Library by Class-level Tree Analysis},
  author = {Lida Zhao and Chaofan Li and Yueming Wu and Lyuye Zhang and Jiahui Wu and Chengwei Liu and Sen Chen and Yutao Hu and Zhengzi Xu and Yi Liu and Jingquan Ge and Jun Sun and Yang Liu},
  journal= {arXiv preprint arXiv:2508.02397},
  year   = {2025}
}