bakalářská práce

Automatizovaná statická analýza s využitím GitHub Actions workflow

Autor práce: Bc. Jan Šuman

Ak. rok: 2022/2023

Vedoucí: Ing. Bohuslav Křena, Ph.D.

Oponent: Ing. Ondřej Vašíček

Abstrakt:

Cílem této práce je navrhnout a implementovat nástroj ve formě GitHub Actions workflow, který usnadňuje provádění statických analýz nad repozitáři v rámci webové služby GitHub a následně poskytuje výsledky těchto analýz ve formátu SARIF (Static Analysis Results Interchange Format). Práce nejprve poskytuje úvod do CI/CD (continuous integration a continuous delivery) platformy GitHub Actions a podrobněji se zabývá jejími základními komponentami. Následuje podrobné představení formátu SARIF, použitých statických analyzátorů a celkového konceptu implementace. Dále je uveden podrobný popis implementace, který umožňuje využití implementovaného workflow jak na úrovni repozitářů, tak na úrovni externích volání. V závěru je využití workflow demonstrováno na repozitářích poskytnutých společností Kyndryl.

Klíčová slova:

GitHub, Actions, workflow, GitHub Actions, Python, SARIF, Static Analysis Results Interchange Format, analýza, statická analýza, analyzátor, statický analyzátor

Termín obhajoby

13.06.2024

Práce bude zveřejněna

13.06.2027

Výsledek obhajoby

obhájeno (práce byla úspěšně obhájena)

znamkaDznamka

Klasifikace

D

Průběh obhajoby

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 D.

Otázky k obhajobě

  1. V čem z Vašeho pohledu spočívala obtížnost Vaší práce?
  2. Je výsledek Vaší práce aktuálně prakticky použitelný ve firmě Kyndryl a nebo by pro praktické nasazení byla ještě potřeba nějaká vylepšení?
  3. Používalo se už rozhraní Github Actions, nebo vůbec ne?

Jazyk práce

čeština

Fakulta

Ústav

Studijní program

Informační technologie (BIT)

Složení komise

prof. Ing. Tomáš Hruška, CSc. (předseda)
Ing. Šárka Květoňová, Ph.D. (člen)
Ing. Bohuslav Křena, Ph.D. (člen)
Ing. František Grézl, Ph.D. (člen)
Ing. Jiří Matoušek, Ph.D. (člen)

Posudek vedoucího
Ing. Bohuslav Křena, Ph.D.

Z pohledu vedoucího jsem byl se spoluprací se studentem spokojen. K hodnocení stupněm dobře (C) jsem se rozhodl, protože práce určitě patří mezi ty jednodušší, byť to, že student našel jednoduché řešení zadaného problému, je z praktického hlediska vlastně dobře. Asi bych si také dovedl představit důkladnější vyhodnocení implementovaného řešení.

Kritérium hodnocení Slovní hodnocení
Informace k zadání

Téma bakalářské pochází z praxe, konkrétně z firmy Kyndryl. Odhadnout obtížnost zadání při jeho formulaci bylo proto poměrně náročné. Nakonec se ukázalo, že zadání práce patří k těm jednodušším. Student tak mohl implementovat jako rozšíření například možnost ukládání výsledků statických analýz ve formátu HTML, která nakonec nebyla do zadání zahrnuta.

Práce s literaturou

Do práce studenta jsem s ohledem na to, že se jednalo o firemní zadání, nemusel příliš zasahovat. Kromě zdrojů, které jsou uvedeny v zadání, si student studijní materiály vyhledal samostatně nebo ve spolupráci s konzultantem či dalšími kolegy z Kyndrylu.

Aktivita během řešení, konzultace, komunikace

Aktivita studenta odpovídala tomu, že se jednalo o zadání z praxe. Veškeré mé požadavky (zejména na odevzdání a obhajobu semestrálního projektu) student splnil.

Aktivita při dokončování

Strukturu práce jsme diskutovali v průběhu celého jejího řešení. V závěrečných fázích jsem měl možnost sledovat dokončování technické zprávy prostřednictvím on-line editoru Overleaf. První ucelenou verzi práce jsem připomínkoval a student mé připomínky v odevzdané technické zprávě zohlednil.

Publikační činnost, ocenění

Zde si dovolím uvést hodnocení konzultanta Mgr. René Michálka z firmy Kyndryl, které jsem si vyžádal, dokládající význam a užitečnost práce:

Jan Šuman se ve společnosti Kyndryl zaměřuje na aplikovaní statických analýz kódu v sw řešeních na bázi Ansible. Statické analýzy kódu se také využívají v certifikačním procesu, pomocí kterého se vyhodnocuje, zda dané řešení splňuje požadované kvalitativní parametry. Informace o tom, zda dané řešení dosáhlo certifikace, je důležitou informací pro potenciálního uživatele, která pomáhá v rozhodování o nasazení řešení na příslušného zákazníka.

Vzhledem k tomu, že průběžně vzniká obrovské množství nových řešení, resp. stávající řešení se vyvíjí ve formě nových verzí a zároveň se rozvíjejí kvalitativní požadavky, čelíme problému, jak rozumně
zpracovat rostoucí množství informací pro vyhodnocování podkladů pro certifikace.

