| _version_ | 1866902275725721600 |
|---|---|
| author | Anonymous |
| author_facet | Anonymous |
| contents | <p>This reproduction package contains all data that led to the results in the paper "<em>YYSZZ: Yet Another Yet Another SZZ Algorithm with AST Change Clustering and Backporting</em>" submitted to an international conference. The conference requires the data or reproduction package are publicly and anonymously available via a DOI.</p> <h2>Datasets</h2> <p>A dataset is a list of scenarios that contains repository name, bug-fixing commit, and bug-inducing commit. Datasets are summarized in the following table.</p> <table style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 15.510719%;"><col style="width: 16.141236%;"><col style="width: 25.094578%;"><col style="width: 15.636822%;"><col style="width: 27.490542%;"></colgroup> <tbody> <tr> <td>Dataset name</td> <td>Dataset source</td> <td>Dataset file (<code>datasets/*</code>)</td> <td>Repository root</td> <td>Number of bug-fixing commits</td> </tr> <tr> <td>DS_GITHUB-j*</td> <td><a title="https://doi.org/10.6084/m9.figshare.19586500" href="https://doi.org/10.6084/m9.figshare.19586500" target="_blank" rel="noopener">Rosa et al.</a></td> <td><code>DS_GITHUB-j71.json</code></td> <td><code>github-j71</code></td> <td>71</td> </tr> <tr> <td>DS_APACHE</td> <td><a title="https://github.com/MingWEN-CS/InduceBenchmark" href="https://github.com/MingWEN-CS/InduceBenchmark" target="_blank" rel="noopener">Wen et al.</a></td> <td><code>DS_APACHE.json</code></td> <td><code>apache</code></td> <td>241</td> </tr> <tr> <td>DS_RECENT</td> <td>original</td> <td><code>DS_RECENT.json</code></td> <td><code>recent</code></td> <td>22</td> </tr> </tbody> </table> <h2>Preparation</h2> <p>Download the following.</p> <ul> <li><code>yyszz-amd64.tar.xz</code> (for x64) or <code>yyszz-arm64.tar.xz</code> (for arm64)</li> <li><code>github-j71.tar.xz</code></li> <li><code>apache.tar.xz</code></li> <li><code>recent.tar.xz</code></li> </ul> <p>Then import a image depending on your host's architecture.</p> <p><code>docker import yyszz-amd64.txz --change "WORKDIR /root" --change "CMD [\"/usr/bin/bash\"]" yyszz</code></p> <p>Use <code>yyszz-arm64.txz</code> instead if the architecture is arm64.</p> <p>Finally, start a container and extract the repositories.</p> <p><code>docker run -ti -v ${PWD}:/mnt/work --name yyszz yyszz</code><br><code>tar Jxf /mnt/work/github-j71.tar.xz</code><br><code>tar Jxf /mnt/work/apache.tar.xz</code><br><code>tar Jxf /mnt/work/recent.tar.xz</code></p> <p>You can instead clone the repositories directly from GitHub.</p> <p><code>scripts/clone_repos.py datasets/DS_{GITHUB-j71|APACHE|RECENT}.json {github-j71|apache|recent}</code></p> <h2>Reproduction</h2> <p>Since the reproduction is time-consuming, we recommend trying out the experiments only on randomly sampled N scenarios with an option <code>--nsamples N</code>. The following line initiates the full reproduction run where <code>N_PROCS</code> indicates the number of available processes.</p> <p><code>scripts/test_yyszz.py -u -r -p N_PROCS [--nsamples N] DATASET_JSON REPO_ROOT</code></p> <p>In order to disable change-clustering (untanging), remove <code>-u</code> and <code>-r</code> options from the line.<br>Note that dropping <code>-u</code> and <code>-r</code> also disables multi-processing, since a process is assigned for each sub-SZZ on the variant derived from a change-cluster.</p> <p>If you disable additional conflict rules, add <code>--orig-d3j</code> option.</p> <p>The test script dumps intermediate results at <code>LOG</code> directory. To derive the final results from the intermediate results, input the following line.</p> <p><code>scripts/postprocess_yyszz.py -i MODE_ID LOG/intermediate.*.json</code></p> <p>The descriptions of <code>MODE_ID</code> is shown in the following table.</p> <table style="border-collapse: collapse; width: 56.368222%;"><colgroup><col style="width: 20.204604%;"><col style="width: 79.539642%;"></colgroup> <tbody> <tr> <td><code>MODE_ID</code></td> <td>Description</td> </tr> <tr> <td>0</td> <td>YYSZZ-raw (without heuristics)</td> </tr> <tr> <td>1</td> <td>YYSZZ-G (with the gap-aware heuristic)</td> </tr> <tr> <td>2</td> <td>experimental</td> </tr> <tr> <td>3</td> <td>YYSZZ-B (with the boundary heuristic)</td> </tr> </tbody> </table> <p>Intermediate data file names are shown below.</p> <table style="border-collapse: collapse; width: 53.972257%;"><colgroup><col style="width: 27.586207%;"><col style="width: 72.183908%;"></colgroup> <tbody> <tr> <td>Dataset name</td> <td>Intermediate data file name</td> </tr> <tr> <td>DS_GITHUB-j*</td> <td><code>intermediate.DS_GITHUB-j71.json</code></td> </tr> <tr> <td>DS_APACHE</td> <td><code>intermediate.DS_APACHE.json</code></td> </tr> <tr> <td>DS_RECENT</td> <td><code>intermediate.DS_RECENT.json</code></td> </tr> </tbody> </table> <h2>Results of YYSZZ</h2> <p>You can find ready-made intermediate results at <code>RESULTS/YYSZZ</code>.</p> <h2>Results of *-SZZ</h2> <p>We used <a title="pyszz_v2" href="https://github.com/grosa1/pyszz_v2" target="_blank" rel="noopener">pyszz_v2</a> to test {B|AG|MA|R|L|RA}-SZZ on the datasets. The results are placed at the following paths.</p> <p><code>RESULTS/SZZ/DS_{GITHUB-j71|APACHE|RECENT}/out/bic_{b|ag|ma|r|l|ra}szz.json</code></p> <p>The following configurations are used.</p> <table style="border-collapse: collapse; width: 47.162673%;"><colgroup><col style="width: 28.901734%;"><col style="width: 70.809249%;"></colgroup> <tbody> <tr> <td>SZZ variant</td> <td>Configuration (<code>pyszz_v2/conf/*</code>)</td> </tr> <tr> <td>B-SZZ</td> <td><code>bszz.yml</code></td> </tr> <tr> <td>AG-SZZ</td> <td><code>agszz.yml</code></td> </tr> <tr> <td>MA-SZZ</td> <td><code>maszz.yml</code></td> </tr> <tr> <td>R-SZZ</td> <td><code>rszz.yml</code></td> </tr> <tr> <td>L-SZZ</td> <td><code>lszz.yml</code></td> </tr> <tr> <td>RA-SZZ</td> <td><code>raszz.yml</code></td> </tr> </tbody> </table> <p> </p> <p>To obtain the statistics, use <code>postprocess_szz.py</code>. </p> <p><code>scripts/postprocess_szz.py RESULT_JSON</code></p> |
| format | Recurso digital |
| id | zenodo_https___doi_org_10_5281_zenodo_19342923 |
| institution | Zenodo |
| language | |
| publishDate | 2026 |
| publisher | Zenodo |
| record_format | zenodo |
| spellingShingle | YYSZZ: Yet Another Yet Another SZZ Algorithm with AST Change Clustering and Backporting (Reproduction Package) Anonymous <p>This reproduction package contains all data that led to the results in the paper "<em>YYSZZ: Yet Another Yet Another SZZ Algorithm with AST Change Clustering and Backporting</em>" submitted to an international conference. The conference requires the data or reproduction package are publicly and anonymously available via a DOI.</p> <h2>Datasets</h2> <p>A dataset is a list of scenarios that contains repository name, bug-fixing commit, and bug-inducing commit. Datasets are summarized in the following table.</p> <table style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 15.510719%;"><col style="width: 16.141236%;"><col style="width: 25.094578%;"><col style="width: 15.636822%;"><col style="width: 27.490542%;"></colgroup> <tbody> <tr> <td>Dataset name</td> <td>Dataset source</td> <td>Dataset file (<code>datasets/*</code>)</td> <td>Repository root</td> <td>Number of bug-fixing commits</td> </tr> <tr> <td>DS_GITHUB-j*</td> <td><a title="https://doi.org/10.6084/m9.figshare.19586500" href="https://doi.org/10.6084/m9.figshare.19586500" target="_blank" rel="noopener">Rosa et al.</a></td> <td><code>DS_GITHUB-j71.json</code></td> <td><code>github-j71</code></td> <td>71</td> </tr> <tr> <td>DS_APACHE</td> <td><a title="https://github.com/MingWEN-CS/InduceBenchmark" href="https://github.com/MingWEN-CS/InduceBenchmark" target="_blank" rel="noopener">Wen et al.</a></td> <td><code>DS_APACHE.json</code></td> <td><code>apache</code></td> <td>241</td> </tr> <tr> <td>DS_RECENT</td> <td>original</td> <td><code>DS_RECENT.json</code></td> <td><code>recent</code></td> <td>22</td> </tr> </tbody> </table> <h2>Preparation</h2> <p>Download the following.</p> <ul> <li><code>yyszz-amd64.tar.xz</code> (for x64) or <code>yyszz-arm64.tar.xz</code> (for arm64)</li> <li><code>github-j71.tar.xz</code></li> <li><code>apache.tar.xz</code></li> <li><code>recent.tar.xz</code></li> </ul> <p>Then import a image depending on your host's architecture.</p> <p><code>docker import yyszz-amd64.txz --change "WORKDIR /root" --change "CMD [\"/usr/bin/bash\"]" yyszz</code></p> <p>Use <code>yyszz-arm64.txz</code> instead if the architecture is arm64.</p> <p>Finally, start a container and extract the repositories.</p> <p><code>docker run -ti -v ${PWD}:/mnt/work --name yyszz yyszz</code><br><code>tar Jxf /mnt/work/github-j71.tar.xz</code><br><code>tar Jxf /mnt/work/apache.tar.xz</code><br><code>tar Jxf /mnt/work/recent.tar.xz</code></p> <p>You can instead clone the repositories directly from GitHub.</p> <p><code>scripts/clone_repos.py datasets/DS_{GITHUB-j71|APACHE|RECENT}.json {github-j71|apache|recent}</code></p> <h2>Reproduction</h2> <p>Since the reproduction is time-consuming, we recommend trying out the experiments only on randomly sampled N scenarios with an option <code>--nsamples N</code>. The following line initiates the full reproduction run where <code>N_PROCS</code> indicates the number of available processes.</p> <p><code>scripts/test_yyszz.py -u -r -p N_PROCS [--nsamples N] DATASET_JSON REPO_ROOT</code></p> <p>In order to disable change-clustering (untanging), remove <code>-u</code> and <code>-r</code> options from the line.<br>Note that dropping <code>-u</code> and <code>-r</code> also disables multi-processing, since a process is assigned for each sub-SZZ on the variant derived from a change-cluster.</p> <p>If you disable additional conflict rules, add <code>--orig-d3j</code> option.</p> <p>The test script dumps intermediate results at <code>LOG</code> directory. To derive the final results from the intermediate results, input the following line.</p> <p><code>scripts/postprocess_yyszz.py -i MODE_ID LOG/intermediate.*.json</code></p> <p>The descriptions of <code>MODE_ID</code> is shown in the following table.</p> <table style="border-collapse: collapse; width: 56.368222%;"><colgroup><col style="width: 20.204604%;"><col style="width: 79.539642%;"></colgroup> <tbody> <tr> <td><code>MODE_ID</code></td> <td>Description</td> </tr> <tr> <td>0</td> <td>YYSZZ-raw (without heuristics)</td> </tr> <tr> <td>1</td> <td>YYSZZ-G (with the gap-aware heuristic)</td> </tr> <tr> <td>2</td> <td>experimental</td> </tr> <tr> <td>3</td> <td>YYSZZ-B (with the boundary heuristic)</td> </tr> </tbody> </table> <p>Intermediate data file names are shown below.</p> <table style="border-collapse: collapse; width: 53.972257%;"><colgroup><col style="width: 27.586207%;"><col style="width: 72.183908%;"></colgroup> <tbody> <tr> <td>Dataset name</td> <td>Intermediate data file name</td> </tr> <tr> <td>DS_GITHUB-j*</td> <td><code>intermediate.DS_GITHUB-j71.json</code></td> </tr> <tr> <td>DS_APACHE</td> <td><code>intermediate.DS_APACHE.json</code></td> </tr> <tr> <td>DS_RECENT</td> <td><code>intermediate.DS_RECENT.json</code></td> </tr> </tbody> </table> <h2>Results of YYSZZ</h2> <p>You can find ready-made intermediate results at <code>RESULTS/YYSZZ</code>.</p> <h2>Results of *-SZZ</h2> <p>We used <a title="pyszz_v2" href="https://github.com/grosa1/pyszz_v2" target="_blank" rel="noopener">pyszz_v2</a> to test {B|AG|MA|R|L|RA}-SZZ on the datasets. The results are placed at the following paths.</p> <p><code>RESULTS/SZZ/DS_{GITHUB-j71|APACHE|RECENT}/out/bic_{b|ag|ma|r|l|ra}szz.json</code></p> <p>The following configurations are used.</p> <table style="border-collapse: collapse; width: 47.162673%;"><colgroup><col style="width: 28.901734%;"><col style="width: 70.809249%;"></colgroup> <tbody> <tr> <td>SZZ variant</td> <td>Configuration (<code>pyszz_v2/conf/*</code>)</td> </tr> <tr> <td>B-SZZ</td> <td><code>bszz.yml</code></td> </tr> <tr> <td>AG-SZZ</td> <td><code>agszz.yml</code></td> </tr> <tr> <td>MA-SZZ</td> <td><code>maszz.yml</code></td> </tr> <tr> <td>R-SZZ</td> <td><code>rszz.yml</code></td> </tr> <tr> <td>L-SZZ</td> <td><code>lszz.yml</code></td> </tr> <tr> <td>RA-SZZ</td> <td><code>raszz.yml</code></td> </tr> </tbody> </table> <p> </p> <p>To obtain the statistics, use <code>postprocess_szz.py</code>. </p> <p><code>scripts/postprocess_szz.py RESULT_JSON</code></p> |
| title | YYSZZ: Yet Another Yet Another SZZ Algorithm with AST Change Clustering and Backporting (Reproduction Package) |
| url | https://doi.org/10.5281/zenodo.19342923 |