머신러닝 모델은 타입 검사가 가능한 TypeScript 타입을 생성하는가?
Author
Venue
2023년 유럽 객체 지향 프로그래밍 컨퍼런스(ECOOP)
Abstract
타입 마이그레이션은 컴파일 시점에 확실성을 확보하기 위해 타입이 지정되지 않은 코드에 타입을 추가하는 과정입니다. TypeScript 및 기타 점진적 타입 시스템은 프로그래머가 불명확한 타입으로 시작하여 점차 이를 강화할 수 있도록 함으로써 타입 마이그레이션을 용이하게 합니다. 그러나 타입 추가 작업은 수작업이 필요하며, 대규모 산업용 코드베이스에서 수행된 여러 마이그레이션 사례가 수년이 소요된 것으로 보고되었습니다. 연구계에서는 머신러닝을 활용하여 TypeScript 타입 마이그레이션을 자동화하는 데 큰 관심을 보여왔습니다. 기존 머신러닝 모델들은 개별 TypeScript 타입 주석을 예측하는 데 있어 높은 정확도를 보고하고 있습니다. 그러나 본 논문에서는 이러한 정확도가 오해를 불러일으킬 수 있으며, 우리는 다른 질문을 다뤄야 한다고 주장합니다. 즉, 자동 타입 마이그레이션 도구가 TypeScript 타입 검사기를 통과하는 코드를 생성할 수 있는가 하는 것입니다. 우리는 임의의 타입 예측 모델과 함께 사용할 수 있는 TypeScript 타입 마이그레이션 도구인 TypeWeaver를 제시합니다. 우리는 문헌에 소개된 세 가지 모델, 즉 재귀 신경망인 DeepTyper, 그래프 신경망인 LambdaNet, 그리고 중간 채우기(fill-in-the-middle) 작업을 지원하는 범용 다중 언어 트랜스포머인 InCoder를 사용하여 TypeWeaver를 평가합니다. 본 도구는 타입 예측 모델을 사용하는 데 필요한 여러 단계를 자동화합니다. (1) 프로젝트 의존성에 대한 타입 가져오기; (2) JavaScript 모듈을 TypeScript 표기법으로 마이그레이션; (3) 필요할 때 예측된 타입 주석을 프로그램에 삽입하여 TypeScript를 생성하는 것; 그리고 (4) 필요할 때 타입이 아닌 예측을 거부하는 것입니다. 우리는 이전에 타입이 지정된 적이 없는 패키지를 포함하여 총 513개의 JavaScript 패키지로 구성된 데이터셋을 사용하여 TypeWeaver를 평가했습니다. 최상의 타입 예측 모델을 사용했을 때, 패키지의 21%만이 타입 검사를 통과했지만, 더 고무적인 점은 파일의 69%가 타입 검사를 성공적으로 통과했다는 것입니다.
