Semanticanary is a Java-based project designed to detect semantic changes in dependency updates. It was developed as part of the Master's thesis of Leonard Husmann "Detecting Semantic Changes in Dependency Updates" at the KTH Royal Institute of Technology available here.
- Java 17 or higher
- Maven 3.6.3 or higher
- Docker (for running the updated packages in a containerized environment)
- make sure you can clone the Docker images from the chains-group's image registry, e.g.:
docker pull ghcr.io/chains-project/breaking-updates:jsoup-1.7.1
- Clone this repository:
git clone https://github.com/chains-project/semanticanary
- Clone the
semantic-agent
repo and follow the instructions for building itgit clone https://github.com/chains-project/semantic-agent
- Build the project using Maven:
mvn clean install
- Run
Semanticanary.java
with the desired parameters. For example, to compare thejsoup
library versions 1.7.1 and 1.7.3, specify the following arguments:-a /path/to/semantic-agent/target/semantic-agent-1.0-SNAPSHOT.jar -pre ghcr.io/chains-project/breaking-updates:jsoup-1.7.1 -post ghcr.io/chains-project/breaking-updates:jsoup-1.7.3 -m org.jsoup.nodes.Element:prepend(java.lang.String) -o /your/output/path/.tmp/differences