Static Analysis of Dynamic Languages

Research output: Book/anthology/dissertation/reportPh.D. thesis


Dynamic programming languages are highly popular and widely used. Java-
Script is often called the lingua franca of the web and it is the de facto standard
for client-side web programming. On the server-side the PHP, Python and
Ruby languages are prevalent. What these languages have in common is
an expressive power which is not easily captured by any static type system.
These, and similar dynamic languages, are often praised for their ease-of-use
and flexibility. Unfortunately, this dynamism comes at a great cost: The lack of
a type system implies that most errors are not discovered until run-time. Thus,
in the worst-case, these bugs are not uncovered before they are encountered
by real users of the system. A further cost is limited tool support: For instance,
integrated development environments with code completion, code navigation
and automatic refactorings are widely available for languages with static type
systems, such as Java and C# , but the same features are rarely available for
dynamic languages such as JavaScript.

The aim of this thesis is to investigate techniques for improving the tool-
support for dynamic programming languages without imposing any artificial
restrictions on the behaviour of these languages. A common theme is the
reliance on static program analysis to over-approximate the behaviour of
programs written in these languages. Specifically, the use of whole-program
dataflow analysis. The research challenge of this line of work is the adaption
of existing- and invention of new dataflow analysis techniques to tackle the
nature of dynamic programming languages.
Original languageEnglish
PublisherDepartment of Computer Science, Aarhus University
Number of pages236
Publication statusPublished - 3 Mar 2015

    Research areas

  • static analysis, dynamic languages

See relations at Aarhus University Citationformats

Download statistics

No data available

ID: 85299429