Code, data, and artifacts for Master Thesis on LLM-enhanced PR descriptions (https://doi.org/10.5281/zenodo.15271232)
HTML
1
11 commits
updated Jul 26, 2025
This repository contains the code, processed data, configuration files, prompts, reports, and key visualizations supporting the Master Thesis titled:
"Improving Code Review Effectiveness with AI: A Model-Agnostic Approach on LLM-Enhanced Code Change Explanations and Personalized Feedback Strategies"
Archived Version (Zenodo):
This DOI links to the specific version of these artifacts archived on Zenodo corresponding to the submitted thesis.
This research investigates the potential of Large Language Models (LLMs) to enhance Pull Request (PR) descriptions. The study evaluates the perceived quality of LLM-generated PR variations compared to human baselines and assesses the model agnosticism of the generation process. The artifacts in this repository allow for the replication of the data analysis presented in the thesis.
/README.md: This file/LICENSE: License information (MIT License assumed)/requirements.txt: Python dependencies/.gitignore: Files ignored by Gitscripts/: Python scripts for fetching, scoring, analysis, etc. & JS/HTML for survey load balancer
analyze_agnosticism.pypr_analyzer9.pypr_comparer.pypr_fetcher_4.pypr_link_creator.pypr_scorer.pysurvey_analysis_7.pytop_prs_getter.pypr_quality_analyzer.pyindex.htmlprompts/: Text files containing LLM prompt templates
competencies_list.txtdegradation_prompt_template.txtimprovement_degraded_prompt_template.txtimprovement_original_prompt_template.txtjson_to_timeline_prompt.txtdata/: Contains configuration, stimuli, raw outputs, and processed analysis results
config/
SETUP.csv: Latin Square setupbaseline_pr_stimuli/: Baseline JSONs (O, D, ID, IO) for the 6 PRs (ChatGPT-4o)
1/
original_pr.jsondegraded_pr.jsonimproved_original_pr.jsonimproved_degraded.json... (Folders 2 through 6) ...model_agnosticism_llm_outputs/: Generated JSONs from other LLMs for model agnosticism tests
1/: PR Number 1
claude_3.7_sonnet/
degraded_pr.jsonimproved_degraded_pr.jsonimproved_original_pr.jsondeepseek_deepthink_r1/gemini_2.0_flash_thinking/grok_3_thinking/qwen2.5-max_thinking/
... (3 json files per LLM) ...... (Folders 2 through 6 with LLM subfolders) ...analysis_outputs/: Processed data tables (CSV, XLSX) from analyses
demographic_summary.xlsxhypothesis_alignment_by_demographic_group.csvoverall_alignment_descriptive_analysis.csvpreference_correlations_kruskal_wallis.csvpreference_correlations_spearman.csvspecific_hypothesis_tests_formatted.csvspecific_hypothesis_tests_raw.csvmetrics_summary_by_llm.csvmetrics_summary_by_version.csvsimilarity_summary_by_llm.csvsimilarity_summary_by_version.csvcluster_characteristics.csvcompetency_correlation_matrix.csvoverall_score_descriptives.csvrepo_kruskal_wallis_results.csvrepo_pr_counts.csvrepository_mean_std_summary_filtered.csvrepository_summary_with_clusters_pca.csv# Essential Raw(ish) Data for Repro:
enhanced_pr_comparison.csv: Raw similarity scores needed by S6pr_quality_analysis.csv: Raw metrics needed by S6preprocessed_scored_prs.csv: #<- Needed by S4reports/: Generated text/markdown reports summarizing analyses
meta_analysis_report.mdmeta_results_summary_report_v7.mdreport.txtvisualizations/: Key PNG plots referenced in the thesis text
# Survey Plots:demographic_experience_distribution.pngdemographic_role_distribution.pngoverall_alignment_comparison_percentage.png# Model Agnosticism Plots:variability_by_llm_overall_word_count.pngvariability_by_version_body_readability_flesch_reading_ease.pngsimilarity_by_llm_sbert_cosine.pngsimilarity_by_llm_bleu.png# Repo Scoring / PR Selection Plots:repo_pr_counts_barplot_log_scale.pngoverall_score_histograms_bundled.pngrepo_score_distributions_bundled.pngcompetency_correlation_heatmap.pngkmeans_clusters_pca_binned_size.png# Approach Diagrams:approach_visualizations/model_agnosticism_flowchart.pngapproach_visualizations/pr_selection_funnel_matplotlib.pngapproach_visualizations/pr_variation_flowchart.pngapproach_visualizations/survey_load_balancer_flowchart.png# Appendix Diagrams:appendix/images/prototype_workflow_diagram.pngThe primary analyses (survey results, model agnosticism metrics) were performed using Python scripts located in the scripts/ directory.
Prerequisites:
pip install -r requirements.txt
Note: You need to generate requirements.txt based on the libraries used in your scripts (e.g., pandas, numpy, scipy, matplotlib, seaborn, nltk, transformers, sentence-transformers, torch, etc.). Run pip freeze > requirements.txt in your activated project environment.Key Scripts:
survey_analysis_7.py: Processes the (anonymized) survey data (data/analysis_outputs/combined_processed_responses_v7_anonymized.csv) and the setup config (data/config/SETUP.csv) to generate the hypothesis tests, demographic breakdowns, correlation analyses, and summary reports found in reports/ and data/analysis_outputs/. Also generates plots in visualizations/.pr_analyzer9.py / pr_comparer.py / analyze_agnosticism.py (referenced as S4, S5, S6 in the thesis appendix) were used to generate the raw metrics (pr_quality_analysis.csv) and similarity comparisons (enhanced_pr_comparison.csv) for the model agnosticism study, which are then summarized in data/analysis_outputs/. Re-running these might require API keys or specific model access setup not included here.scripts/ were used for earlier phases like PR fetching, scoring, and candidate selection.This repository contains scripts, configuration files, prompts, and processed/aggregated data outputs necessary to replicate the main analyses presented in the thesis.
Included:
scripts/)data/config/)prompts/)data/analysis_outputs/)data/analysis_outputs/combined_processed_responses_v7_anonymized.csv)data/baseline_pr_stimuli/)data/model_agnosticism_llm_outputs/)data/pr_quality_analysis.csv, data/enhanced_pr_comparison.csv)reports/)visualizations/)Excluded:
combined_processed_responses_v7_anonymized.csv) and aggregated results (data/analysis_outputs/) support the findings while maintaining privacy.The content of this repository is licensed under the MIT License. See the LICENSE file for details.
For questions regarding the thesis or these artifacts, please contact: Luca Mariotto ([https://www.linkedin.com/in/luca-mariotto/])
Code, data, and artifacts for Master Thesis on LLM-enhanced PR descriptions (https://doi.org/10.5281/zenodo.15271232)
HTML
1
11 commits
updated Jul 26, 2025
This repository contains the code, processed data, configuration files, prompts, reports, and key visualizations supporting the Master Thesis titled:
"Improving Code Review Effectiveness with AI: A Model-Agnostic Approach on LLM-Enhanced Code Change Explanations and Personalized Feedback Strategies"
Archived Version (Zenodo):
This DOI links to the specific version of these artifacts archived on Zenodo corresponding to the submitted thesis.
This research investigates the potential of Large Language Models (LLMs) to enhance Pull Request (PR) descriptions. The study evaluates the perceived quality of LLM-generated PR variations compared to human baselines and assesses the model agnosticism of the generation process. The artifacts in this repository allow for the replication of the data analysis presented in the thesis.
/README.md: This file/LICENSE: License information (MIT License assumed)/requirements.txt: Python dependencies/.gitignore: Files ignored by Gitscripts/: Python scripts for fetching, scoring, analysis, etc. & JS/HTML for survey load balancer
analyze_agnosticism.pypr_analyzer9.pypr_comparer.pypr_fetcher_4.pypr_link_creator.pypr_scorer.pysurvey_analysis_7.pytop_prs_getter.pypr_quality_analyzer.pyindex.htmlprompts/: Text files containing LLM prompt templates
competencies_list.txtdegradation_prompt_template.txtimprovement_degraded_prompt_template.txtimprovement_original_prompt_template.txtjson_to_timeline_prompt.txtdata/: Contains configuration, stimuli, raw outputs, and processed analysis results
config/
SETUP.csv: Latin Square setupbaseline_pr_stimuli/: Baseline JSONs (O, D, ID, IO) for the 6 PRs (ChatGPT-4o)
1/
original_pr.jsondegraded_pr.jsonimproved_original_pr.jsonimproved_degraded.json... (Folders 2 through 6) ...model_agnosticism_llm_outputs/: Generated JSONs from other LLMs for model agnosticism tests
1/: PR Number 1
claude_3.7_sonnet/
degraded_pr.jsonimproved_degraded_pr.jsonimproved_original_pr.jsondeepseek_deepthink_r1/gemini_2.0_flash_thinking/grok_3_thinking/qwen2.5-max_thinking/
... (3 json files per LLM) ...... (Folders 2 through 6 with LLM subfolders) ...analysis_outputs/: Processed data tables (CSV, XLSX) from analyses
demographic_summary.xlsxhypothesis_alignment_by_demographic_group.csvoverall_alignment_descriptive_analysis.csvpreference_correlations_kruskal_wallis.csvpreference_correlations_spearman.csvspecific_hypothesis_tests_formatted.csvspecific_hypothesis_tests_raw.csvmetrics_summary_by_llm.csvmetrics_summary_by_version.csvsimilarity_summary_by_llm.csvsimilarity_summary_by_version.csvcluster_characteristics.csvcompetency_correlation_matrix.csvoverall_score_descriptives.csvrepo_kruskal_wallis_results.csvrepo_pr_counts.csvrepository_mean_std_summary_filtered.csvrepository_summary_with_clusters_pca.csv# Essential Raw(ish) Data for Repro:
enhanced_pr_comparison.csv: Raw similarity scores needed by S6pr_quality_analysis.csv: Raw metrics needed by S6preprocessed_scored_prs.csv: #<- Needed by S4reports/: Generated text/markdown reports summarizing analyses
meta_analysis_report.mdmeta_results_summary_report_v7.mdreport.txtvisualizations/: Key PNG plots referenced in the thesis text
# Survey Plots:demographic_experience_distribution.pngdemographic_role_distribution.pngoverall_alignment_comparison_percentage.png# Model Agnosticism Plots:variability_by_llm_overall_word_count.pngvariability_by_version_body_readability_flesch_reading_ease.pngsimilarity_by_llm_sbert_cosine.pngsimilarity_by_llm_bleu.png# Repo Scoring / PR Selection Plots:repo_pr_counts_barplot_log_scale.pngoverall_score_histograms_bundled.pngrepo_score_distributions_bundled.pngcompetency_correlation_heatmap.pngkmeans_clusters_pca_binned_size.png# Approach Diagrams:approach_visualizations/model_agnosticism_flowchart.pngapproach_visualizations/pr_selection_funnel_matplotlib.pngapproach_visualizations/pr_variation_flowchart.pngapproach_visualizations/survey_load_balancer_flowchart.png# Appendix Diagrams:appendix/images/prototype_workflow_diagram.pngThe primary analyses (survey results, model agnosticism metrics) were performed using Python scripts located in the scripts/ directory.
Prerequisites:
pip install -r requirements.txt
Note: You need to generate requirements.txt based on the libraries used in your scripts (e.g., pandas, numpy, scipy, matplotlib, seaborn, nltk, transformers, sentence-transformers, torch, etc.). Run pip freeze > requirements.txt in your activated project environment.Key Scripts:
survey_analysis_7.py: Processes the (anonymized) survey data (data/analysis_outputs/combined_processed_responses_v7_anonymized.csv) and the setup config (data/config/SETUP.csv) to generate the hypothesis tests, demographic breakdowns, correlation analyses, and summary reports found in reports/ and data/analysis_outputs/. Also generates plots in visualizations/.pr_analyzer9.py / pr_comparer.py / analyze_agnosticism.py (referenced as S4, S5, S6 in the thesis appendix) were used to generate the raw metrics (pr_quality_analysis.csv) and similarity comparisons (enhanced_pr_comparison.csv) for the model agnosticism study, which are then summarized in data/analysis_outputs/. Re-running these might require API keys or specific model access setup not included here.scripts/ were used for earlier phases like PR fetching, scoring, and candidate selection.This repository contains scripts, configuration files, prompts, and processed/aggregated data outputs necessary to replicate the main analyses presented in the thesis.
Included:
scripts/)data/config/)prompts/)data/analysis_outputs/)data/analysis_outputs/combined_processed_responses_v7_anonymized.csv)data/baseline_pr_stimuli/)data/model_agnosticism_llm_outputs/)data/pr_quality_analysis.csv, data/enhanced_pr_comparison.csv)reports/)visualizations/)Excluded:
combined_processed_responses_v7_anonymized.csv) and aggregated results (data/analysis_outputs/) support the findings while maintaining privacy.The content of this repository is licensed under the MIT License. See the LICENSE file for details.
For questions regarding the thesis or these artifacts, please contact: Luca Mariotto ([https://www.linkedin.com/in/luca-mariotto/])