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ů
diploma thesis (DEFENDED)

View/ Open
Permanent link
http://hdl.handle.net/20.500.11956/188513Identifiers
Study Information System: 259266
Collections
- Kvalifikační práce [11325]
Author
Advisor
Referee
Petříček, Tomáš
Faculty / Institute
Faculty of Mathematics and Physics
Discipline
Computer Science - Software and Data Engineering
Department
Department of Distributed and Dependable Systems
Date of defense
14. 2. 2024
Publisher
Univerzita Karlova, Matematicko-fyzikální fakultaLanguage
English
Grade
Excellent
Keywords (Czech)
Python|datové toky|typová inference|MantaKeywords (English)
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.