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
japicmpfork from here and theaetherealproject from here. - Import the aforementioned projects into your workspace.
- Compile and install
japicmpandaetherealwith Maven. - Compile and install
maracaswith Maven. - Import
maracasto your workspace.
Once your environment is ready and maracas has been imported into your workspace:
- Run the Rascal REPL. That is, right-click on
maracasand select Rascal Console. - In the REPL (
>denotes the REPL prompt), import theorg::maracas::delta::vis::Visualizermodule:
> 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


