计算机科学 > 软件工程
[提交于 2025年7月23日
]
标题: Roseau:Java 中基于源代码的快速、准确的 API 破坏性更改分析
标题: Roseau: Fast, Accurate, Source-based API Breaking Change Analysis in Java
摘要: 理解软件库中的API演化和引入的破坏性变更(BCs)对于库维护者管理向后兼容性以及研究人员进行软件库演化的实证研究至关重要。在Java中,JApiCmp和Revapi等工具常用于检测库版本之间的BCs,但它们依赖于二进制JAR文件,这限制了其适用性。这种限制阻碍了API演化的大规模纵向研究以及细粒度分析,如提交级别的BC检测。在本文中,我们介绍了Roseau,一种新颖的静态分析工具,它能够从配备丰富语义分析的库代码中构建与技术无关的API模型。API模型可以用于研究API演化,并与之比较以识别任何两个库版本(发布、提交、分支等)之间的BCs。与传统方法不同,Roseau可以从源代码或字节码构建API模型,并针对库历史的大规模纵向分析进行了优化。我们评估了Roseau在纵向研究API演化中的准确性、性能和适用性,并以JApiCmp和Revapi作为基准。我们扩展并完善了一个已建立的BCs基准,并表明Roseau的准确性(F1 = 0.99)高于JApiCmp(F1 = 0.86)和Revapi(F1 = 0.91)。我们分析了Maven Central中的60个流行库,并发现Roseau表现出卓越的性能,在不到两秒内检测版本之间的BCs,包括在拥有数十万行代码的库中。我们进一步通过跟踪Google的Guava API的演化以及14年和6,839次提交中BCs的引入,说明了JApiCmp和Revapi在纵向研究中的局限性,以及Roseau提供的新颖分析能力,将分析时间从几天减少到几分钟。
文献和引用工具
与本文相关的代码,数据和媒体
alphaXiv (什么是 alphaXiv?)
CatalyzeX 代码查找器 (什么是 CatalyzeX?)
DagsHub (什么是 DagsHub?)
Gotit.pub (什么是 GotitPub?)
Hugging Face (什么是 Huggingface?)
带有代码的论文 (什么是带有代码的论文?)
ScienceCast (什么是 ScienceCast?)
演示
推荐器和搜索工具
arXivLabs:与社区合作伙伴的实验项目
arXivLabs 是一个框架,允许合作伙伴直接在我们的网站上开发和分享新的 arXiv 特性。
与 arXivLabs 合作的个人和组织都接受了我们的价值观,即开放、社区、卓越和用户数据隐私。arXiv 承诺这些价值观,并且只与遵守这些价值观的合作伙伴合作。
有一个为 arXiv 社区增加价值的项目想法吗? 了解更多关于 arXivLabs 的信息.