Analysing Pareci
Summary
Bugs in Pareci programs are often only found when the application is run. Another issue is that it is also easy to have many database queries, without the developer being fully aware of them. Using static data flow analysis we can find out many of these issues before we run the program and thereby reducing runtime errors and superfluous database queries.
This thesis describes what Pareci is, what its computational power is and how to parse it into a form to do program flow analysis on. We define how to create a Monotone Framework instance for Pareci, which is used to run analyses using a maximal fixed point worklist algorithm. We define three analyses that help respectively identify unresolvable bindings, superfluous database queries and incoherent variable type usage.