Autor práce: Bc. Vojtěch Dvořák
Ak. rok: 2022/2023
Vedoucí: Ing. Dominika Regéciová
Oponent: doc. Dr. Ing. Dušan Kolář
Abstrakt:Hlavním cílem této bakalářské práce je navrhnout a implementovat programovou knihovnu, jež umožní inkrementální statickou analýzu jazyka YARA. Jedním z hlavních účelů této nové knihovny je integrace s open-source projektem Yara Language Server, který vyvíjí firma Avast. Oproti dosavadnímu řešení, jež využívá neinkrementální přístup k analýze, by mělo dojít ke snížení nároků na strojový čas. Kromě informací o programovém řešení je součástí této práce rovněž souhrn teorie zaměřující se na statickou analýzu a její inkrementální variantu, zásadní informace o nástroji YARA a také seznámení s dosavadním řešením, s knihovnou Yaramod-v3. Dále je v práci zahrnuto také srovnání nové knihovny s tímto dosavadním řešením, v němž jsou prezentovány dosažené výsledky. Provedené experimenty ukázaly, že nová knihovna je schopná provést inkrementální analýzu modifikované sady pravidel přibližně 20× – 2000× rychleji v závislosti na konkrétní sadě.
Klíčová slova:inkrementální statická analýza, jazyk YARA, integrované vývojové prostředí, IDE, YLS, LSP, Yaramod, LR syntaktická analýza, sémantická analýza, lexikální analýza, textový editor, tree-sitter, visitor, linting, Avast
obhájeno (práce byla úspěšně obhájena)
znamkaAznamka
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.
Informační technologie (BIT)
doc. Dr. Ing. Dušan Kolář (předseda)
doc. Dr. Ing. Otto Fučík (člen)
Ing. František Grézl, Ph.D. (člen)
Ing. Ivana Burgetová, Ph.D. (člen)
Ing. Martin Hrubý, Ph.D. (člen)
Student se seznámil s problematikou inkrementálních parserů a jejich použití pro analýzu zdrojových kódů v textových editorech a integrovaných vývojových prostředích.
Navrhl a implementoval knihovnu, která umožnuje statickou analýzu jazyka YARA za využití algoritmu pro inkrementální parsování, a která je již nyní aktivně používaná ve společnosti Gen.
Výsledek student otestoval a porovnal s předchozí verzí řešení, u čehož bylo zjištěno výrazné zrychlení analýzy. Řešení bude rovněž zveřejněno jako open-source projekt.
K práci přistupoval aktivně a samostatně. Z těchto důvodů navrhuji hodnocení za A.
Kritérium hodnocení |
Slovní hodnocení |
Informace k zadání |
Zadání považuji za náročnější. Student si musel nastudovat teorii inkrementálních parserů a jejich použití pro analýzu zdrojových kódů v textových editorech a integrovaných vývojových prostředích (IDE).
Student se rovněž musel seznámit s již existujícími systémy společnosti a stejně tak open-source nástroji, aby mohl navrhnout a implementovat řešení pro knihovnu za použití inkrementálního parsování.
Zadání pak bylo splněno ve všech bodech. |
Práce s literaturou |
Student si hledal zdroje informací aktivně sám. Čerpal především z technických dokumentací, ale i odborných publikací. Řádně citoval a odkazoval se na použité zdroje. |
Aktivita během řešení, konzultace, komunikace |
Student pracoval na zadání hned od začátku, dodržoval dohodnuté termíny. Práci pravidelně konzultoval, jak se mnou, tak odborným konzultantem. K práci přistupoval aktivně a přecházel s originálními řešeními problémů. |
Aktivita při dokončování |
Práce, především realizační část, byla dokončena v předstihu. Finální podoba byla dostatečně konzultována. |
Publikační činnost, ocenění |
Výsledky práce studenta budou zveřejněny jako součást open-source projektu Yaramod. |
Výsledný počet bodů navržený vedoucím:
96
Zobrazit víceZnámka navržená vedoucím: A
Práce měla jistě velký potenciál, ale dle mého chyběly síly na posledních pár metrech před cílem. Například by mě zajímalo, proč je použita GLR, když gramatika určitě může být jednoznačná? Taky
to, proč je iniciační analýza tak pomalá? Kde je nějaké zdůvodnění kroků při řešení, experimenty, apod. Dojem hodně kazí, že kód odevzdaný v IS nelze podle návodu sestavit. Náročnější práci, pěkně zpracovanou tak nelze hodnotit jako vynikající.
Kritérium hodnocení |
Slovní hodnocení |
Body |
Náročnost zadání |
Stupeň hodnocení: obtížnější zadání Zadání hodnotím jako obtížnější, neboť bylo třeba nastudovat techniky částečného rozkladu programovacího jazyka a techniky a nástroje spojené s touto tehcnologií, což je nad rámec bakalářského studia. |
|
Rozsah splnění požadavků zadání |
Stupeň hodnocení: zadání splněno |
|
Rozsah technické zprávy |
Stupeň hodnocení: je v obvyklém rozmezí Text je sice v obvyklém rozmezí, ale někde působí rozvláčně (úvodní partie), jinde zase informačně chudě (konec práce). |
|
Prezentační úroveň technické zprávy |
Kapitoly na sebe sice navazují, ale někde je text až populárně-naučný, jinde zase něco chybí, nebo jsme odkazováni na soubory v příloze (např. testování). |
85 |
Formální úprava technické zprávy |
Po formální stránce je práce úpravná, jen s drobnými překlepy a 2 systematickými chybami (např. "ladící" místo "ladicí", nebo "řídící" místo "řídicí"). |
90 |
Práce s literaturou |
Volba pramenů je vhodná pro daný typ práce. |
90 |
Realizační výstup |
Ač jsem postupoval podle návodu, v čerstvé instalaci aktuálního Kubuntu, tak tree-sitter se sice podařilo sestavit, základní testy proběhly, ale náročné testy dept_test.py selhaly. Hlavní program se nepodařilo sestavit vůbec (cmake v pohodě, make spadl na chybu). Komentované jsou jen halvičkové soubory, ostatní mají jen hlavičku s autorem. |
50 |
Využitelnost výsledků |
Dle vyjádření výsledků je programová sestava funkční, takže je na pracovišti běžně využívána. |
|
Výsledný počet bodů navržený oponentem:
80
Zobrazit víceZnámka navržená oponentem: B
Odpovědnost: Mgr. et Mgr. Hana Odstrčilová