Debugging Support for Static Analysis Library
|Thesis title in Czech:||Podpora ladění ve knihovně pro statickou analýzu|
|Thesis title in English:||Debugging Support for Static Analysis Library|
|Academic year of topic announcement:||2018/2019|
|Type of assignment:||diploma thesis|
|Department:||Department of Distributed and Dependable Systems (32-KDSS)|
|Supervisor:||RNDr. Pavel Parízek, Ph.D.|
|Implementing static analyses using libraries such as WALA is difficult because there is very little debugging support.
Developers typically use logging of plain text messages at many places in their implementation of a static analysis.
A log message contains, for example, (1) the source code location corresponding to the current node in a control-flow graph and (2) a complete snapshot of the current data-flow information associated with the node.
Messages are printed on the standard output or written into a log file.
Log files generated in this way can be too large for manual inspection by a developer who needs to find the root cause of some error.
The goal of this work is to design and implement debugging support for the static analysis library WALA.
An important part of the solution would be an API for monitoring the static analysis during its run and notifying registered listeners about specific events on demand.
Relevant events could be, for example, application of the transfer function defined for a specific bytecode instruction and update of the data-flow information for a particular node in the control-flow graph.
The proposed debugging API should also allow developers to inspect the data flow values associated with nodes in the control-flow graph at specific points during the analysis computation.
The debugger will target especially the inter-procedural data flow analyses (solver), but also some of the following common static analyses: call graph construction, pointer analysis, and the SSA IR builder.
One of the main benefits for the developers of custom static analyses would be that the implementation does not have to contain so much code for printing log messages anymore.
|1. WALA: T.J. Watson Libraries for Analysis. http://wala.sourceforge.net/wiki/index.php/Main_Page
2. Eclipse Plugin for the Soot Java Optimization Framework. http://www.sable.mcgill.ca/soot/eclipse/
3. E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1994.