Kernekoncepter
JARVIS는 Python 프로그램의 확장 가능하고 정확한 애플리케이션 중심 호출 그래프를 구축한다. JARVIS는 함수 수준의 타입 추론을 통해 흐름에 민감한 분석을 수행하고, Python의 언어 기능을 더 잘 지원한다.
Resumé
이 논문은 Python 프로그램을 위한 확장 가능하고 정확한 애플리케이션 중심 호출 그래프 구축 방법을 제안한다.
- JARVIS는 애플리케이션 중심 호출 그래프 구축을 수행한다. 이를 통해 애플리케이션과 종속 라이브러리 간의 상호작용을 이해할 수 있으며, 불필요한 계산을 피할 수 있다.
- JARVIS는 함수 수준의 타입 그래프를 유지하여 흐름에 민감한 분석을 수행한다. 이를 통해 강한 업데이트를 수행하여 정확성을 높일 수 있다.
- JARVIS는 Python의 언어 기능을 더 잘 지원하여 호출 그래프의 정확성을 향상시킨다.
- 실험 결과, JARVIS는 PYCG 대비 시간 측면에서 최소 67% 향상, 정확도 측면에서 84% 향상, 재현율 측면에서 최소 20% 향상되었다.
Statistik
애플리케이션 코드(A.)는 5.0k~2.5k LOC이고, 전체 프로그램(W.)은 120.5k~515.3k LOC이다.
전체 프로그램에는 11.7k~30.0k 개의 함수가 포함되어 있다.
전체 프로그램은 190~237개의 종속 라이브러리를 포함한다.
Citater
"PYCG는 대규모 프로그램에 확장되지 않으며, 흐름에 민감하지 않고 Python의 기능을 완전히 지원하지 않아 정확성이 떨어진다."
"JARVIS는 애플리케이션 중심 호출 그래프 구축, 흐름에 민감한 타입 추론, Python 언어 기능에 대한 향상된 지원을 통해 확장성과 정확성을 개선한다."