中文

Roseau:基于源码的 Java 快速精准 API 破坏性变更分析工具

软件工程 2025-07-24 v1

摘要

了解 API 演化及引入破坏性变更(BC)对于库维护者管理向后兼容性以及研究者开展软件库演化实证研究至关重要。在 Java 中,JApiCmp 和 Revapi 等工具常用于检测库版本之间的 BC,但其对二进制 JAR 的依赖限制了适用范围。这种限制阻碍了对 API 演化的大规模纵向研究以及诸如提交级别 BC 检测等细粒度分析。在本文中,我们介绍 Roseau,一种新型静态分析工具,通过构建从具备丰富语义分析的库代码中构造的技术中性 API 模型来实现此目标。可以对 API 模型进行分析以研究 API 演化并比较以识别任意两个库版本(发行版、提交、分支等)之间的 BC。与传统方法不同,Roseau 可以从源代码或字节码构建 API 模型,并针对库历史的大规模纵向分析进行优化。我们使用 JApiCmp 和 Revapi 作为基准,对 Roseau 的准确性、性能和适合性进行评估。我们扩展并细化了一个既定的 BC 测试基准,展示 Roseau 的准确率(F1=0.99)高于 JApiCmp(F1=0.86)和 Revapi(F1=0.91)。我们分析了来自 Maven Central 的 60 个流行库,发现 Roseau 性能卓越,能在不到两秒钟内检测库版本之间的 BC,包括数十万行代码的库。我们进一步通过跟踪 Google Guava API 的演化及 14 年间 6,839 次提交中 BC 的引入,展示了 JApiCmp 和 Revapi 进行纵向研究的局限性以及 Roseau 提供的新型分析能力,将分析时间从几天缩短至几分钟。

关键词

引用

@article{arxiv.2507.17369,
  title  = {Roseau: Fast, Accurate, Source-based API Breaking Change Analysis in Java},
  author = {Corentin Latappy and Thomas Degueule and Jean-Rémy Falleri and Romain Robbes and Lina Ochoa},
  journal= {arXiv preprint arXiv:2507.17369},
  year   = {2025}
}