Extending Data Lineage Analysis for Python with Runtime Types
Rozšíření analýzy datových toků pro jazyk Python o podporu běhových typů
diplomová práce (OBHÁJENO)

Zobrazit/ otevřít
Trvalý odkaz
http://hdl.handle.net/20.500.11956/188513Identifikátory
SIS: 259266
Kolekce
- Kvalifikační práce [11326]
Autor
Vedoucí práce
Oponent práce
Petříček, Tomáš
Fakulta / součást
Matematicko-fyzikální fakulta
Obor
Informatika - Softwarové a datové inženýrství
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)
Python|datové toky|typová inference|MantaKlíčová slova (anglicky)
Python|data flow|data lineage|type inference|MantaV oboru data science je rostoucí poptávka po automatizované analýze da- tových toků v softwarových systémech. V případech, kde se používají univer- zální programovací jazyky, bývá Python jednou z nejpopulárnějších a zároveň nejsložitěji analyzovatelných voleb. Manta Flow je automatizovaná platforma pro analýzu datových toků, která obsahuje scanner pro Python. V této práci jsme vytvořili rozšíření scanneru pro Python v Manta Flow, které je schopné pomocí statické analýzy určit typy výrazů v analyzované aplikaci. Dosáhli jsme toho rozšířením konceptu datových toků o schopnost přenášet infor- mace o typech a adekvátním refaktorováním vnitřností scanneru. Toto rozší- ření bylo posléze použito na implementaci vylepšené metody pro identifikaci volaných funkcí během další analýzy.
There is an increasing demand in the domain of data science for auto- mated tools analyzing the data lineage of software systems. In situations where general-purpose programming languages are used, Python is among the most popular choices. It is also one of the most challenging to analyze. Manta Flow is an automated data lineage analysis platform that contains a scanner for Python. In this work, we developed an extension of this scanner. Its purpose is to statically determine the types of expressions in an analyzed application. We achieved this by expanding the concept of data flows to carry type information and we appropriately refactored the internals of the scanner. This information was then used to implement an improved method for finding the targets of function invocations during the analysis of data flows.