一句话:提出基于语义差分的静态检测方法,用于发现 Java 库升级中签名相同但语义不兼容的语义破坏问题。
Java 第三方库通过 Maven 采用语义化版本(SemVer)来规范版本含义,但即使编译与链接成功,升级后仍可能因语义破坏(SemB)问题出现异常执行或崩溃:用户直接使用的 API 在升级前后签名相同而语义不一致。此类问题难以静态检测,因为 API 内部方法的语义变化不易捕获;动态测试虽能确认部分问题,却受覆盖率不足制约。论文据此提出基于语义差分的静态检测方法,通过比较版本间语义差异来识别违背 SemVer 的发布,从而向开发者和用户发出预警。摘要未给出具体实验结果。
To enhance the compatibility in the version control of Java Third-party Libraries (TPLs), Maven adopts Semantic Versioning (SemVer) to standardize the underlying meaning of versions, but users could still confront abnormal execution and crash after upgrades even if compilation and linkage succeed. It is caused by semantic breaking (SemB) issues, such that APIs directly used by users have identical signatures but inconsistent semantics across upgrades. To strengthen compliance with SemVer rules, developers and users should be alerted of such issues. Unfortunately, it is challenging to detect them statically, because semantic changes in the internal methods of APIs are difficult to capture. Dynamic testing can confirmingly uncover some, but it is limited by inadequate coverage.
@inproceedings{paperbot7161,
title = {Has My Release Disobeyed Semantic Versioning? Static Detection Based on Semantic Differencing},
author = {Lyuye Zhang and Chengwei Liu and Zhengzi Xu and Sen Chen and Lingling Fan and Bihuan Chen and Yang Liu},
booktitle = {ASE},
year = {2022},
doi = {10.1145/3551349.3556956}
}