학습을 통한 유형 추론 강화 데이터플로 분석

동적 타입 언어의 정적 분석은 컴파일 시 객체의 타입을 알 수 없기 때문에, 절차 호출의 대상 등을 결정하는 것처럼 보이는 간단한 작업조차도 복잡한 과제입니다. 이 문제를 해결하기 위해 점진적 타이핑(gradual typing)이 동적 타입 언어에 점점 더 많이 추가되고 있으며, 이 중 대표적인 예가 JavaScript에 정적 타입을 도입한 TypeScript입니다. 점진적 타이핑은 프로그램 동작을 검증하는 개발자의 능력을 향상시키며, 안정성, 보안성 및 디버깅 용이성을 높이는 데 기여합니다. 그러나 실제로 사용자들은 직접적으로 타입 주석을 거의 사용하지 않습니다. 또한, 프로그램 크기가 커짐에 따라 전통적인 타입 추론은 성능 관련 문제를 겪습니다. 머신 러닝 기반의 통계적 기법은 더 빠른 추론을 제공하지만, 최근 접근 방식들이 전체적으로 정확도를 개선했음에도 불구하고 사용자가 정의한 타입에서는 가장 일반적인 내장 타입보다 크게 성능이 낮습니다. 이러한 문제로 인해 실제 활용성이 더욱 제한되는데, 이는 통계적 기법들이 사용자 인터페이스 애플리케이션과 거의 통합되지 않기 때문입니다.우리는 CodeTIDAL5라는 트랜스포머 기반 모델을 제안합니다. 이 모델은 신뢰할 수 있는 타입 주석 예측을 위해 훈련되었습니다. 효과적인 결과 검색 및 재통합을 위해 프로그램의 코드 속성 그래프에서 사용 사례 슬라이스(usage slices)를 추출합니다. 우리의 접근 방식을 최근의 신경망 기반 타입 추론 시스템들과 비교한 결과, ManyTypes4TypeScript 벤치마크에서 현재 최고 수준의 모델보다 7.85% 우수한 성능을 보였으며, 전체적으로 71.27%의 정확도를 달성했습니다. 또한, JoernTI라는 이름으로 Joern이라는 오픈 소스 정적 분석 도구에 우리의 접근 방식을 통합하여, 추가적인 타입 정보로부터 분석이 혜택받음을 입증하였습니다. 우리의 모델은 일반 CPU에서도 빠른 추론 시간을 제공하므로, Joern 통해 시스템을 제공함으로써 높은 접근성을 확보하고 보안 연구를 촉진할 수 있습니다.