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.| 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.
https://hdl.handle.net/20.500.14253/65575