Skip to main content
QUICK REVIEW

[논문 리뷰] TypeEvalPy: A Micro-benchmarking Framework for Python Type Inference Tools

Ashwin Prasad Shivarpatna Venkatesh, Samkutty Sabu|arXiv (Cornell University)|2023. 12. 28.
Software Engineering Research인용 수 4
한 줄 요약

TypeEvalPy는 18개의 카테고리에 걸쳐 154개의 코드 스니펫과 845개의 타입 애너테이션을 포함하는 표준화된 마이크로 벤치마킹 프레임워크로, 파이썬 타입 추론 도구를 평가하기 위한 것이다. 이 프레임워크는 도구들을 컨테이너화하고 출력을 정규화하며 정확도, 정밀도 등의 메트릭을 사용해 성능을 측정한다. 그 결과, 하이브리드 접근 방식인 HiTyper-DL은 순수 기계학습 방법보다 성능이 뛰어나지만, 타당성(soundsness)은 여전히 제한적이며, 최상위 도구들조차도 단지 44%의 타당성을 기록했다.

ABSTRACT

GitHub link: https://github.com/secure-software-engineering/TypeEvalPy A Micro-benchmarking Framework for Python Type Inference Tools 📌 Features: 📜 Contains 154 code snippets to test and benchmark. 🏷 Offers 845 type annotations across a diverse set of Python functionalities. 📂 Organized into 18 distinct categories targeting various Python features. 🚢 Seamlessly manages the execution of containerized tools. 🔄 Efficiently transforms inferred types into a standardized format. 📊 Automatically produces meaningful metrics for in-depth assessment and comparison. 🛠️ Supported Tools Supported ✅ In-progress 🔧 Planned 💡 HeaderGen Intellij PSI Llama 2 Jedi Pyre ChatGPT Pyright PySonar2 HiTyper Pytype Scalpel TypeT5 Type4Py 🏆 TypeEvalPy Leaderboard Below is a comparison showcasing exact matches across different tools, coupled with top_n predictions for ML-based tools. Rank 🛠️ Tool Top-n Function Return Type Function Parameter Type Local Variable Type Total 1 HeaderGen 1 186 56 322 564 2 Jedi 1 122 0 293 415 3 Pyright 1 100 8 297 405 4 HiTyper 135 163173175 273737 179225229 369435441 5 HiTyper (static) 1 141 7 102 250 6 Scalpel 1 155 32 6 193 7 Type4Py 135 39103109 193131 99167174 157301314 (Auto-generated based on the the analysis run on 20-10-23 14:51) 🐳 Running with Docker 1️⃣ Clone the repo git clone https://github.com/ashwinprasadme/TypeEvalPy.git 2️⃣ Build Docker image docker build -t typeevalpy . 3️⃣ Run TypeEvalPy 🕒 Takes about 30mins on first run to build Docker containers. 📂 Results will be generated in the results folder within the root directory of the repository. Each results folder will have a timestamp, allowing you to easily track and compare different runs. docker run \ -v /var/run/docker.sock:/var/run/docker.sock \ -v ./results:/app/results \ typeevalpy 🔧 Optionally, run analysis on specific tools: docker run \ -v /var/run/docker.sock:/var/run/docker.sock \ -v ./results:/app/results \ typeevalpy --runners headergen scalpel 🛠️ Available options: headergen, pyright, scalpel, jedi, hityper, type4py, hityperdl

연구 동기 및 목표

  • 파이썬 타입 추론 도구에 대한 통합적이고 재현 가능한 평가 프레임워크의 부족을 해결하기 위해.
  • 입력, 실행, 출력 형식을 표준화하여 타입 추론 도구 간의 직접적이고 공정한 비교를 가능하게 하기 위해.
  • 다양한 파이썬 언어 구조에서 최신 기술 도구들의 강점과 한계를 규명하기 위해.
  • 외부 타입 스텁과 하이브리드 기법이 추론 품질에 미치는 영향을 부각하기 위해.
  • 향후 파이썬 타입 추론의 타당성과 완전성 향상에 기초가 되는 기반을 제공하기 위해.

제안 방법

  • TypeEvalPy는 파이썬 3.10의 18개 언어 기능을 커버하는 154개의 마이크로 벤치마크를 통합하며, 각각은 타겟팅된 타입 애너테이션을 포함한다.
  • 도구들을 컨테이너화하여 고립되고 재현 가능한 실행 환경을 보장한다.
  • 번역 모듈은 도구의 출력을 일관된 타입 형식으로 정규화하여 일관된 비교를 가능하게 한다.
  • 정량적 평가를 위해 정확한 일치율, 정밀도, 재현율, 타당성 등의 핵심 메트릭을 계산한다.
  • 순수 정적 분석 도구와 기계학습 기반 도구를 모두 지원하며, 기계학습 모델의 경우 상위 $n$개의 예측도 포함한다.
  • 특정 추론 오류를 진단하기 위한 세부적인 불일치 분석을 가능하게 한다. 예를 들어, 잘못된 콜러블 타입 추론을 포함한다.

실험 결과

연구 질문

  • RQ1다양한 파이썬 언어 구조를 포괄하는 표준화된 세트에서 서로 다른 타입 추론 도구의 성능은 어떻게 되는가?
  • RQ2외부 타입 스텁과 하이브리드 접근 방식은 추론 정확도와 완전성에 얼마나 기여하는가?
  • RQ3왜 최상위 성능을 내는 도구들조차도 낮은 타당성을 보이는가? 그리고 타입 추론 오류의 주요 원인은 무엇인가?
  • RQ4정적 분석 도구와 기계학습 기반 도구는 함수 매개변수나 지역 변수와 같은 복잡한 구조를 다룰 때 어떻게 비교되는가?
  • RQ5특히 콜러블 타입과 함수 참조에 관해 타입 추론의 주요 실패 패턴은 무엇인가?

주요 결과

  • HeaderGen은 모든 평가된 도구 중에서 정확한 일치율, 타당성, 완전성에서 가장 높은 성능을 기록했다.
  • Pyright와 Jedi는 각각 두 번째와 세 번째로 높은 성능을 보였으며, 내장 기능과 외부 라이브러리 처리에서 뛰어난 성능을 보였다.
  • HiTyper-DL은 딥러닝과 정적 분석을 조합한 하이브리드 모델로, 순수 기계학습 기반 Type4Py를 초월했지만 여전히 44%의 타당성에 그쳤다.
  • HiTyper-DL의 딥러닝 구성 요소는 총 154개의 결과 중 단지 15개의 타당성 결과를 기여했으며, 이로 인해 103개의 스니펫에서 완전성이 크게 감소했다.
  • Jedi와 Pyright는 함수를 인수로 전달할 때 콜러블 타입을 반환 타입으로 잘못 추론하는 문제가 반복적으로 발생했으며, 각각 57건과 18건의 사례에서 나타났다.
  • Type4Py는 학습 데이터에 의존하고 보편화할 수 없어, 특히 클래스와 예외 처리에 대해 일반화 능력이 떨어져 성능이 열등했다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.