Static Analysis by Abstract Interpretation of Dynamic Programming Languages

Abstract

Dynamic programming languages are increasingly popular, due to their powerful, high-level syntax, their flexibility and the presence of numerous libraries. Examples of dynamic programming languages include JavaScript and Python, both standing in the top 3 languages most used on Github. When analyzing programs statically (i.e, without executing the real program) to find bugs however, it is more difficult to work on such programming languages: a lot of information (such as types of values) is implicit, and only discovered at runtime. The goal of my PhD is to develop such analyses for Python programs using the framework of abstract interpretation. My work is currently focused on discovering type information for Python programs. Future work aims at developing new approaches to analyze real-world Python programs, by performing modular interprocedural analyses, inferring library calls orders, generating stubs automatically and performing multilingual analyses. This talk includes a brief introduction to Python from a PL perspective, and will focus on ongoing and future work.

Date
23/10/18