This is the Cloud-Native version of our open source implementation of the SZZ Algorithm [1] to calculate the BugInducingCommits of any project using Git as versioning system and Jira as issue tracker. The standalone version is available on the OpenSZZ repository
A dataset including the analysis of 33 projects, has been published in 2019 [2].
Valentina Lenarduzzi, Fabio Palomba, Davide Taibi, and Damian Andrew Tamburri. 2020. OpenSZZ: A Free, Open-Source, Web-Accessible Implementation of the SZZ Algorithm. In Proceedings of the 28th International Conference on Program Comprehension (ICPC '20). DOI:https://doi.org/10.1145/3387904.3389295
Docker
Docker Compose
Clone the Repository
git clone https://github.com/clowee/OpenSZZ.git
Configure .env file.
The application is scalable and the core part can be replicated in n different containers with random ports.
Here it is possible to configure the range of ports.
PORTRANGE_FROM=1000 PORTRANGE_TO=2000
DISPATCHER_PORT=8888 => Port where the Dispatcher Container is supposed to run
APP_PORT=8081 => Port where the Application Container (Frontend) is supposed to run
SERVER=http://localhost => URL where the dispatcher server it is reachable.
Configure the email address from which you want to send the confirmation email (tested with gmail accounts) EMAIL= PASS=
Just run the following command
sudo docker-compose build
sudo docker-compose up -d --scale web=#replicates
This will build both of the docker images and will launch them in the background with the database container.
The scale option indicates how many times the container web should be replicated.
sudo docker-compose up -d --scale web=5 will create in total 5 containers web.
You can show the services down with
docker-compose down
Checking status
docker-compose ps
Updating If the Webservice or Webapp projects are updated, you need to update the submodules and rebuild the source and the docker-images. Just rerun
sudo docker-compose up --build -d --scale web=#replicates
Access to the OpenSZZ page to http://localhost:8081 (replace localhost and port with the seerver_host and APP_port parameters used in the .env file)
Enter the following data in the graphical user interface:
- Git repository URL of the project to be analysed
- Jira repository URL
As example, for Apache BCEL import shoud have the following Format:
Git URL = https://github.com/apache/commons-bcel.git
Jira URL = https://issues.apache.org/jira/projects/BCEL/
The output is a csv file containing for each identified BugInducingCommit the corresponding BugFixingCommit, the issueType and the involved changed file.
[1] Jacek Śliwerski, Thomas Zimmermann, and Andreas Zeller. 2005. When do changes induce fixes?. In Proceedings of the 2005 international workshop on Mining software repositories (MSR '05). ACM, New York, NY, USA, 1-5. DOI=http://dx.doi.org/10.1145/1082983.1083147
[2] V. Lenarduzzi, N. Saarimäki, and D. Taibi,“The Technical Debt Dataset”, in The Fifteenth International Conference on Predictive Models and Data Analytics in Software Engineering (PROMISE’19), Brazil, 2019.