Towards More Sophisticated Static Analysis Methods of Python Programs
Hristina Gulabovska, Zoltán Porkoláb · 2019
Static analysis is a software verification method which is analyzing the source code without executing it for detecting code smells and possible software bugs. Various analysis methods have been successfully applied for languages with static type system, such as C, C++ and Java. Python is an important programming language with dynamic type system, used in many emerging areas, including data science, machine learning and web applications. The dynamic behavior of the Python language requires different static analysis approaches compared to the ones with static type system. In this paper we overview these methods and investigate their advantages and shortages. We compare the symbolic execution with the generally used Abstract Syntax Tree based approach and show its advantages based on concrete examples. We also highlight the restrictions of current tools and suggest further research directions to tackle these problems.