Debugging and bug fixing are extremely important activities that are regularly performed to eliminate defects from software. They are however time consuming, and thus improving their degree of automation is increasingly important in a competitive world. A possible solution is offered by Automatic Program Repair (APR) techniques, through which it is possible to automatically generate patches that can be either presented to developers as candidate patches or directly integrated into the target programs. Although many different APR techniques have been developed in the last few years, there are still open challenges related to their introduction as stable and working solutions in development pipelines. Indeed, most of the APR techniques rely on test cases to evaluate the correctness of patches, which is a weak validation method that can lead to the generation of incorrect patches. In particular, recent empirical studies show that APR techniques often result in the generation of code-removal patches, that are patches that drop functionalities to address the faults that afflict programs. Yet another aspect that strongly influences the success of APR is fault localization. Indeed, if the correct location to generate the patch is not found, it is hard or even impossible to generate a patch. Experimental evidence shows that current strategies used for the fault localization are often unable to identify the correct statements to be modified, making the generation of patches extremely hard. In this context, this Ph.D. thesis provides two key contributions: 1) an empirical study about the factors that influence the generation of code-removal patches and an analysis of the useful information that can be extracted from them; and 2) a new fault localization technique that exploits the semantic of exceptions to accurately guide the fault localization process.

Le attività di debugging e risoluzione dei bug sono estremamente importanti e sono eseguite regolarmente per eliminare i difetti presenti nei programmi. Tuttavia, la loro esecuzione richiede molto tempo, e dunque migliorare il loro grado di automazione è sempre più importante in un mondo altamente competitivo. Una possibile soluzione è offerta dalle tecniche di riparazione automatica del programma (Automatic Program Repair, APR), attraverso le quali è possibile generare in modo automatico le patch che possono essere fornite agli sviluppatori come possibili soluzioni oppure possono essere integrate direttamente nel programma contenente il difetto. Nonostante negli ultimi anni siano state sviluppate numerose tecniche di APR, ci sono ancora numerose sfide aperte legate alla loro introduzione come soluzione stabile e funzionante da integrare nelle pipeline di sviluppo. Infatti, la maggior parte delle tecniche di APR si appoggiano ai casi di test per valutare la correttezza delle patch, i quali però costituiscono un metodo di valutazione fragile che può portare alla generazione di patch non corrette. In particolare, recenti studi empirici mostrano che le tecniche di APR spesso generano patch di rimozione del codice (code-removal patches), che sono patch che rimuovono le funzionalità per risolvere i difetti che affliggono i programmi. Un altro aspetto che influenza fortemente il successo delle tecniche di APR è la localizzazione dei difetti. Infatti, se la posizione corretta per generare la patch non viene trovata, è difficile o persino impossibile generare una patch. Prove sperimentali mostrano che le strategie attuali utilizzate per la localizzazione dei difetti spesso non sono in grado di identificare i punti del codice corretti da modificare, rendendo la generazione delle patch estremamente difficile. In questo contesto, questa tesi di dottorato fornisce due contributi chiave: 1) uno studio empirico riguardo ai fattori che influenzano la generazione delle patch di rimozione del codice e un’analisi delle informazioni utili che possono essere estratte da esse; e 2) una nuova tecnica di localizzazione dei difetti che sfrutta la semantica delle eccezioni per guidare attentamente il processo di localizzazione dei difetti.

(2021). Understanding and Improving Automatic Program Repair: A Study of Code-removal Patches and a New Exception-driven Fault Localization Approach. (Tesi di dottorato, Università degli Studi di Milano-Bicocca, 2021).

Understanding and Improving Automatic Program Repair: A Study of Code-removal Patches and a New Exception-driven Fault Localization Approach

GINELLI, DAVIDE
2021

Abstract

Debugging and bug fixing are extremely important activities that are regularly performed to eliminate defects from software. They are however time consuming, and thus improving their degree of automation is increasingly important in a competitive world. A possible solution is offered by Automatic Program Repair (APR) techniques, through which it is possible to automatically generate patches that can be either presented to developers as candidate patches or directly integrated into the target programs. Although many different APR techniques have been developed in the last few years, there are still open challenges related to their introduction as stable and working solutions in development pipelines. Indeed, most of the APR techniques rely on test cases to evaluate the correctness of patches, which is a weak validation method that can lead to the generation of incorrect patches. In particular, recent empirical studies show that APR techniques often result in the generation of code-removal patches, that are patches that drop functionalities to address the faults that afflict programs. Yet another aspect that strongly influences the success of APR is fault localization. Indeed, if the correct location to generate the patch is not found, it is hard or even impossible to generate a patch. Experimental evidence shows that current strategies used for the fault localization are often unable to identify the correct statements to be modified, making the generation of patches extremely hard. In this context, this Ph.D. thesis provides two key contributions: 1) an empirical study about the factors that influence the generation of code-removal patches and an analysis of the useful information that can be extracted from them; and 2) a new fault localization technique that exploits the semantic of exceptions to accurately guide the fault localization process.
MARIANI, LEONARDO
VIZZARI, GIUSEPPE
Program Repair; Code-removal Patches; Software Testing; Software Debugging; Fault Localization
Program Repair; Code-removal Patches; Software Testing; Software Debugging; Fault Localization
INF/01 - INFORMATICA
English
25-mag-2021
INFORMATICA
33
2019/2020
open
(2021). Understanding and Improving Automatic Program Repair: A Study of Code-removal Patches and a New Exception-driven Fault Localization Approach. (Tesi di dottorato, Università degli Studi di Milano-Bicocca, 2021).
File in questo prodotto:
File Dimensione Formato  
phd_unimib_727654.pdf

accesso aperto

Descrizione: Tesi di Ginelli Davide - 727654
Tipologia di allegato: Doctoral thesis
Dimensione 875.56 kB
Formato Adobe PDF
875.56 kB Adobe PDF Visualizza/Apri

I documenti in IRIS 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/10281/317046
Citazioni
  • Scopus ND
  • ???jsp.display-item.citation.isi??? ND
Social impact