YYSZZ: Yet Another Yet Another SZZ Algorthm with AST Change Clustering and Backporting (Reproduction Package)

Fuente: Zenodo
Guardado en:
Detalles Bibliográficos
Autor principal: Anonymous
Formato: Recurso digital
Publicado: Zenodo 2026
Acceso en línea:
Etiquetas: Agregar Etiqueta
Sin Etiquetas, Sea el primero en etiquetar este registro!
_version_ 1866902274426535936
author Anonymous
author_facet Anonymous
contents <h1>YYSZZ Reproduction Package</h1> <h2>Description</h2> <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>Preparation</h2> <p>Download the following from <a title="here" href="https://doi.org/10.5281/zenodo.19235511" target="_blank" rel="noopener">here</a>.</p> <ul> <li><code>yyszz-amd64.tar.xz</code> (for x64) or <code>yyszz-arm64.tar.xz</code> (for arm64)</li> <li><code>cloned.tar.xz</code></li> <li><code>apache.tar.xz</code></li> <li><code>supplement.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>root@xxx:~# tar Jxf /mnt/work/cloned.tar.xz</code><br><code>root@xxx:~# tar Jxf /mnt/work/apache.tar.xz</code><br><code>root@xxx:~# tar Jxf /mnt/work/supplement.tar.xz</code></p> <p>If download fails, you can instead clone the repositories.</p> <p><code>root@xxx:~# scripts/clone_repos_gh.py</code> (for <code>cloned</code>)</p> <p><code>root@xxx:~# scripts/clone_repos_apache.py</code> (for <code>apache</code>)</p> <p><code>root@xxx:~# scripts/clone_repos_suppl.py</code> (for <code>supplement</code>)</p> <h2>Reproduction</h2> <p>In the following, <code>N_PROCS</code> indicates the number of available processes.</p> <p>Since the reproduction is time-consuming, we recommend processing randomly sampled N scenarios with an option <code>--nsamples N</code>.<br>The following line initiates the full reproduction run.</p> <p><code>root@xxx:~# scripts/yyszz_{github|apache|suppl}.py -u -r -p N_PROCS [--nsamples N]</code></p> <p>Datasets and their corresponding scripts are shown in the following table.<br>A dataset is a list of scenario that contains repository name, bug fix commit, and bug inducing commit.</p> <table style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 15.006305%;"><col style="width: 15.510719%;"><col style="width: 29.508197%;"><col style="width: 16.015132%;"><col style="width: 23.833544%;"></colgroup> <tbody> <tr> <td>Dataset name</td> <td>Dataset source</td> <td>Dataset file (<code>datasets/*</code>)</td> <td>Repository root</td> <td>YYSZZ script</td> </tr> <tr> <td>DS_GITHUB-j</td> <td><a title="Rosa et al." href="https://doi.org/10.6084/m9.figshare.19586500" target="_blank" rel="noopener">Rosa et al.</a></td> <td><code>language-filtered.json</code></td> <td><code>cloned</code></td> <td><code>yyszz_github.py</code></td> </tr> <tr> <td>DS_APACHE</td> <td><a title="Tang et al." href="https://doi.org/10.6084/m9.figshare.27418236" target="_blank" rel="noopener">Tang et al.</a></td> <td><code>DS_APACHE.json</code></td> <td><code>apache</code></td> <td><code>yyszz_apache.py</code></td> </tr> <tr> <td>DS_RECENT</td> <td>original</td> <td><code>ds_gh_supplement_22.json</code></td> <td><code>supplement</code></td> <td><code>yyszz_suppl.py</code></td> </tr> </tbody> </table> <p>In order to disable change-clustering (untanging), remove <code>-u -r</code> from the line.<br>Note that dropping <code>-u -r</code> also disables multi-process mode, since sub-SZZs run in parallel on variants derived from change-clusters.</p> <p>If you disable modified conflict rules, add <code>--orig-d3j</code> option.</p> <p>Each YYSZZ script produces intermediate results at <code>LOG</code> directory.<br>The following line derives the final results from the intermediate results.<br>Use <code>--sids-file gh-j.sids.txt</code> option only for DS_GITHUB-j dataset.</p> <p><code>root@xxx:~# scripts/postprocess_yyszz.py -i MODE_ID [--sids-file gh-j.sids.txt] LOG/intermediate.*.json</code></p> <p>The descriptions of <code>MODE_ID</code> and intermediate data files are shown in the following tables.</p> <table style="border-collapse: collapse; width: 49.306431%;"><colgroup><col style="width: 10.970996%;"><col style="width: 88.9029%;"></colgroup> <tbody> <tr> <td><code>MODE_ID</code></td> <td>Description</td> </tr> <tr> <td>0</td> <td>YYSZZ-raw (without commit filtering)</td> </tr> <tr> <td>1</td> <td>YYSZZ-G (with gap-aware commit filtering)</td> </tr> <tr> <td>2</td> <td>experimental</td> </tr> <tr> <td>3</td> <td>YYSZZ-B (boundary-aware commit filtering)</td> </tr> </tbody> </table> <p> </p> <table style="border-collapse: collapse; width: 60.277427%;"><colgroup><col style="width: 25.523013%;"><col style="width: 74.267782%;"></colgroup> <tbody> <tr> <td>Dataset name</td> <td>Intermediate data file</td> </tr> <tr> <td>DS_GITHUB-j</td> <td><code>intermediate.GITHUB-j.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_gh_supplement_22.json</code></td> </tr> </tbody> </table> <p> </p> <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>Results of {B|AG|MA|R|L|RA}-SZZ on the datasets are at <code>RESULTS/SZZs/*/out/bic_*_*.json</code>.<br>We used <a title="pyszz_v2" href="https://github.com/grosa1/pyszz_v2" target="_blank" rel="noopener">pyszz_v2</a> and the following configurations and dataset files.</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>To obtain the statistics, use <code>adj_for_szzs.py</code>. Note that <code>--sids-file</code> option is necessary only for DS_GITHUB-j. </p> <p><code>root@xxx:~# scripts/adj_for_szzs.py --repo-dir REPO_DIR [--sids-file gh-j.sids.txt] RESULT_JSON</code></p>
format Recurso digital
id zenodo_https___doi_org_10_5281_zenodo_19278471
institution Zenodo
language
publishDate 2026
publisher Zenodo
record_format zenodo
spellingShingle YYSZZ: Yet Another Yet Another SZZ Algorthm with AST Change Clustering and Backporting (Reproduction Package)
Anonymous
<h1>YYSZZ Reproduction Package</h1> <h2>Description</h2> <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>Preparation</h2> <p>Download the following from <a title="here" href="https://doi.org/10.5281/zenodo.19235511" target="_blank" rel="noopener">here</a>.</p> <ul> <li><code>yyszz-amd64.tar.xz</code> (for x64) or <code>yyszz-arm64.tar.xz</code> (for arm64)</li> <li><code>cloned.tar.xz</code></li> <li><code>apache.tar.xz</code></li> <li><code>supplement.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>root@xxx:~# tar Jxf /mnt/work/cloned.tar.xz</code><br><code>root@xxx:~# tar Jxf /mnt/work/apache.tar.xz</code><br><code>root@xxx:~# tar Jxf /mnt/work/supplement.tar.xz</code></p> <p>If download fails, you can instead clone the repositories.</p> <p><code>root@xxx:~# scripts/clone_repos_gh.py</code> (for <code>cloned</code>)</p> <p><code>root@xxx:~# scripts/clone_repos_apache.py</code> (for <code>apache</code>)</p> <p><code>root@xxx:~# scripts/clone_repos_suppl.py</code> (for <code>supplement</code>)</p> <h2>Reproduction</h2> <p>In the following, <code>N_PROCS</code> indicates the number of available processes.</p> <p>Since the reproduction is time-consuming, we recommend processing randomly sampled N scenarios with an option <code>--nsamples N</code>.<br>The following line initiates the full reproduction run.</p> <p><code>root@xxx:~# scripts/yyszz_{github|apache|suppl}.py -u -r -p N_PROCS [--nsamples N]</code></p> <p>Datasets and their corresponding scripts are shown in the following table.<br>A dataset is a list of scenario that contains repository name, bug fix commit, and bug inducing commit.</p> <table style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 15.006305%;"><col style="width: 15.510719%;"><col style="width: 29.508197%;"><col style="width: 16.015132%;"><col style="width: 23.833544%;"></colgroup> <tbody> <tr> <td>Dataset name</td> <td>Dataset source</td> <td>Dataset file (<code>datasets/*</code>)</td> <td>Repository root</td> <td>YYSZZ script</td> </tr> <tr> <td>DS_GITHUB-j</td> <td><a title="Rosa et al." href="https://doi.org/10.6084/m9.figshare.19586500" target="_blank" rel="noopener">Rosa et al.</a></td> <td><code>language-filtered.json</code></td> <td><code>cloned</code></td> <td><code>yyszz_github.py</code></td> </tr> <tr> <td>DS_APACHE</td> <td><a title="Tang et al." href="https://doi.org/10.6084/m9.figshare.27418236" target="_blank" rel="noopener">Tang et al.</a></td> <td><code>DS_APACHE.json</code></td> <td><code>apache</code></td> <td><code>yyszz_apache.py</code></td> </tr> <tr> <td>DS_RECENT</td> <td>original</td> <td><code>ds_gh_supplement_22.json</code></td> <td><code>supplement</code></td> <td><code>yyszz_suppl.py</code></td> </tr> </tbody> </table> <p>In order to disable change-clustering (untanging), remove <code>-u -r</code> from the line.<br>Note that dropping <code>-u -r</code> also disables multi-process mode, since sub-SZZs run in parallel on variants derived from change-clusters.</p> <p>If you disable modified conflict rules, add <code>--orig-d3j</code> option.</p> <p>Each YYSZZ script produces intermediate results at <code>LOG</code> directory.<br>The following line derives the final results from the intermediate results.<br>Use <code>--sids-file gh-j.sids.txt</code> option only for DS_GITHUB-j dataset.</p> <p><code>root@xxx:~# scripts/postprocess_yyszz.py -i MODE_ID [--sids-file gh-j.sids.txt] LOG/intermediate.*.json</code></p> <p>The descriptions of <code>MODE_ID</code> and intermediate data files are shown in the following tables.</p> <table style="border-collapse: collapse; width: 49.306431%;"><colgroup><col style="width: 10.970996%;"><col style="width: 88.9029%;"></colgroup> <tbody> <tr> <td><code>MODE_ID</code></td> <td>Description</td> </tr> <tr> <td>0</td> <td>YYSZZ-raw (without commit filtering)</td> </tr> <tr> <td>1</td> <td>YYSZZ-G (with gap-aware commit filtering)</td> </tr> <tr> <td>2</td> <td>experimental</td> </tr> <tr> <td>3</td> <td>YYSZZ-B (boundary-aware commit filtering)</td> </tr> </tbody> </table> <p> </p> <table style="border-collapse: collapse; width: 60.277427%;"><colgroup><col style="width: 25.523013%;"><col style="width: 74.267782%;"></colgroup> <tbody> <tr> <td>Dataset name</td> <td>Intermediate data file</td> </tr> <tr> <td>DS_GITHUB-j</td> <td><code>intermediate.GITHUB-j.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_gh_supplement_22.json</code></td> </tr> </tbody> </table> <p> </p> <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>Results of {B|AG|MA|R|L|RA}-SZZ on the datasets are at <code>RESULTS/SZZs/*/out/bic_*_*.json</code>.<br>We used <a title="pyszz_v2" href="https://github.com/grosa1/pyszz_v2" target="_blank" rel="noopener">pyszz_v2</a> and the following configurations and dataset files.</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>To obtain the statistics, use <code>adj_for_szzs.py</code>. Note that <code>--sids-file</code> option is necessary only for DS_GITHUB-j. </p> <p><code>root@xxx:~# scripts/adj_for_szzs.py --repo-dir REPO_DIR [--sids-file gh-j.sids.txt] RESULT_JSON</code></p>
title YYSZZ: Yet Another Yet Another SZZ Algorthm with AST Change Clustering and Backporting (Reproduction Package)
url https://doi.org/10.5281/zenodo.19278471