Titelaufnahme
Titelaufnahme
- TitelAdvances in Python Call-Graph Construction and Type Inference: A Benchmark-Driven Approach / Ashwin Prasad Shivarpatna Venkatesh ; Thesis Supervisor: Prof. Dr. Eric Bodden
- Autor
- Gutachter
- Erschienen
- Umfang1 Online-Ressource (xiv, 119 Seiten) : Diagramme, Illustrationen
- HochschulschriftUniversität Paderborn, Dissertation, 2026
- AnmerkungTag der Verteidigung: 21.04.2026
- Verteidigung2026-04-21
- SpracheEnglisch
- DokumenttypDissertation
- Schlagwörter (GND)
- URN
- DOI
Links
- Social MediaShare
- Nachweis
- IIIF
Dateien
Klassifikation
Zusammenfassung
Das rasante Wachstum von Data Science und maschinellem Lernen hat Python zu einer zentralen Sprache in der modernen Forschung gemacht, insbesondere in rechnergestützten Umgebungen wie Jupyter Notebooks. Während diese Notebooks die Exploration erleichtern, führt ihre interaktive Natur häufig zu unstrukturiertem und undokumentiertem Code, der die Reproduzierbarkeit und das Verständnis erschwert. Verschärft wird dieses Problem dadurch, dass bestehende Werkzeuge zur Codenavigation und Refaktorierung vor allem auf statischer Analyse beruhen. Diese Methoden haben jedoch Schwierigkeiten mit der dynamischen Natur von Python und erzielen oft zu geringe Präzisions- und Recall-Werte für einen praktischen Einsatz. Diese Dissertation begegnet diesen Herausforderungen durch die Einführung neuartiger Ansätze der statischen Analyse sowie systematischer Benchmarking-Frameworks für Python und ermöglicht damit letztlich die semantische Strukturierung von Notebooks, die verlässliche Evaluation von Typinferenzsystemen und eine kritische Analyse von Large Language Models (LLMs) für Aufgaben der statischen Analyse.Um dem Mangel an Struktur in Notebooks zu begegnen, entwickeln wir eine heuristikbasierte Call-Graph-Analyse für Python, die das besondere Verhalten von Machine-Learning-Bibliotheken modelliert und Typannotationen aus externen Abhängigkeiten nutzt. Auf Grundlage dieses erweiterten Codeverständnisses führen wir HeaderGen ein, ein Werkzeug, das undokumentierte Jupyter Notebooks automatisch in navigierbare, semantisch bezeichnete Narrative segmentiert. Unsere Evaluation mit realen Notebooks zeigt, dass die zugrunde liegende Analyse sowohl für die Konstruktion von Call Graphs als auch für die Klassifikation von Notebook-Zellen entsprechend ihrer semantischen Rolle im Machine-Learning-Workflow hohe Präzisions- und Recall-Werte erzielt. Darüber hinaus bestätigt eine Nutzerstudie, dass die resultierende Struktur das Codeverständnis und die Navigation für Data-Science-Praktiker deutlich beschleunigt.Über die Entwicklung einzelner Werkzeuge hinaus erfordert der Fortschritt des Fachgebiets verlässliche Methoden zur Messung der Fähigkeiten der zugrunde liegenden Analysetechniken; die aktuelle Evaluationslandschaft ist jedoch fragmentiert und stützt sich auf nicht verifizierte Datensätze. Um diese Lücke zu schließen, führen wir TypeEvalPy ein, ein umfassendes Benchmarking-Framework für Python-Typinferenz mit 154 Testfällen, das eine kontrollierte Umgebung mit manuell kuratierten Codefragmenten und verifizierter Ground Truth bereitstellt. Unsere empirische Studie von sechs repräsentativen Werkzeugen zeigt erhebliche Leistungsunterschiede. Während HeaderGen die ausgewogensten Ergebnisse aufweist, überzeugen Open-Source-Werkzeuge wie \emph{Pyright} durch ihre Integration in das Ökosystem, zeigen jedoch keine konsistente Leistung über verschiedene Szenarien hinweg. Im Gegensatz dazu zeigen lernbasierte und hybride Systeme, dass probabilistische Vorhersagen die statische Analyse ergänzen können; sie bleiben jedoch weiterhin durch ihre Trainingsverteilungen eingeschränkt.Schließlich erweitern wir, im Bewusstsein des Paradigmenwechsels hin zu generativer KI, unsere rigorose Evaluationsmethodik, um die Fähigkeiten von LLMs zu bewerten. Um die Generalisierbarkeit einem Stresstest zu unterziehen, erweitern wir TypeEvalPy um eine Engine zur automatischen Generierung, die den Benchmark auf 7.121 Testfälle skaliert, und führen SWARM-CG ein, eine mehrsprachige Suite für die Call-Graph-Analyse. Unsere Evaluation von 24 LLMs zeigt eine divergierende Leistungsfähigkeit: LLMs sind bei der Typinferenz stark, haben jedoch Schwierigkeiten bei der Konstruktion von Call Graphs, einem Bereich, in dem traditionelle Analysatoren weiterhin überlegen sind. Diese Ergebnisse legen nahe, dass die Zukunft von Python-Werkzeugen nicht in einer Ersetzung, sondern in einer hybriden Integration liegt, bei der statische Analyse die strukturelle Grundlage liefert, die lernbasierten Methoden typischerweise fehlt.
Abstract
The rapid growth of data science and machine learning has made Python a central language in modern research, particularly in computational environments such as Jupyter Notebooks.While these notebooks facilitate exploration, their interactive nature often leads to unstructured and undocumented code that hinders reproducibility and comprehension.Compounding this issue, existing tools for code navigation and refactoring primarily rely on static analysis. However, these methods struggle with Python's dynamic nature, often yielding precision and recall rates that are too low for practical application.This dissertation addresses these challenges by introducing novel static analysis approaches and systematic benchmarking frameworks for Python, ultimately facilitating the semantic structuring of notebooks, reliable evaluation of type inference systems, and a critical analysis of Large Language Models (LLMs) for static analysis tasks.To address the lack of structure in notebooks, we develop a heuristics-based call-graph analysis for Python that models the unique behavior of machine-learning libraries and leverages type hints from external dependencies. Using this enhanced code understanding, we introduce HeaderGen, a tool that automatically segments undocumented Jupyter Notebooks into navigable, semantically labeled narratives.Our evaluation on real-world notebooks demonstrates that the underlying analysis achieves high precision and recall for both call-graph construction and the classification of notebook cells according to their semantic role in the machine-learning workflow.Furthermore, a user study confirms that the resulting structure significantly accelerates code comprehension and navigation for data-science practitioners.Beyond the development of individual tools, advancing the field requires reliable methods to measure the capabilities of underlying analysis techniques, yet the current evaluation landscape remains fragmented and reliant on unverified datasets.To address this gap, we introduce TypeEvalPy, a comprehensive benchmarking framework for Python type inference with 154 test cases that provides a controlled environment with manually curated code snippets and verified ground truth.Our empirical study of six representative tools reveals significant performance variations. While HeaderGen exhibits the most balanced results, open-source tools such as \emph{Pyright} excel in ecosystem integration but lack consistency across scenarios. Conversely, learning-based and hybrid systems demonstrate that probabilistic predictions can augment static analysis, however, they still remain constrained by training distributions.Finally, recognizing the paradigm shift towards generative AI, we extend our rigorous evaluation methodology to assess the capabilities of LLMs. To stress-test generalizability, we augment TypeEvalPy with an auto-generation engine that scales the benchmark to 7,121 test cases and introduce SWARM-CG, a multi-language suite for call-graph analysis.Our evaluation of 24 LLMs reveals a performance divergence: LLMs excel at type inference but struggle with call-graph construction, an area where traditional analyzers remain superior.These results suggest that the future of Python tooling lies not in replacement, but in a hybrid integration where static analysis provides the structural foundation that learning-based methods typically lack.
Statistik
- Das PDF-Dokument wurde 10 mal heruntergeladen.
Lizenz-/Rechtehinweis

