Context-Sensitive Abstract Interpretation of Dynamic Languages

Fuente: arXiv
Gespeichert in:
Bibliographische Detailangaben
1. Verfasser: Piszcz, Franciszek
Format: Preprint
Veröffentlicht: 2024
Schlagworte:
Online-Zugang:
Tags: Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
_version_ 1866929230362705920
author Piszcz, Franciszek
author_facet Piszcz, Franciszek
contents There is a vast gap in the quality of IDE tooling between static languages like Java and dynamic languages like Python or JavaScript. Modern frameworks and libraries in these languages heavily use their dynamic capabilities to achieve the best ergonomics and readability. This has a side effect of making the current generation of IDEs blind to control flow and data flow, which often breaks navigation, autocompletion and refactoring. In this thesis we propose an algorithm that can bridge this gap between tooling for dynamic and static languages by statically analyzing dynamic metaprogramming and runtime reflection in programs. We use a technique called abstract interpretation to partially execute programs and extract information that is usually only available at runtime. Our algorithm has been implemented in a prototype analyzer that can analyze programs written in a subset of JavaScript.
format Preprint
id arxiv_https___arxiv_org_abs_2401_18029
institution arXiv
publishDate 2024
record_format arxiv
spellingShingle Context-Sensitive Abstract Interpretation of Dynamic Languages
Piszcz, Franciszek
Programming Languages
Logic in Computer Science
Software Engineering
There is a vast gap in the quality of IDE tooling between static languages like Java and dynamic languages like Python or JavaScript. Modern frameworks and libraries in these languages heavily use their dynamic capabilities to achieve the best ergonomics and readability. This has a side effect of making the current generation of IDEs blind to control flow and data flow, which often breaks navigation, autocompletion and refactoring. In this thesis we propose an algorithm that can bridge this gap between tooling for dynamic and static languages by statically analyzing dynamic metaprogramming and runtime reflection in programs. We use a technique called abstract interpretation to partially execute programs and extract information that is usually only available at runtime. Our algorithm has been implemented in a prototype analyzer that can analyze programs written in a subset of JavaScript.
title Context-Sensitive Abstract Interpretation of Dynamic Languages
topic Programming Languages
Logic in Computer Science
Software Engineering
url https://arxiv.org/abs/2401.18029