Correggere difetti nel codice è una delle attività più ricorrenti nella manu tenzione software. L’Automated Program Repair nasce per automatizzare almeno una parte del processo di individuazione e correzione degli errori. Con la diffusione dei Large Language Models, questa prospettiva è diventata più concreta, ma rimane aperto il problema di integrare tali modelli in un flusso di sviluppo sicuro, controllabile e verificabile. Il lavoro propone un agente AI integrato nel workflow di Git tramite hook pre-push. Il sistema progettato intercetta i file coinvolti nel push, costruisce un contesto mirato, interroga un modello Gemini con fallback automatico tra più varianti del modello, genera test locali e propone eventuali patch tramite un’interfaccia grafica di revisione. L’agente adotta un approccio Human-in the-Loop: le modifiche vengono validate tramite test e applicate al codice solo dopo la decisione dello sviluppatore. La sperimentazione, condotta su una serie di sessioni di push distribuite tra Python, JavaScript, Dart e Swift, ha mostrato che il sistema rileva so prattutto difetti legati alla gestione dello stato cumulativo, alla validazione degli input e all’ordine delle condizioni logiche. In diversi casi il test generato ha reso visibile un comportamento scorretto che il compilatore non avrebbe segnalato. Rimangono aperti due limiti principali: la generazione di test non sempre eseguibili al primo tentativo, in particolare nei linguaggi compilati, e la dipendenza dai runtime installati localmente. Nelle dieci sessioni documentate nel report sperimentale, il 70% dei casi ha portato all’applicazione di una patch dopo il rilevamento di un bug o di un rischio logico, con un tempo medio complessivo di circa 57 secondi per sessione. Questo dato va letto come risultato preliminare del prototipo, non come valutazione statistica generalizzabile. Il lavoro mostra comunque che un modello linguistico, se inserito in un’architettura modulare con controlli de terministici, può anticipare la rilevazione di difetti prima della pubblicazione del codice su repository remoto.

ANALISI E RIPARAZIONE AUTOMATICA DEL SOFTWARE TRAMITE LARGELANGUAGEMODELS

MAGGIO, MATTEO
2025/2026

Abstract

Correggere difetti nel codice è una delle attività più ricorrenti nella manu tenzione software. L’Automated Program Repair nasce per automatizzare almeno una parte del processo di individuazione e correzione degli errori. Con la diffusione dei Large Language Models, questa prospettiva è diventata più concreta, ma rimane aperto il problema di integrare tali modelli in un flusso di sviluppo sicuro, controllabile e verificabile. Il lavoro propone un agente AI integrato nel workflow di Git tramite hook pre-push. Il sistema progettato intercetta i file coinvolti nel push, costruisce un contesto mirato, interroga un modello Gemini con fallback automatico tra più varianti del modello, genera test locali e propone eventuali patch tramite un’interfaccia grafica di revisione. L’agente adotta un approccio Human-in the-Loop: le modifiche vengono validate tramite test e applicate al codice solo dopo la decisione dello sviluppatore. La sperimentazione, condotta su una serie di sessioni di push distribuite tra Python, JavaScript, Dart e Swift, ha mostrato che il sistema rileva so prattutto difetti legati alla gestione dello stato cumulativo, alla validazione degli input e all’ordine delle condizioni logiche. In diversi casi il test generato ha reso visibile un comportamento scorretto che il compilatore non avrebbe segnalato. Rimangono aperti due limiti principali: la generazione di test non sempre eseguibili al primo tentativo, in particolare nei linguaggi compilati, e la dipendenza dai runtime installati localmente. Nelle dieci sessioni documentate nel report sperimentale, il 70% dei casi ha portato all’applicazione di una patch dopo il rilevamento di un bug o di un rischio logico, con un tempo medio complessivo di circa 57 secondi per sessione. Questo dato va letto come risultato preliminare del prototipo, non come valutazione statistica generalizzabile. Il lavoro mostra comunque che un modello linguistico, se inserito in un’architettura modulare con controlli de terministici, può anticipare la rilevazione di difetti prima della pubblicazione del codice su repository remoto.
2025
AUTOMATED SOFTWARE ANALYSIS AND REPAIR USING LARGE LANGUAGE MODELS
Riparazione software
Modelli linguistici
Git Hooks
Unit Test
Revisione codice
File in questo prodotto:
File Dimensione Formato  
Matteo_Maggio_Tesi_finale_con_liberatoria.pdf

non disponibili

Descrizione: Elaborato finale con liberatoria
Dimensione 2.21 MB
Formato Adobe PDF
2.21 MB Adobe PDF

I documenti in UNITESI sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/20.500.14253/65575