NOTE: Maracas developement has moved to alien-tools/maracas and this repository is no longer maintained.
Maracas is a source code and bytecode analysis framework—written in Rascal and Java—that is designed to support the co-evolution of Java APIs and client code. Maracas relies on japicmp
to compute the list of breaking changes between two API versions. Afterwards, it is able to identify declarations within a client project that are impacted by the aforementioned breaking changes (a.k.a. detections).
Maracas depends on:
- Rascal to parse and analyse source code and byte code (version 0.19.0 and up, get it from [this Eclipse update site](https:// https://update.rascal-mpl.org/unstable/);
- japicmp (version 0.14.5-maracas) to compute breaking changes between two versions of a software project, and;
- aethereal (version 0.0.4) for finding and downloading artefacts from Maven Central Repository.
- Install Eclipse RCP and RAP.
- Install the unstable version of Rascal plugin from its update site
https://update.rascal-mpl.org/unstable
. Click here for more information. - Clone the
japicmp
fork from here and theaethereal
project from here. - Import the aforementioned projects into your workspace.
- Compile and install
japicmp
andaethereal
with Maven. - Compile and install
maracas
with Maven. - Import
maracas
to your workspace.
Once your environment is ready and maracas
has been imported into your workspace:
- Run the Rascal REPL. That is, right-click on
maracas
and select Rascal Console. - In the REPL (
>
denotes the REPL prompt), import theorg::maracas::delta::vis::Visualizer
module:
> import org::maracas::delta::vis::Visualizer;
- To only compute the list of breaking changes between two versions of an API and generate an HTML report, use the
mavenReport(loc report, str group, str artifact, str v1, str v2, str cgroup = "", str cartifact = "", str cv = "")
function without optional parameters:
> mavenReport(|file:///Users/path/to/output/folder|, "javax.servlet", "javax.servlet-api", "3.0.1", "3.1.0")
- To compute the list of breaking changes between two versions of an API, the list of detections on a client project, and generate an HTML report, use the
mavenReport(loc report, str group, str artifact, str v1, str v2, str cgroup = "", str cartifact = "", str cv = "")
function with optional parameters:
> mavenReport(|file:///Users/path/to/output/folder|, "javax.servlet", "javax.servlet-api", "3.0.1", "3.1.0", cgroup="org.springframework", cartifact="spring-test", cv="4.2.5.RELEASE")
In this section, we show some screenshots taken from the report generated for the javax.servlet-api
-spring-test
example introduced in the previous section.
If you would like to learn more about maracas
or you are a current user and you need some help, do not hesitate to send us an email at l.m.ochoa.venegas <at> tue.nl or thomas.degueule <at> labri.fr.
This repository—and all its content—is licensed under the MIT License.
© 2018-2021 Maracas