This study, first, identifies such programming practices that we refer to as reproducibility smells by conducting a comprehensive multi-vocal review and propose a first-ever validated catalog of reproducibility smells for IaC scripts. We implement a tool viz. REDUSE to identify reproducibility smells in Ansible scripts. Furthermore, we carry out an empirical study to reveal the proliferation of reproducibility smells in open-source projects and explore correlation and co-occurrence relationships among them.
We elaborate on the contents of the individual folder of this repository below.
This folder contains the following files.
grey-literature-source.xlsx
: This Excel file contains all the information about the grey literature resources. It has following sheets.Links
: contains information about the type of the documents, content of the document, what IaC language or concept it is related to and the corresponding link to the document.Reviewer-1-QA
: contains the marking assessment of each document from the reviewer-1 for the grey literature.Reviewer-2-QA
: contains the marking assessment of each document from the reviewer-2 for the grey literature.Grey Literature Sources
: contains the source numbers, best practice/ bad practice that each of the literature are mentioning and a summary.Search Queries
: shows that how many documents we gain for each search query, how many filtered with the exclusion/inclusion criteria and number of final documents.smell-reference
: shows a list of references that each of the smells are extracted from the them.Quality Assessment final
: contains the final and merged marking assessment of each document from the both reviewers for the grey literature.
smell-examples.txt
: contains the example code for each of the reproducibility smell discussed in the paper.
The tool is designed to detect reproducibility smells in Ansible scripts.
You can provide your ansible script in .yml
format and get output of the tool as a csv
file containing task name, task number, smell name, reason of having the smell on the task.
- This tool requires Python 3.8+
- Install the packages from
reduse\src\requirements.txt
Run the detector.py
file in the reduse\src
folder with the path to your desired Ansible yaml file.
python detector.py '/path/to/file/folder
Or, add the path to the desired ansible files or repositories to the script and then execute
/bin/bash run_detector.sh
This folder contains all the scripts i.e., the subject systems and detection smells by the tool as well as by the evaluators.
scripts
: Selected scripts for evaluationresults
: Detected smells by human evaluators and the tool. Each subfolder contains two kinds of files. Files ending withmanual
are produced by human evaluators whereas files ending withtool
are generated by the tool.
This folder contains all the scripts that are used to calculate the metrics required for the empirical study, such as the smell frequency, correlation, and confusion matrix.
extracted-repos
: this folder contains the list of the open-source repositories from nine categories hosted by the Ansible Galaxy platform.extraction-scripts
: scripts to check the criteria and clone the repositories from the Ansbile Galaxy platform.repos
: contains Ansible scripts for all the selected repositories used for the empirical studies.
Ansible-galaxy-issues.pdf
: contains links to the repositories, issues, and the justification for the issue related to reproducibility smell from the qualitative analysis section.Qualitative-analysis.xlsx
: contains information such as repository name, issue number, root cause, smell description, and link of the issue for all the issues considered for this analysis.