Λογότυπο αποθετηρίου
 

Control flow graph generation from JavaScript source code

Μικρογραφία εικόνας

Ημερομηνία

2025-09-24

Συγγραφείς

Rigos, Gasparis
Ρήγος, Γασπάρης

Τίτλος Εφημερίδας

Περιοδικό ISSN

Τίτλος τόμου

Εκδότης

Επιβλέποντα

Διαθέσιμο από

Περίληψη

Η στατική ανάλυση κώδικα αποτελεί έναν από τους βασικούς τρόπους διασφάλισης της συντηρησιμότητας ενός προγραμματιστικού τμήματος, όπως μιας συνάρτησης ή ενός προγράμματος. Μέσω αυτού του είδους ανάλυσης, ο κώδικας εξετάζεται χωρίς να εκτελείται. Η στατική ανάλυση κώδικα μπορεί να πραγματοποιηθεί είτε χειροκίνητα μέσω ελέγχων κώδικα (code reviews) είτε αυτόματα με τη χρήση εξειδικευμένων εργαλείων που αναλύουν τον κώδικα. Η JavaScript ειδικότερα είναι μια διαβόητη γλώσσα για ανασκόπηση και αποσφαλμάτωση, λόγω της αφηρημένης και ευέλικτης φύσης της. Η χρήση Γραφημάτων Ροής Ελέγχου (Control Flow Graphs ή CFGs) συμβάλλει στη βελτίωση της αποδοτικότητας της χειροκίνητης ανάλυσης κώδικα, απεικονίζοντας τη ροή του ελέγχου μέσα σε μια δεδομένη συνάρτηση. Με την αξιοποίηση ενός αναλυτή πηγαίου κώδικα που δημιουργεί ένα Αφηρημένο Συντακτικό Δέντρο (Abstract Syntax Tree ή AST) μιας συνάρτησης, η παρούσα εργασία εξετάζει τις τεχνικές και τις μεθόδους που επιτρέπουν τη δημιουργία ενός CFG από το AST. Αυτές οι μέθοδοι ορίζουν μια λογική η οποία υλοποιείται σε μια ιδεολογία Visitor, η οποία χρησιμοποιείται για την ανάλυση του εισερχόμενου AST και την προοδευτική κατασκευή του CFG. Οι δυνατότητες αυτού του εργαλείου παρουσιάζονται στο τελευταίο μέρος της εργασίας, καθώς και οι διαφορετικοί τρόποι χρήσης και εγκατάστασής του ως επέκταση για το Visual Studio Code. Τέλος, το παραγόμενο αποτέλεσμα συγκρίνεται με άλλες διαθέσιμες λύσεις, με στόχο να εντοπιστούν τα πλεονεκτήματα του JS Slicer και τα συγκριτικά του οφέλη έναντι αυτών των άλλων εργαλείων.
Static code analysis is one of the primary ways of ensuring the maintainability of a programming module such as a function of program. Through this type of analysis, the code is reviewed without ever executing it. Static code analysis can be performed either manually with code reviews or automatically using specialized tools that parse the code. JavaScript in particular is a notorious language to review and debug due to its abstract and versatile nature. The usage of Control Flow Graphs (or CFGs) helps make manual code analysis more efficient by visualizing the flow of control within a given function. By utilizing a source code parser that creates an Abstract Syntax Tree (or AST) of a function, this thesis delves into the techniques and methods that allow for the generation of a CFG from the AST. These methods define a logic that is implemented into a Visitor ideology that is used to parse the input AST and progressively build the CFG. This tool's capabilities are displayed in the later part of the thesis as well as the different ways to use the tool and install it as an extension for Visual Studio Code. Finally, the project is compared with other available solutions with the goal being to pinpoint the strengths of JS Slicer and its advantages over these other projects.

Περιγραφή

Λέξεις-κλειδιά

Source code analysis, Control flow graph, Abstract syntax tree, AST visitor, Ανάλυση πηγαίου κώδικα, Γράφημα ροής ελέγχου, Αφηρημένο συντακτικό δέντρο, Επισκέπτης AST

Παραπομπή