DOI: 10.5281/zenodo.15276123
title: Replication Package for "A Defect Taxonomy for Infrastructure as Code Scripts: A Replication Study"

description: As Infrastructure as Code (IaC) becomes standard practice, ensuring the reliability of IaC scripts is essential. Defect taxonomies are valuable tools for this, offering a common language for issues and enabling systematic tracking. This dataset provides a full replication package for the study "A Defect Taxonomy for Infrastructure as Code Scripts: A Replication Study", including the PIPr dataset, source code, results, and step-by-step instructions in README.md file for reproducing all experiments. 

Dataset

The PIPr Dataset is divided into seven parts, namely: dataset-part1.7z, dataset-part2.7z, dataset-part3.7z, dataset-part4.7z, dataset-part5.7z and dataset-part6.7z and dataset-part7.7z.

Replication Package

Access the full Replication Package in GitHub: https://github.com/WendellTMO/go8-replication-tool.

The repository includes the ACID tool, the source code used to extend ACID (located in the 'replication' directory), scripts for executing the tool, and intermediate results used in the study (available in the 'paper-analysis-data' directory). The README.md file provides a step-by-step guide to utilizing ACID Tool and reproducing the findings presented in the paper. The directory structure of the repository is described below.ACIDOriginal study tool being replicated, available at: https://hub.docker.com/r/akondrahman/acid-puppet.



classifier.py: classifies commit messages into defect categories using NLP and rule-based analysis.

constants.py: stores configuration strings, keywords, and constants for defect categorization.

diff_parser.py: analyzes Git diff content to detect code changes related to specific defect types.

excavator.py: extracts and processes IaC-related commits from Git repositories for defect analysis.

main-concurrent.py: concurrent version of the main script.

main.py: main script to mine and categorize defects in IaC commits.


criteriasThis directory is generated after the tool is executed.



criteria1: repositories that passed the 1st criterion: not being a fork.

criteria2: repositories that passed the 1st and 2nd criteria: at least 11% of files are IaC and/or PL-IaC scripts.

criteria3: repositories that passed the 1st, 2nd, and 3rd criteria: monthly commit frequency is ≥ 2.

criteria4: repositories that passed all four criteria: number of contributors is ≥ 10.


csvThis directory is generated after the tool is executed.



acid-output/REPLICATION_CATEG_OUTPUT_FINAL.csv: ACID output.

acid-output/REPLICATION_ONLY_CATEG_OUTPUT_FINAL.PKL: serialized ACID output.

criterias-output/criterias-frequency/criteria1_output.csv: repository ID and technology for those that passed the 1st criterion.

criterias-output/criterias-frequency/criteria2_output.csv: repository ID and technology for those that passed the 1st and 2nd criteria.

criterias-output/criterias-frequency/criteria3_output.csv: repository ID and technology for those that passed the 1st, 2nd, and 3rd criteria.

criterias-output/criterias-frequency/criteria4_output.csv: repository ID and technology for those that passed all four criteria.

criterias-output/criterias-frequency/dataset_output.csv: repository ID and technology for all analyzed repositories, regardless of criteria.

criterias-output/criterias_results.csv: individual data for each repository and its corresponding criteria.

criterias-output/csv1_files_with_neighbors.csv: paths of IaC files and their neighboring related files.

criterias-output/csv2_iac_commits_summary.csv: commit counts for IaC paths and the entire repository.

criterias-output/csv3_iac_criterias_output.csv: data on the oldest and most recent commits and their deltas.

criterias-output/csv4_iac_output_frequency.csv: summary of repository attributes.

clone_logs.csv: logs related to repository cloning (success or failure).


datasetContains all repositories selected for cloning.

paper-analysis-dataIntermediate results used in study, including 42 files and 10 subdirectories.



empirical: scripts, metrics and data related to defect categories.

oracle: comparison between the categorization performed by the oracle and by ACID.

PIPr-results: include all csvs related to ACID execution in PIPr.

plots: defect/year metric across datasets.

sanity-validation: sanity check for repositories, including metrics.


replication



1-related-files-generator.py: identifies IaC files and related neighboring files within repositories.

2-commits-count.py: counts the number of commits associated with identified IaC and related files.

3-time-period.py: determines the time period of commits related to IaC files in repositories.

4-analyze.py: aggregates and analyzes data from processed repositories to generate summary statistics.

criteria-frequency.py: classifies repositories based on detected IaC technology within specified directories.

criterias.py: applies predefined criteria to filter and select relevant IaC repositories.


Other relevant files:



README.md

apply-criterias.sh: shell script to execute the repository filtering process based on defined criteria.

clone-repos.sh: shell script to clone a list of Git repositories in parallel.

repos_list.txt: contains a list of repository URLs to be cloned.

requirements.txt: dependencies required to run the project.

run-acid.sh: shell script to execute the main defect analysis pipeline (ACID).