Práce Jana Šumana významně pomůže s konsolidací zmíněných podkladů do jednoho standardizovaného formátu SARIF, což otevírá cestu integrace s dalšími nástroji, které tento standard podporují a které mohou nabídnou služby vhodné pro začlenění do stávajícího certifikačního procesu. Výsledky práce budou dále využívány i jednotlivými vývojáři pro spouštění statických analýz a poskytování výsledků v unifikovaném SARIF souboru.

 

Výsledný počet bodů navržený vedoucím: 77

Známka navržená vedoucím: C

Posudek oponenta
Ing. Ondřej Vašíček

Práce byla jednodušší, obsahuje prominutelné nedostatky z pohledu citační etiky a pohybuje se na hranici minimálního rozsahu textu, především vzhledem k povaze textu v kapitole o implementaci.


Nicméně zadání bylo splněno, text práce je dobře pochopitelný, programový výstup je funkční a firma Kyndryl plánuje výsledek práce prakticky použít.

Kritérium hodnocení Slovní hodnocení Body
Náročnost zadání

Stupeň hodnocení: méně obtížné zadání

Práce byla zadána firmou Kyndryl. Zadání ale považuji za poměrně jednoduché. Nejobtížnější částí bylo pravděpodobně seznámení se s tím, jak se pracuje s GitHub actions a workflows.

Rozsah splnění požadavků zadání

Stupeň hodnocení: zadání splněno

Zadání bylo jednodušší, nicméně bylo zcela splněno. Řešení neobsahuje rozšíření nad rámec zadání. 

Rozsah technické zprávy

Stupeň hodnocení: splňuje pouze minimální požadavky

Práce má bez obrázků a výpisů kódu 35 normostran. Většina kapitoly o implementaci navíc popisuje zbytečné implementační detaily, které by v práci být neměly. Práci bych tedy považoval jako hraničně splňující minimální požadavky rozsahu. 

Prezentační úroveň technické zprávy

Pochopitelnost práce pro čtenáře je dobrá.

Výhrady mám ke kapitole o implementaci, jejíž většina se věnuje podrobným implementačním detailům. Myšlenkový tok kapitoly spočívá v ukázání části zdrojového kódu ve formě výpisu a následném vysvětlení onoho kódu. Místy je zdrojový kód vysvětlován řádek po řádku včetně importů, zpracování argumentů skriptu, popis cyklu a jeho indexování, vysvětlení použití "try catch" bloku a dalších. 

60
Formální úprava technické zprávy

Z typografické stránky chybí na řadě míst nezlomitelné mezery. Dále číslování řádků ve výpisech přetéká levý okraj textu. Místy jsou špatně vysázeny parametry skriptů (např. "--" na straně 23). Jinak je typografie v pořádku. 

Z jazykového hlediska se na pár místech práce blíží k hranici spisovnosti. Také by bylo lepší se vyhnout použití anglických verzí pojmů, které mají vhodný překlad (například "branche" místo "větve" v kontextu GitHub).

70
Práce s literaturou

V kapitole č. 2 (použité technologie) mě zaskočilo, že téměř každý odstavec je zakončen citací (tj. odkazem na zdroj). V prvních dvou třetinách této kapitoly, které se věnují popisu GitHub Actions a standardu SARIF, jsem proto identifikoval několik souvětí (asi 12 v hustotě jedno až dvě na odstavec), která jsou po překladu doslovně stejná s citovaným textem. Tato převzatá souvětí, ale nejsou jasně odlišena od ostatního textu a není tedy jasné, které části textu byly převzaty doslovně a které jen volně. Nicméně zdroje jsou alespoň nějakým způsobem uvedeny.

Obrázek 2.1 byl převzat z jednoho ze zdrojů, ale tato skutečnost není nikde jasně uvedena. 

Příklady SARIF logů, především výpis 2.3, byly také převzaty z jednoho ze zdrojů a drobně upraveny. Toto ale opět není v práci nikde uvedeno.

60
Realizační výstup

Realizační výstup splnil zadání a byl otestován na reálných repozitářích firmy Kyndryl.

80
Využitelnost výsledků

Práce byla zadána společností Kyndryl a očekává se praktické použití jejího výstupu.

Otázky k obhajobě:
  1. V čem z Vašeho pohledu spočívala obtížnost Vaší práce?
  2. Je výsledek Vaší práce aktuálně prakticky použitelný ve firmě Kyndryl a nebo by pro praktické nasazení byla ještě potřeba nějaká vylepšení?
Výsledný počet bodů navržený oponentem: 65

Známka navržená oponentem: D

Důvod odložení zveřejnění

Zveřejnění bakalářské práce je v souladu s ustanovením § 47b odst. 4 zákona č. 111/1998 Sb., o vysokých školách a o změně a doplnění dalších zákonů (zákon o vysokých školách), ve znění pozdějších předpisů, odloženo o 3 roky. Důvodem odložení zveřejnění je ochrana duševního vlastnictví a skutečnost, že bakalářská práce obsahuje obchodní tajemství ve smyslu příslušných ustanovení zákona č. 89/2012 Sb., občanského zákoníku.