Bachelor's Thesis

Automated Static Analysis as a GitHub Actions Workflow

Author of thesis: Bc. Jan Šuman

Acad. year: 2022/2023

Supervisor: Ing. Bohuslav Křena, Ph.D.

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

Abstract:

The primary objective of this thesis is to design and implement a tool in the form of a GitHub Actions workflow, which facilitates the execution of static analyses on repositories within the GitHub web service, and subsequently delivers the results of these analyses in the SARIF format (Static Analysis Results Interchange Format). Initially, the thesis provides an introduction to the CI/CD (continuous integration and continuous delivery) platform, GitHub Actions, and elaborates on its fundamental components. Subsequently, an in-depth examination of the SARIF format, the employed static analyzers, and the overarching implementation design is presented. Furthermore, a comprehensive description of the implementation is provided, enabling the utilization of the implemented workflow at both repository and external call levels. In conclusion, the practical application of the workflow is exemplified through its deployment on repositories furnished by the Kyndryl corporation.

Keywords:

GitHub, Actions, workflow, GitHub Actions, Python, SARIF, Static Analysis Results Interchange Format, analysis, static analysis, analyzer, static analyzer

Date of defence

13.06.2024

Date of publish

13.06.2027

Result of the defence

Defended (thesis was successfully defended)

znamkaDznamka

Grading

D

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

Topics for thesis defence

  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?

Language of thesis

Czech

Faculty

Department

Study programme

Information Technology (BIT)

Composition of Committee

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)

Supervisor’s report
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í.

Evaluation criteria Verbal classification
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.

 

Points proposed by supervisor: 77

Grade proposed by supervisor: C

Reviewer’s report
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.

Evaluation criteria Verbal classification Points
Náročnost zadání

Evaluation level: 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í

Evaluation level: 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

Evaluation level: 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.

Topics for thesis defence:
  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í?
Points proposed by reviewer: 65

Grade proposed by reviewer: D

Reasons for publication postponement

Publication of the final thesis has been postponed in compliance with the provisions of Section 47b (4) of Act No. 111/1998 Coll., on the Higher Education Institutions and on amendments and supplements to other acts, as amended.

The publication of the bachelor's thesis is in accordance with the provision of § 47b par. 4 of the Act no. 111/1998, about universities and about the change and supplementing other laws (Higher Education Act), as amended, delayed by 3 years. The reason for the delay of the publication is the protection of intellectual property and the fact that the thesis contains business secret in the sense of the relevant provisions of the Act no. 89/2012 Coll., Civil Code.

Responsibility: Mgr. et Mgr. Hana Odstrčilová