Thesis (Selection of subject)Thesis (Selection of subject)(version: 368)
Thesis details
   Login via CAS
Debugging Support for Static Analysis Library WALA
Thesis title in Czech: Podpora ladění ve knihovně WALA pro statickou analýzu
Thesis title in English: Debugging Support for Static Analysis Library WALA
Key words: statická analýza|ladění|funkce přechodu|T. J. Watson Libraries for Analysis|WALA|Debug Adapter Protocol|rozšíření VS Code
English key words: static analysis|debugging|transfer functions|T. J. Watson Libraries for Analysis|WALA|Debug Adapter Protocol|VS Code extension
Academic year of topic announcement: 2019/2020
Thesis type: diploma thesis
Thesis language: angličtina
Department: Department of Distributed and Dependable Systems (32-KDSS)
Supervisor: doc. RNDr. Pavel Parízek, Ph.D.
Author: Mgr. Filip Havel - assigned and confirmed by the Study Dept.
Date of registration: 08.04.2020
Date of assignment: 21.05.2020
Confirmed by Study dept. on: 02.06.2020
Date and time of defence: 29.06.2021 09:00
Date of electronic submission:21.05.2021
Date of submission of printed version:21.05.2021
Date of proceeded defence: 29.06.2021
Opponents: doc. RNDr. Jan Kofroň, Ph.D.
 
 
 
Guidelines
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 client 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 typically written into a log file that can be analyzed offline. However, 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. Another problem for developers is the need to write a large amount of adhoc source code for printing log messages.

The goal of this project is to design and implement practically useful debugging support for (1) the static analysis library WALA and (2) client static analyses built using the library. An important part of the solution would be an API for monitoring the run of static analysis 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 monitoring and debugging API should allow developers to inspect the data flow values associated with nodes in the control-flow graph at specific points during the analysis computation. The implemented tool will support especially the basic data flow analyses (solver), but also some of the following common static analyses: class hierarchy construction, call graph building, pointer analysis, and the SSA IR builder. In addition, the tool should provide support for highly configurable and flexible user-defined filtering of recorded information.
References
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. https://github.com/Sable/soot/wiki/Running-Soot-as-Eclipse-Plugin
3. E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1994.
 
Charles University | Information system of Charles University | http://www.cuni.cz/UKEN-329.html