Les modèles d'apprentissage automatique produisent-ils des types TypeScript qui passent le contrôle de types ?
Author
Venue
Conférence européenne sur la programmation orientée objet (ECOOP) 2023
Abstract
La migration de types est le processus consistant à ajouter des types à du code non typé afin d'obtenir une assurance lors de la compilation. TypeScript et d'autres systèmes de types graduels facilitent la migration de types en permettant aux programmeurs de commencer avec des types imprécis et de les renforcer progressivement. Cependant, l'ajout de types est un travail manuel et plusieurs migrations sur de grandes bases de code industrielles auraient pris plusieurs années. Au sein de la communauté scientifique, l'utilisation de l'apprentissage automatique pour automatiser la migration de types TypeScript a suscité un vif intérêt. Les modèles d'apprentissage automatique existants font état d'un haut degré de précision dans la prédiction des annotations de types TypeScript individuelles. Cependant, dans cet article, nous soutenons que la précision peut être trompeuse et que nous devrions nous poser une question différente : un outil de migration de types automatique peut-il produire du code qui passe le vérificateur de types TypeScript ? Nous présentons TypeWeaver, un outil de migration de types TypeScript pouvant être utilisé avec un modèle de prédiction de types arbitraire. Nous évaluons TypeWeaver à l'aide de trois modèles issus de la littérature : DeepTyper, un réseau neuronal récurrent ; LambdaNet, un réseau neuronal sur graphes ; et InCoder, un transformateur polyvalent et multilingue qui prend en charge les tâches de « fill-in-the-middle ». Notre outil automatise plusieurs étapes nécessaires à l'utilisation d'un modèle de prédiction de types : (1) l'importation des types pour les dépendances d'un projet ; (2) la migration des modules JavaScript vers la notation TypeScript ; (3) l'insertion d'annotations de types prédits dans le programme pour générer du TypeScript lorsque cela est nécessaire ; et (4) le rejet des prédictions de types non valides lorsque cela est nécessaire. Nous évaluons TypeWeaver sur un ensemble de données de 513 paquets JavaScript, y compris des paquets qui n'ont jamais été typés auparavant. Avec le meilleur modèle de prédiction de types, nous constatons que seuls 21 % des paquets passent le contrôle de types, mais, ce qui est plus encourageant, 69 % des fichiers passent le contrôle de types avec succès.
