Performance and Usability Improvements for Data Lineage Analysis of C# Programs
Zlepšení použitelnosti a výkonu analýzy datových toků programů v jazyce C#
diplomová práce (OBHÁJENO)
Zobrazit/ otevřít
Trvalý odkaz
http://hdl.handle.net/20.500.11956/188497Identifikátory
SIS: 255376
Kolekce
- Kvalifikační práce [11244]
Autor
Vedoucí práce
Oponent práce
Bednárek, David
Fakulta / součást
Matematicko-fyzikální fakulta
Obor
Informatika - Softwarové systémy
Katedra / ústav / klinika
Katedra distribuovaných a spolehlivých systémů
Datum obhajoby
14. 2. 2024
Nakladatel
Univerzita Karlova, Matematicko-fyzikální fakultaJazyk
Angličtina
Známka
Výborně
Klíčová slova (česky)
statická analýza|data lineage|C#|embedded codeKlíčová slova (anglicky)
static analysis|data lineage|C#|embedded codeManta Flow je vysoce automatizovaná platforma pro statickou analýzu datových toků, které jsou následně zobrazeny v přehledném grafu. Tato platforma provádí analýzu mnoha technologií a programovacích jazyků pomocí takzvaných skenerů. Jeden z těchto skenerů provádí analýzu C# kódu, respektive jeho zkompilované alternativy Common Intermedi- ate Language. Tento skener byl již dříve schopný analyzovat netriviální aplikace, ovšem některé jeho aspekty stále zabraňovaly jeho rozšířenému použití a adopci ze strany uživa- telů. Mezi hlavní problémy patří nedostatečná podpora analýzy reálných aplikací z pro- dukčního prostředí, jako například webové aplikace nebo krátké úryvky kódu embedované v jiných technologiích, pomalá analýza a její nepřesný výstup. V této práci bylo dosa- ženo celkového zlepšení přesnosti, využitelnosti a výkonu skeneru na několika úrovních abstrakce od analýzy CIL kódu po modifikace celkového designu. Byla přidána podpora analýzy webových rozhraní vytvořených pomocí frameworku ASP.NET a embedovaného kódu v jiných technologiích. Zároveň byla vylepšena přesnost a výkon datové analýzy u dříve podporovaných aplikací úpravou klíčových algoritmů použitých během analýzy. 1
The Manta Flow is a highly automated static analysis platform producing data lineage over its input and representing it in a graph. The platform performs analysis on various technologies and programming languages via specialised scanners. One of the scanners performs analysis of C# code, or rather its compiled alternative Common Intermediate Language. While the scanner was already capable of analysing non-trivial scenarios, it lacked in some aspects that held it up from its broader adoption by customers. The main issues are low support for analysis of real-life scenarios such as web applications or embedded code in other technologies, sub-optimal performance and imprecise lineage output. As a part of this thesis, we improved the precision, scalability and performance of the scanner on multiple levels of abstractions, from analysis of the CIL to modifications of core high-level analysis algorithms. We added support for analysis of the ASP.NET web endpoints and enabled the C# scanner to be used as a service for analysis of embedded code in other technologies. We improved the precision of the resulting lineage for existing scenarios by modifying the core algorithms used throughout the analysis and optimized the analysis process to lift its performance. 1