Přístupnostní navigace
E-application
Search Search Close
Bachelor's Thesis
Author of thesis: Lukáš Pšeja
Acad. year: 2025/2026
Supervisor: Dr. Ing. Petr Peringer
Reviewer: doc. Mgr. Adam Rogalewicz, Ph.D.
This bachelor’s thesis modernizes the Code Listener infrastructure, which serves as an integration layer between compilers and static analyzers for C and C++ programs. It first analyzes the original architecture and identifies its main limitations, namely mandatory transformations and the tight coupling of analysis results with the internal program representation. Based on this analysis, the thesis designs and implements a new GCC plugin built around a compiler-independent CodeModel, lazily evaluated annotation services, a unified analyzer interface, and JSON export for offline processing. The solution preserves backward compatibility with Predator through an adapter that reconstructs the original callback stream from the new CodeModel. Correctness and practical viability were validated by native regression suites and by 1 192 Predator compatibility tests executed after rebuilds with GCC 12, 13, 14, and 15.
static analysis, C/C++, GCC plugin, GIMPLE, Code Listener, Predator, JSON serialization
Date of defence
16.06.2026
Result of the defence
Defended (thesis was successfully defended)
Grading
A
Process of defence
Student nejprve prezentoval výsledky, kterých dosáhl v rámci své práce. Komise se poté seznámila s hodnocením vedoucího a posudkem oponenta práce. Student následně odpověděl na otázky oponenta a na další otázky přítomných. Komise se na základě posudku oponenta, hodnocení vedoucího, přednesené prezentace a odpovědí studenta na položené otázky rozhodla práci hodnotit stupněm A.
Topics for thesis defence
Language of thesis
English
Faculty
Fakulta informačních technologií
Department
Department of Intelligent Systems
Study programme
Information Technology (BIT)
Composition of Committee
doc. Ing. Jan Kořenek, Ph.D. (předseda) doc. Ing. Ondřej Lengál, Ph.D. (místopředseda) Ing. Bohuslav Křena, Ph.D. (člen) Ing. Šárka Květoňová, Ph.D. (člen) Ing. David Bařina, Ph.D. (člen)
Supervisor’s reportDr. Ing. Petr Peringer
Student pracoval systematicky a samostatně, práci pravidelně konzultoval a jednoznačně prokázal schopnost analyzovat existující kód CodeListeneru a vytvořit nový podsystém s významným vylepšením nad rámec zadání (např. možnost analyzovat modulární programy). Proto navrhuji výborné hodnocení stupněm A.
Cílem této práce bylo vylepšení struktury a funkčnosti CodeListeneru s využitím moderního C++. Toto zadání považuji za náročnější, protože bylo nutné prostudovat existující implementaci CodeListeneru, rozhraní překladače GCC a návaznosti na verifikační nástroj Predator. S výsledkem jsem spokojen, nové rozhraní bude použitelné mimo jiné i jako základ pro podobnou inovaci nástroje Predator.
Kromě zadaných zdrojů si student vyhledával relevantní literaturu zcela samostatně.
Student byl po celou dobu řešení nadprůměrně aktivní, pravidelně informoval o průběhu práce. Postupoval systematicky a samostatně, pro zvýšení produktivity práce rozumným způsobem využil nástroje typu LLM. Na konzultace byl vždy připraven. Jeho přístup celkově hodnotím velmi kladně.
Text práce byl řádně a s předstihem konzultován. Většina mých připomínek byla do textu zapracována.
-
Grade proposed by supervisor: A
Reviewer’s reportdoc. Mgr. Adam Rogalewicz, Ph.D.
Jedná se o povedenou nadprůměrnou práci, která si zaslouží nadprůměrné hodnocení. Proto navrhuji hodnocení na hraně známky A-B. Při pěkné obhajobě doporučuji hodnotit známkou A.
Evaluation level: obtížnější zadání
V rámci zadání bylo třeba nastudovat a pochopit netriviální projekt Code-listener a jeho propojeni se statickým analyzátorem Predator.
Prezentační úroveň je výborná. Práce popisuje vše podstatné a nezabíhá do zbytečných detailů. Může posloužit jako referenční příručka pro další studenty, kteří budou pracovat s Predatorem a Code-listenerem.
Jako drobnou chybu považuji, že v obrázku 3.1 uvádí student komponentu "Core" a v textu popisuje "Code model".
Text je psán v angličtině a je bez problémů čitelný a pochopitelný. V rámci grafické úpravy mám akorát připomínku k několika obrázkům, které jsou větší, než by bylo vhodné (strana 14, 22).
Realizační výstup je plně funkční a může být využit jako náhrada code-listenera v rámci projektu Predator. V dokumentaci mi akorát chybí postup, jak projekt kompilovat a napojit na gcc, které není v systémových adresářích. V rámci původního Predatora bylo možné použít proměnnou HOST_GCC, která ale teď nefunguje. Bylo by prima, kdyby student doplnil návod o postup při použití nesystémového gcc.
Implementované řešení může být využito jako plnohodnotná náhrada projektu Code-listener. Nové řešení by mělo mít výrazně méně systémových závislostí, než původní projekt.
Evaluation level: zadání splněno
Evaluation level: je v obvyklém rozmezí
Bez připomínek.
Responsibility: Mgr. et Mgr. Hana Odstrčilová