This is the codebase of the API-misuse detector MUDetect. Please feel free to contact Sven Amann, if you have any questions.
- Sven Amann (Project Lead)
- Hoan Anh Nguyen
- Amann, S.; Nguyen, H.; Nadi, S.; Nguyen, T.; and Mezini, M. Investigating Next-Steps in Static API-Misuse Detection. In Proceedings of the 16th International Conference on Mining Software Repositories (MSR '19) , 2019.
We run the detector in our experiments through the benchmarking pipeline MUBench. The respective detector runners are MuDetectRunner and MuDetectCrossProjectRunner.
To run the detector directly, you may invoke it with one of the following commands, depending on whether you want to provide correct usage examples for pattern mining or whether the detector should mine patterns from the target project itself:
$> java de.tu_darmstadt.stg.mubench.[X]Runner detector_mode "1" \
pattern_src_path "/path/to/correct/usages/src" pattern_classpath "" \
target_src_path "/path/to/target/project/src" target_classpath "" \
dep_classpath "target:dependency:classpath" \
target "findings-output.yml" run_info "run-info-output.yml"
$> java de.tu_darmstadt.stg.mubench.[X]Runner detector_mode "0" \
target_src_path "/path/to/target/project/src" target_classpath "" \
dep_classpath "target:dependency:classpath" \
target "findings-output.yml" run_info "run-info-output.yml"
For examples on how to instantiate and invoke MUDetect from the code, please refer to our configuration for the intra-project setting (MUDetect) and our configuration for the cross-project setting (MUDetectXP).
To use our code in your project, you can import all parts of MUDetect as Maven dependencies via our own repository.
Simply configure the following repository either in your project's pom.xml
or in your local settings.xml
:
<repository>
<id>stg-mubench</id>
<name>MuBench</name>
<url>http://www.st.informatik.tu-darmstadt.de/artifacts/mubench/mvn/</url>
</repository>
Subsequently, you can depend on our code in your project. To use the entire detector (AUG model, mining algorithm, and detection algorithm), declare the following dependency:
<dependency>
<groupId>de.tu-darmstadt.stg.mudetect</groupId>
<artifactId>mubench</artifactId>
<version>0.0.3-SNAPSHOT</version>
</dependency>
To use only our model of API-usage graphs (AUGs), add the following dependency:
<dependency>
<groupId>de.tu-darmstadt.stg.mudetect</groupId>
<artifactId>augs</artifactId>
<version>0.0.3-SNAPSHOT</version>
</dependency>
All software provided in this repository is subject to the Mozilla Public License Version 2.0.
The project artwork is subject to the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0).