Un Modèle Structurel pour les Changements de Code Contextuels

Nous abordons le problème de prédiction des complétions d'édition basé sur un modèle appris à partir d'édits passés. Étant donné un extrait de code partiellement édité, notre objectif est de prédire une complétion de l'édition pour le reste de l'extrait. Nous appelons cette tâche la tâche d'EditCompletion et présentons une nouvelle approche pour la résoudre. L'idée principale est de représenter directement les éditions structurelles. Cela nous permet de modéliser la probabilité de l'édition elle-même, plutôt que d'apprendre la probabilité du code édité. Nous représentons une opération d'édition comme un chemin dans l'Arbre Abstrait de Syntaxe (Abstract Syntax Tree, AST) du programme, partant de la source de l'édition jusqu'à sa cible. En utilisant cette représentation, nous présentons un modèle neuronal puissant et léger pour la tâche d'EditCompletion.Nous menons une évaluation approfondie, en comparant notre approche à diverses méthodes de représentation et de modélisation soutenues par plusieurs modèles robustes tels que les LSTM, les Transformers et les CRF neuronaux. Nos expériences montrent que notre modèle réalise un gain relatif de 28 % par rapport aux modèles séquentiels les plus avancés et une précision deux fois supérieure à celle des modèles syntaxiques qui apprennent à générer le code édité, contrairement à la modélisation directe des éditions.Notre code, notre jeu de données et nos modèles entraînés sont disponibles au public sur https://github.com/tech-srl/c3po/.