Please use this identifier to cite or link to this item: http://artemis.cslab.ece.ntua.gr:8080/jspui/handle/123456789/18006
Title: Πρακτική Στατική Ανάλυση για Προγράμματα Python
Authors: Σαλής, Βιτάλιος
Παπασπύρου Νικόλαος
Keywords: Γλώσσες προγραμματισμού
Python
Γράφοι κλήσεων συναρτήσεων
Ανίχνευση σφαλμάτων κλει­διού
Issue Date: 28-Jun-2021
Abstract: Η στατική ανάλυση προγραμμάτων ενέχει προκλήσεις, ειδικά στο πλαίσιο γλωσσών υψηλού επιπέδου, όπως η Python, η οποία είναι modular και ενσωματώνει δυναμικά χαρακτηριστικά και συναρτήσεις υψηλού επιπέδου. Προτείνουμε ένα επεκτάσιμο πλαίσιο για την στατική ανάλυση Python προγραμμάτων και έχουμε υλοποιήσει ένα αντίστοιχο πρωτότυπο. Το πρωτότυπο μας λειτουργεί μέσω του υπολογισμού όλων των σχέσεων ανάθεσης μεταξύ των αναγνωριστικών συναρτήσεων, μεταβλητών, κλάσεων, και modules μέσω μιας διασυναρτησιακής ανάλυσης χωρίς ευαισθησία περιβάλλοντος. Με βάση αυτές τις σχέσεις αναθέσεων, υλοποιούμε δύο επεκτάσεις της ανάλυσης μας: (1) παραγωγή γράφων κλήσεων συναρτήσεων και (2) ανίχνευση σφαλμάτων κλειδιού. Οι γράφοι κλήσεων συναρτήσεων είναι κατευθυνόμενοι γράφοι που επισημαίνουν σχέσεις κλήσεων μεταξύ υπορουτινών. Παίζουν σημαντικό ρόλο σε διάφορα πλαίσια, όπως την δημιουργία προφίλ κώδικα και την ανάλυση διάδοσης ευπαθειών. Έχουμε επεκτείνει την ανάλυση μας ώστε να παράγουμε γράφους κλήσεων συναρτήσεων και έχουμε αξιολογήσει την μέθοδο μας σε δύο σημεία αναφοράς: μια βιβλιοθήκη από Python προγράμματα μικρής εμβέλειας και μια βιβλιοθήκη από πραγματικά Python πακέτα μεγάλης εμβέλειας. Τα αποτελέσματα της αξιολόγησης δείχνουν πως η μέθοδός μας ξεπερνάει τις υπάρχουσες κορυφαίες μεθόδους για την Python σε ακρίβεια (99.2%) καθώς και σε ανάκληση (69.9%). Οι μη έγκυρες προσβάσεις σε πίνακες κατακερματισμού συμβαίνουν όταν ένας πίνακας διασχίζεται με ένα στοιχείο το οποίο δεν αντιστοιχεί σε κάποιο από τα κλειδιά του. Σε αυτή τη περίπτωση, η Python παράγει ένα σφάλμα κλειδιού και τερματίζει. Η ανίχνευση πιθανών σφαλμάτων κλειδιού μπορεί να είναι κρίσιμης σημασίας, ειδικά για εφαρμογές στην παραγωγή. Για να αντιμετωπίσουμε αυτά τα ρίσκα, έχουμε επεκτείνει την ανάλυση μας ώστε να μπορεί να ανιχνεύει μη έγκυρες προσβάσεις σε πίνακες κατακερματισμού, και την αξιολογούμε σε μια βιβλιοθήκη από μικρά Python προγράμματα και σε ένα σύνολο από υποβολές φοιτητών για ένα μεταπτυχιακό μάθημα που σχετίζεται με την ανάλυση δεδομένων. Τα αποτελέσματα μας υποδεικνύουν πως η μέθοδός μας μπορεί να ανιχνεύσει σφάλματα κλειδιού σε πολλές περιπτώσεις στην Python, ενώ μπορεί να βοηθήσει προγραμματιστές να βρουν πιθανά σφάλματα κλειδιού κατά την διάρκεια της συγγραφής κώδικα.
URI: http://artemis.cslab.ece.ntua.gr:8080/jspui/handle/123456789/18006
Appears in Collections:Διπλωματικές Εργασίες - Theses

Files in This Item:
File Description SizeFormat 
thesis.pdf541.6 kBAdobe PDFView/Open


Items in Artemis are protected by copyright, with all rights reserved, unless otherwise indicated.