Ein Strukturmodell für kontextbezogene Codeänderungen

Wir adressieren das Problem der Vorhersage von Bearbeitungsvervollständigungen basierend auf einem gelernten Modell, das mit vergangenen Bearbeitungen trainiert wurde. Bei einem teilweise bearbeiteten Codesnippet ist unser Ziel, eine Vervollständigung der Bearbeitung für den Rest des Snippets vorherzusagen. Diese Aufgabe bezeichnen wir als die EditCompletion-Aufgabe und präsentieren einen neuen Ansatz zur Bewältigung dieser Herausforderung. Das Kernkonzept besteht darin, strukturelle Bearbeitungen direkt zu repräsentieren. Dies ermöglicht es uns, die Wahrscheinlichkeit der Bearbeitung selbst zu modellieren, anstatt die Wahrscheinlichkeit des bearbeiteten Codes zu lernen. Wir repräsentieren eine Bearbeitungsoperation als Pfad im abstrakten Syntaxbaum (Abstract Syntax Tree, AST) des Programms, der vom Ursprung der Bearbeitung zum Ziel führt. Mit dieser Repräsentation präsentieren wir ein leistungsfähiges und ressourcenschonendes neuronales Modell für die EditCompletion-Aufgabe.Wir führen eine umfassende Evaluierung durch und vergleichen unseren Ansatz mit einer Vielzahl von Repräsentations- und Modellierungsmethoden, die von mehreren starken Modellen wie LSTMs (Long Short-Term Memory), Transformers und neuronalen CRFs (Conditional Random Fields) getrieben werden. Unsere Experimente zeigen, dass unser Modell einen relativen Gewinn von 28 % gegenüber den besten sequentiellen Modellen erreicht und doppelt so genaue Ergebnisse liefert wie syntaktische Modelle, die lernen, den bearbeiteten Code zu generieren, anstatt die Bearbeitungen direkt zu modellieren.Unser Code, Datensatz und trainierte Modelle sind öffentlich verfügbar unter https://github.com/tech-srl/c3po/.