While we invested a lot into the MUBench platform, to increase its usability and support different experiment scenarios, there is always one more thing to do. Therefore, we always welcome contributions to the platform itself, be it in code or documentation. We recommend the following procedure
- Choose an issue or create a new issue to discuss the idea you want to work on.
- Fork the project.
- Make you changes and add respective tests.
- Create a pull request.
The MUBench platform consists of several components. The subsequent documentation presents the purpose and covers specifics regarding the development of each of these components, as well as the project's Continuous Integration/Deployment.
Is a dataset of known API misuses in various real-world software projects.
The dataset resides in the /data directory. We encourage anyone to contribute to the dataset.
Is a Python application that manages the benchmarking dataset, checkout of subject project code, compilation of subject projects, execution of detectors, and capturing of detector output.
Its source code resides in the /mubench.pipeline directory.
See Docker Image.
Is a Java library with some utilities used by the MUBench Pipeline.
Its source code resides in the /mubench.utils directory.
To release a new version of the Java utils, follow these steps:
- Set the version in the
pom.xml
file to the next release version, e.g.,0.0.5
. - Run
mvn deploy
.A - Set the version in the
pom.xml
file to the next development version, e.g.,0.0.6-SNAPSHOT
. - Obtain the
md5
hash of thetarget/mubench.utils-0.0.5-jar-with-dependencies.jar
file. - Update the constants
__UTILS_VERSION
and__UTILS_JAR_MD5
at the top of/mubench.pipeline/utils/java_utils.py
accordingly. - Commit and publish the change.
Is a Java library with the framework and some utilities for MUBench Runners.
Its source code resides in the /mubench.cli directory and its API documentation on the STG artifact page.
To release a new version of the CLI, follow these steps:
- Set the version in the
pom.xml
file to the next release version, e.g.,0.0.14
. - Run
mvn deploy
.A - Run
mvn site deploy
.A - Set the version in the
pom.xml
file to the next development version, e.g.,0.0.15-SNAPSHOT
. - If the new release changes the way that the MUBench Pipeline should communicate with MUBench Runners, create a respective subclass of
RunnerInterface
in/mubench.pipeline/data/runner_interface.py
. - Commit and publish the change.
Is a PHP application that manages the display of detector findings in MUBench experiments, manual reviews of these findings, as well as computation of statistics on the experiment results.
Its source code resides in the /mubench.reviewsite directory.
See Docker Image.
MUBench comes with a Docker image to enable cross-platform portability of the benchmark. We use this image also as a medium to deliver the MUBench Pipeline and the MUBench Review Site to users.
A development version of the docker image is continuously deployed to Dockerhub with every succeeding CI build of the master
branch of this repository.
To release a stable version of the docker image, run ./deploy_release
in the repository root.
This will publish the version currently checked out to Dockerhub, using the stable
tag.
The MUBench project uses Shippable for Continuous Integration of the platform components described above. This involves a custom Docker image to support building and testing all modules in one build, despite the multitude of different programming languages in use.
The CI configuration resides in shippable.yml.
After a successful build on the master
branch, a new version of the MUBench Docker image is built and deployed to Dockerhub, using the latest
tag.
ADeployment requires authentication credentials for stg-mubench
in your ~/.m2/settings.xml
to deploy the new library version to ftp://www.st.informatik.tu-darmstadt.de/mubench/mvn
.