Statická analýza NumPy programů
Static Analysis of NumPy Programs
bakalářská práce (OBHÁJENO)
Zobrazit/ otevřít
Trvalý odkaz
http://hdl.handle.net/20.500.11956/184306Identifikátory
SIS: 257503
Kolekce
- Kvalifikační práce [11216]
Autor
Vedoucí práce
Oponent práce
Blicha, Martin
Fakulta / součást
Matematicko-fyzikální fakulta
Obor
Informatika se specializací Systémové programování
Katedra / ústav / klinika
Katedra distribuovaných a spolehlivých systémů
Datum obhajoby
7. 9. 2023
Nakladatel
Univerzita Karlova, Matematicko-fyzikální fakultaJazyk
Čeština
Známka
Velmi dobře
Klíčová slova (česky)
statická analýza|NumPy|data-flow analýza|symbolic executionKlíčová slova (anglicky)
static analysis|NumPy|data-flow analysis|symbolic executionNumPy programy se těžko ladí. Kvůli dynamické povaze Pythonu se chyba často projeví až poté, co program delší dobu běží. Výpočet poté spadne a všechen výpočet je ztracen. Existující nástroje statické analýzy nedokážou poznat chyby specifické pro NumPy. Použili jsme data-flow analýzu zkombi- novanou se symbolickým vykonáváním programu k detekování chyb plynoucí z nevyhovujících tvarů matic. Naše metoda pomocí dynamické množiny sym- bolů sleduje ve vstupním program rozměry matic a vztahy mezi nimi. Ná- sledně pomocí SMT vyhodnotí, jestli jsou vztahy splnitelné, nebo jestli došlo k chybě a kde. Naše implementace rozumí základním NumPy konstrukcím a detekuje některé chyby pro pole a matice.
NumPy programs can be hard to debug. Due to the dynamic nature of Python, a bug can manifest itself after a long time of run time. This causes the computation to crash, ditching all the progress. Existing static analysis tools can't detect NumPy-specific errors. We propose a solution that uses data-flow analysis combined with symbolic execution to detect ndarray shape mismatch errors. With a dynamic set of symbols, our method tracks ndarray dimensions and constraints between them throughout the program. It uses an SMT solver to solve the constraints and locate the bug. Our implementation understands core NumPy constructs and detects some shape mismatch errors for 1D and 2D ndarrays.