Extrakce grafu toku řízení z bajtkódu Java - Sečkařová, Petra (Vysoké učení technické v Brně. Fakulta informačních technologií, 2017)
Grafy toku řízení (Control Flow Graph -- CFG) slouží jako základ pro mnoho analýz vyhodnocujících kvalitu programu. Takovou analýzou je i testování založené na modelech (model-based testing), které na základě analýzy modelu kódu, např. grafu, generuje testovací případy. Aby bylo možné tuto analýzu provádět co nejobecněji, je vhodné, aby instrukce obsažené v CFG patřily do některé z obecných instrukčních sad.Tato práce se zabývá extrakcí grafů toku řízení z bajtkódu jazyka Java a následným překladem jednotlivých instrukcí bajtkódu uvnitř základních bloků do instrukční sady LLVM IR. Výsledný program dokáže spolehlivě získat grafy toku řízení z programů v jazyce Java zadaných v jakékoli z nejběžnějších forem pro šíření tohoto typu software (.jar archiv, .java nebo .class soubory). Grafy na výstupu jsou navíc koncipovány tak, aby nad nimi bylo možné provádět analýzu za účelem generování jednotkových testů.

The most of the analyses evaluating the quality of code are derived from Control Flow Graphs -- CFG. Model-based testing as one of them uses paths found in CFG for generation of test cases. To ease use of a general analysis of CFG, there is a need for CFG to contain instructions of some general instruction set. This work deals with extraction of control flow graphs from Java bytecode, followed by a translation of the instructions inside basic blocks into LLVM IR set. The resulting program is able to reliably extract control flow graphs from a Java program, given in any of its casual forms (.jar archive, .java or .class file). In addition to that, the graphs on output are assembled so, that they can be analyzed in order to generate unit tests.
Extraction of Control Flow Graph from Java Bytecode
Keywords: bajtkód jazyka Java; graf toku řízení; analýza; LLVM IR; Java bytecode; control flow graph; analysis; LLVM IR