Quantifying, characterizing, and mitigating the ghost commit problem when identifying fix-inducing changes

Christophe Rezk · eScholarship@McGill (McGill) · 2021

L'approche proposée par Śliwerski, Zimmermann, et Zeller (SZZ) pour identifier les changements de code qui induisent des corrections trace à l'envers d'un commit qui corrige un défaut pour trouver des commits qui sont impliqués dans cette correction. Cette approche est au cœur des études de caractéristiques des changements qui induisent des corrections, ainsi que la variante populaire de prédiction des défauts ‘`Just in Time" (JIT). Cependant, certains types de commits sont invisibles à l’approche SZZ. Nous nous référons à ces commits comme des commits fantôme: ``Ghost Commits". Dans cette thèse, nous cherchons à définir, quantifier, caractériser et atténuer les commits fantômes qui affectent l’algorithme SZZ pendant sa phase de traçage (c.-à-d., lier les commits de correction des défauts aux commits impliqués par le correctif) et sa phase de filtrage (c.-à-d. supprimer les commits qui sont peu susceptibles d’être a l’origine de la faute corrigée, parmi l’ensemble des commits impliqués). Nous explorons les dépôts de contrôle de version de 14 projets Apache open source pour identifier des instances de commits fantômes lors des phases de traçage et de filtrage. Nous constatons que (1) 5,66%–11,72% des commits de correction de défaut n’ajoutent que des lignes, et ne peuvent donc pas être mappés aux commits impliqués ; (2) 1,05%–4,60% des commits étudiés ne suppriment que des lignes, et ne peuvent donc pas être impliqués dans des corrections futures ; et (3) qu’aucun commit impliqué ne survit au processus de filtrage de 0,35%–14,49% de commits de correction de défaut. Une analyse qualitative des commits fantômes révèle que 46,5% des 142 commits de correction de défaut ajoutent des contrôles (par exemple, des contrôles de nullité ou de vide), tandis que 39,7% des 307 commits de suppression nettoient le code (inutilisé). Nos résultats suggèrent que la prochaine génération d’améliorations SZZ devrait tenir compte des spécificités des langages de programmation pour connecter les commits fantômes aux commits impliqués et commits corrigeant les défauts. Sur la base de nos observations, nous discutons des orientations prometteuses pour les stratégies d’atténuation pour traiter chaque type de commit fantôme. De plus, nous mettons en œuvre des stratégies d’atténuation pour les commits d’ajout seulement et nous les évaluons comparés à une approche de base. Les résultats indiquent que nos stratégies atteignent une précision de 0,753, améliorant la précision de l'identification des commits impliqués de 39,5 points de pourcentage

Read the paper · More papers on PaperTik