Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/stg-tud/MUBench
https://github.com/stg-tud/MUBench
Last synced: 3 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/stg-tud/MUBench
- Owner: stg-tud
- License: other
- Created: 2016-02-12T15:26:49.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2023-12-08T17:41:03.000Z (11 months ago)
- Last Synced: 2024-05-08T07:31:07.508Z (6 months ago)
- Language: Python
- Size: 23.4 MB
- Stars: 50
- Watchers: 10
- Forks: 30
- Open Issues: 52
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-software-engineering-research - MUBench - misuse detectors, based on the MUBench benchmarking dataset. If you encounter any problems using MUBench, please report them to us. If you have any questions, please contact Sven Amann. (Data Sets and Benchmarks / API Misuse)
README
# MUBench
MUBench (pronounced "Moo Bench") is an automated benchmark for API-misuse detectors, based on [the MUBench benchmarking dataset](data).
If you encounter any problems using MUBench, please [report them to us](https://github.com/stg-tud/MUBench/issues/new).
If you have any questions, please [contact Sven Amann](http://www.stg.tu-darmstadt.de/staff/sven_amann).CI Status: [![CI Status](https://api.shippable.com/projects/570d22d52a8192902e1bfa79/badge?branch=master)](https://app.shippable.com/projects/570d22d52a8192902e1bfa79)
## Contributors
The people (in alphabetical order by their last name) who actively contributed to the concept, the dataset, or the codebase of MUBench since the project's inception in October 2015:
* [Sven Amann](http://www.sven-amann.de) (Project Lead, Since 10/2015)
* [Mattis Kämmerer](https://github.com/M8is) (Developer, 03/2016 - 03/2018)
* [Sarah Nadi](http://www.sarahnadi.org/) (Dataset Reviewer, 10/2015 - 05/2016)
* [Hoan Anh Nguyen](https://sites.google.com/site/nguyenanhhoan/) (Dataset Reviewer, 10/2015 - 05/2016)
* [Tien N. Nguyen](http://home.eng.iastate.edu/~tien/) (Dataset Reviewer, 10/2015 - 05/2016)
* [Jonas Schlitzer](https://github.com/joschli) (Developer, 10/2016 - 07/2018)The MUBench project was developed at the [Software Technology Group of Technische Universität Darmstadt](https://www.stg.tu-darmstadt.de) from October 2015 to September 2018.
From October 2018, it is being maintained by [Sven Amann](http://www.sven-amann.de) as an independent Open Source project.## Publications
* ['*Exposing Library API Misuses via Mutation Analysis*'](http://home.cse.ust.hk/~mwenaa/paper/ICSE2019A.pdf) ([ICSE '19](https://2019.icse-conferences.org/details/icse-2019-Technical-Papers/56/Exposing-Library-API-Misuses-via-Mutation-Analysis))
* ['*Investigating Next Steps in Static API-Misuse Detection*'](http://sven-amann.de/publications/2019-03-Investigating-Next-Steps-In-Static-API-Misuse-Detection/) (MSR '19)
* ['*A Systematic Evaluation of Static API-Misuse Detectors*'](http://sven-amann.de/publications/2018-03-A-Systematic-Evalution-of-Static-API-Misuse-Detectors/) (TSE '18)
* ['*MUBench: A Benchmark for API-Misuse Detectors*'](http://sven-amann.de/publications/2016-05-MSR-MUBench-dataset.html) ([MSR '16 Data Showcase](http://2016.msrconf.org/#/data))We provide [instructions to reproduce the MUBench experiments](reproduction/) presented in the above publications.
## Getting Started
With MUBench, you may run [different API-misuse detectors](detectors/#mubench---detectors) in [a number of experiments](mubench.pipeline/#experiments) to determine their precision and recall.
To this end, MUBench provides [a curated dataset of real-world projects and known misuses](data/#mubench---dataset).
In each experiment run, the respective detector emits findings which you need to review manually.
To this end, MUBench publishes (a subset of) the findings to [a review website](mubench.reviewsite/#mubench---review-website).
After you completed your reviews, the site automatically computes experiment statistics.### Setup
1. MUBench comes with a [Docker](https://www.docker.com/) image to allow platform-independent execution of experiments.
Therefore, you first need to [install Docker](https://www.docker.com/get-started).
2. Afterwards, you can start the MUBench Interactive Shell using
$> docker run -it -v mubench-checkouts:/mubench/checkouts -v mubench-findings:/mubench/findings --rm -p 8080:80 svamann/mubench:stable
This docker command starts in interactive shell (`-it`) based on our Docker image `svamann/mubench` in the latest `stable` version.
It persists experiment data on [Docker volumes](https://docs.docker.com/storage/volumes/) named `mubench-checkouts` and `mubench-findings` (`-v`), while disposing of all other state on exit (`--rm`).
And it forwards port `80` from within the shell to port `8080` of your host system, to allow running a standalone review site.
3. (Optional) You may want to create [a script with the above command](mubench.bin/mubench), which allows you to conveniently open a MUBench Interactive Shell by typing `./mubench` or running individual commands by typing `./mubench `.
4. (Optional) You may want to [setup a review site](mubench.reviewsite/#setup) to collaboratively review detector findings and publish your results.*Hint*: We recommend to use the latest stable version `svamann/mubench:stable` of our Docker image.
However, you may also chose to use the latest development version `svamann/mubench:latest`, which is continuously deployed from the `master` branch of this repository.### Use
For all usage examples in this documentation, we assume that you [opened a MUBench Interactive Shell](#setup).
Alternatively, you may execute individual commands by passing them as arguments to [the docker command for running MUBench](#setup).1. [Run experiments](mubench.pipeline/#run-experiments).
2. [Publish misuse metadata to a review site](mubench.reviewsite/#publish-misuse-metadata).
2. [Publish detector findings to a review site](mubench.reviewsite/#publish-detector-findings).
3. [Debug a detector (runner)](mubench.cli/#debugging-a-detector).## Contribute
We want MUBench to grow, so please be welcome to
* [Add your own projects or misuses to the benchmarking dataset](data/#contribute).
* [Add your own detector to the benchmark](mubench.cli/#mubench---detector-interface).
* [Contribute to the benchmarking platform](CONTRIBUTE.md)## License
All software provided in this repository is subject to the [CRAPL license](CRAPL-LICENSE.txt).
The detectors included in MuBench are subject to the licensing of their respective creators. See the information in [the detectors' folders](detectors).
The projects referenced in the MuBench dataset are subject to their respective licenses.
The project artwork is subject to the [Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)](https://creativecommons.org/licenses/by-sa/4.0/).