Docker 20.10.8 (Client), 20.20.12 (Server)
Python 2.7
Java JDK1.8
← to run IRBL techniquesJava JDK11
← to run git-stein
- /Docker
- Generate Docker containers for each project
- /Docker/newscripts
- There are modified evaluation scripts and startup shell scripts
- /scripts
- Bench4BL's evaluation scripts
- /techniques
- IRBL techniques' jar file
- /techniques/method_jar
- Method level IRBL techniques' jar file
- /techniques/file_jar
- Fixed file level jar file provided in Bench4BL's IRBL techniques
- Clone this repository
- Make docker containers. The Docker directory has been divided into groups of experimental targets (46 projects in Bench4BL), so move to the directory of the group you want to experiment with.
Apache/CAMEL
Apache/HBASE_HIVE
Commons
JBoss
Wildfly
Spring
Spring_SPR
- Run build.sh. At this point, the container name and image name can be set freely.
$ chmod +x build.sh
$ ./build.sh -c {container-name} -i {image-name}
For example, when creating a container for Commons
$ cd /Docker/Commons
$ ./build.sh -c commons-container -i commons-image
- Enter the container you have built.
- In contaner, run
launcher.sh
.launcher.sh
is inBench4BL/scripts/
. In this scripts, Historinc, which is the repository transformation tool, is executed. And in this process, oracles at the method level are generated.
$ cd scripts/
$ chmod +x launcher.sh
$ ./launcher.sh
- At the end of launcher.sh, you are asked what version of Java you want to use, so select JDK1.8.
Run launcher_Tool.py
.
$ cd /Bench4BL/scripts
$ timeout -sKILL 40000 python launcher_Tool.py -w {output-directory-name} -g {group} -p {project}
options
-w
specifies the output directory name-g
is the group to be experimented with-p
is the project to be experimented with-t
selects the IRBL tool to experiment
If -g
, -p
are not specified IRBL techniques will be run for all projects.
If -t
is not specified, all IRBL techniques will be run.
Change name="test" in line 449 of XLSResultsAll.py
to the name of the output file
e.g.) Outputting results of ExpCommons
name = "ExpCommons".
Generate an xlsx file for analysis.
$ python XLSResultsAll.py
An xlsx file for analysis is generated in /expresults with a name like Result_ExpCommons.xlsx.
Run build.sh and build the container.
$ ./build.sh -c {container-name} -i {image-name}
What copy.sh
copies are all the files in the newscripts.
Copy the modified scripts you want to put into the container
- build.sh
- script to launch Docker containers.
- copy.sh
- Script to copy here what is needed to build the container and run the techniques.
- Called within build.sh.
- download.sh, launcher.sh, Subjects.py
- Scripts are executed in each container—scripts are different for each project.
If you use or mention this tool in a scientific publication, we would appreciate citations to the following paper:
Shizuka Tsumita, Shinpei Hayashi, and Sousuke Amasaki: "Large-scale evaluation of method-level bug localization with FinerBench4BL". In Proceedings of the 30th IEEE International Conference on Software Analysis, Evolution and Reengineering (SANER 2023), pages 815–824, mar 2023. DOI: https://doi.org/10.1109/SANER56733.2023.00094 / Preprint: https://arxiv.org/abs/2302.14293
@inproceedings{tsumita-saner2023,
author = {Shizuka Tsumita and Shinpei Hayashi and Sousuke Amasaki},
title = {Large-Scale Evaluation of Method-Level Bug Localization with {FinerBench4BL}},
booktitle = {Proceedings of the 30th IEEE International Conference on Software Analysis, Evolution and Reengineering},
pages = {815--824},
year = 2023,
month = {mar},
doi = {10.1109/SANER56733.2023.00094}
}