Litcius/Paper detail

Has My Release Disobeyed Semantic Versioning? Static Detection Based on Semantic Differencing

Lyuye Zhang, Chengwei Liu, Zhengzi Xu, Sen Chen, Lingling Fan, Bihuan Chen, Yang Liu

202230 citationsDOIOpen Access PDF

Abstract

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.

Topics & Concepts

Computer scienceJavaBackward compatibilityProgramming languageSemantics (computer science)Software versioningInformation retrievalWorld Wide WebSoftware engineeringOperating systemSoftwareSoftware Engineering ResearchSoftware Testing and Debugging TechniquesSoftware System Performance and Reliability