Czy modele uczenia maszynowego generują typy TypeScript, które przechodzą sprawdzanie typów?
Author
Venue
Europejska konferencja poświęcona programowaniu obiektowemu (ECOOP) 2023
Abstract
Migracja typów to proces dodawania typów do kodu bez typów w celu uzyskania pewności w czasie kompilacji. TypeScript i inne systemy typów stopniowych ułatwiają migrację typów, pozwalając programistom zacząć od nieprecyzyjnych typów i stopniowo je wzmacniać. Jednak dodawanie typów wymaga ręcznej pracy, a kilka migracji w dużych, przemysłowych bazach kodu trwało podobno kilka lat. W środowisku badawczym pojawiło się duże zainteresowanie wykorzystaniem uczenia maszynowego do automatyzacji migracji typów w TypeScript. Istniejące modele uczenia maszynowego wykazują wysoki stopień dokładności w przewidywaniu poszczególnych adnotacji typów TypeScript. Jednak w niniejszym artykule argumentujemy, że dokładność ta może być myląca i powinniśmy zająć się innym pytaniem: czy narzędzie do automatycznej migracji typów może wygenerować kod, który przejdzie sprawdzanie typów TypeScript? Przedstawiamy TypeWeaver, narzędzie do migracji typów TypeScript, które może być używane z dowolnym modelem przewidywania typów. Oceniamy TypeWeaver przy użyciu trzech modeli znanych z literatury: DeepTyper, rekurencyjnej sieci neuronowej; LambdaNet, graficznej sieci neuronowej; oraz InCoder, uniwersalnego, wielojęzycznego transformatora obsługującego zadania typu „wypełnij środek”. Nasze narzędzie automatyzuje kilka kroków niezbędnych do korzystania z modelu przewidywania typów: (1) importowanie typów dla zależności projektu; (2) migrację modułów JavaScript do notacji TypeScript; (3) wstawianie przewidywanych adnotacji typów do programu w celu wygenerowania TypeScript w razie potrzeby; oraz (4) odrzucanie przewidywań niebędących typami w razie potrzeby. Oceniamy TypeWeaver na zbiorze danych zawierającym 513 pakietów JavaScript, w tym pakiety, które nigdy wcześniej nie były typowane. Przy użyciu najlepszego modelu przewidywania typów stwierdzamy, że tylko 21% pakietów przechodzi sprawdzanie typów, ale co bardziej zachęcające, 69% plików przechodzi sprawdzanie typów pomyślnie.
