Debugging Support for Static Analysis Library WALA
Název práce v češtině: | Podpora ladění ve knihovně WALA pro statickou analýzu |
---|---|
Název v anglickém jazyce: | Debugging Support for Static Analysis Library WALA |
Klíčová slova: | statická analýza|ladění|funkce přechodu|T. J. Watson Libraries for Analysis|WALA|Debug Adapter Protocol|rozšíření VS Code |
Klíčová slova anglicky: | static analysis|debugging|transfer functions|T. J. Watson Libraries for Analysis|WALA|Debug Adapter Protocol|VS Code extension |
Akademický rok vypsání: | 2019/2020 |
Typ práce: | diplomová práce |
Jazyk práce: | angličtina |
Ústav: | Katedra distribuovaných a spolehlivých systémů (32-KDSS) |
Vedoucí / školitel: | doc. RNDr. Pavel Parízek, Ph.D. |
Řešitel: | Mgr. Filip Havel - zadáno a potvrzeno stud. odd. |
Datum přihlášení: | 08.04.2020 |
Datum zadání: | 21.05.2020 |
Datum potvrzení stud. oddělením: | 02.06.2020 |
Datum a čas obhajoby: | 29.06.2021 09:00 |
Datum odevzdání elektronické podoby: | 21.05.2021 |
Datum odevzdání tištěné podoby: | 21.05.2021 |
Datum proběhlé obhajoby: | 29.06.2021 |
Oponenti: | doc. RNDr. Jan Kofroň, Ph.D. |
Zásady pro vypracování |
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. |
Seznam odborné literatury |
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. |