Εφαρμογή τεχνικών εξόρυξης δεδομένων για
την αυτοματοποιημένη διόρθωση
σφαλμάτων
Διπλωματική εργασία
Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης
Πολυτεχνική σχολή
Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών
Υπολογιστών
Τομέας Ηλεκτρονικής & Υπολογιστών
Εργαστήριο Επεξεργασίας
Πληροφορίας & Υπολογισμών
Εκπόνηση:
Ηρακλής Γενιτσιφτσόπουλος
ΑΕΜ: 8789
Επιβλέποντες:
Ανδρέας Λ. Συμεωνίδης
Καθηγητής Α.Π.Θ.
Θεμιστοκλής Διαμαντόπουλος
Επιβλέπων Μεταδιδακτορικός Ερευνητής
Διάρθρωση Παρουσίασης
➢ Εισαγωγή
➢ Ανάλυση Μεθοδολογίας
➢ Αξιολόγηση & Αποτελέσματα
➢ Συμπεράσματα & Μελλοντική Εργασία
2
Διάρθρωση Παρουσίασης
➢ Εισαγωγή
➢ Ανάλυση Μεθοδολογίας
➢ Αξιολόγηση & Αποτελέσματα
➢ Συμπεράσματα & Μελλοντική Εργασία
3
Περιγραφή του Προβλήματος
● Αύξηση μεγέθους και πολυπλοκότητας έργων λογισμικού
● Μεγάλο μέρος του χρόνου των προγραμματιστών για αποσφαλμάτωση
○ Εντοπισμός σφαλμάτων
○ Επιδιόρθωση
● Οι μεθοδολογίες για αυτόματο εντοπισμό σφαλμάτων:
○ Δυναμικός έλεγχος: έλεγχος βάσει αναμενόμενων εξόδων
○ Στατική ανάλυση: έλεγχος του πηγαίου κώδικα ή παραγώγων
4
Περιγραφή του Προβλήματος
Στατική ανάλυση
● Πλεονεκτήματα:
○ Χαμηλό κόστος
○ Απαιτείται λιγότερος χρόνος
● Μειονεκτήματα:
○ False positives - μεγάλος αριθμός σφαλμάτων
○ Απαιτείται προσπάθεια για την κατανόηση των μηνυμάτων
○ Η επιδιόρθωση των σφαλμάτων επιβαρύνει τους προγραμματιστές
5
Περιγραφή του Προβλήματος
● Ανάγκη για δημιουργία εργαλείων:
○ Εξαγωγής χρήσιμων σφαλμάτων και προτύπων διορθώσεων
○ Αυτοματοποιημένης διόρθωσης σφαλμάτων
● Πρόσφατα γίνονται ερευνητικές προσπάθειες με στόχο την αυτοματοποιημένη
διόρθωση σφαλμάτων
6
Στόχος διπλωματικής εργασίας
● Ανάπτυξη συστήματος αυτοματοποιημένης διόρθωσης σφαλμάτων από
εργαλεία στατικής ανάλυσης με την χρήση τεχνικών εξόρυξης δεδομένων
● Σφάλματα στην Java, εντοπισμένα από το PMD
● Δεδομένα από αποθετήρια στο Github
7
Διάρθρωση Παρουσίασης
➢ Εισαγωγή
➢ Ανάλυση Μεθοδολογίας
➢ Αξιολόγηση & Αποτελέσματα
➢ Συμπεράσματα & Μελλοντική Εργασία
8
Δομή συστήματος
9
Συλλογή δεδομένων
● Επιλογή 33 κανόνων του PMD με βάση:
○ Την κατηγορία του κανόνα
○ Την συχνότητα του κανόνα
○ Υποκειμενικής αξιολόγησης της
“χρησιμότητας” του κανόνα
● Αναζήτηση για commits επιδιορθώσεων
βάσει των μηνυμάτων τους
(π.χ. PMD+<ονομα κανόνα>)
● Λήψη των αρχείων πριν και μετά το
commit
10
Δημιουργία συνόλου δεδομένων
● Τα edit scripts αποτελούνται από:
○ Μια λίστα των matches
○ Μια λίστα των actions
● Κατηγορίες των actions είναι
○ Προσθήκη (insert)
○ Αφαίρεση (delete)
○ Μετακίνηση (move)
○ Τροποποίηση (update)
11
Προ-επεξεργασία δεδομένων
Γίνεται λεξικογραφική ανάλυση των actions των edit scripts για την παραγωγή
αντικειμένων EditScript της Python
Η ανάλυση ενός action: Η ανάλυση ενός TreeId:
Sequence:
Specifier
Init
Expr
Literal
Init
Expr
Literal
12
Εξόρυξη προτύπων διορθώσεων (μέρος Α)
● Εξαγωγή αποστάσεων ακολουθιών μέσω της μετρικής ομοιότητας:
, όπου:
○ |si| είναι το μήκος της ακολουθίας si
○ LCS(s1,s2) είναι το μήκος της μέγιστης κοινής υπακολουθίας
● Η απόσταση είναι 1 - S με εύρος τιμών [0, 1]
● Εξαγωγή πίνακα αποστάσεων υπολογίζοντας για τον συνδυασμό όλων των
ακολουθιών
13
Εξόρυξη προτύπων διορθώσεων (μέρος Β)
● Ορισμός μετρικής Purity:
όπου:
○ N είναι το συνολικό μέγεθος των ομαδοποιημένων σημείων
○ c είναι η κάθε ομάδα στο σύνολο των ομάδων C
○ r είναι ο κάθε κανόνας στο σύνολο των κανόνων R
○ |c ∩ r| είναι το πλήθος των διορθώσεων της ομάδας c με κανόνα r
● Η μετρική Purity χρησιμοποιήθηκε για την επιλογή των παραμέτρων του
DBSCAN
14
Εξόρυξη προτύπων διορθώσεων (μέρος Γ)
● Ομαδοποίηση 11219 αλλαγών με DBSCAN
● Αρχική παραμετρική ανάλυση για ε με minPts = 10, στο διάστημα [0.05, 0.5]
με συνολικά 15 τιμές:
● Επιλογή του μέσου μεταξύ
του πράσινου και κίτρινου
σημείου: ε = 0.12
15
Εξόρυξη προτύπων διορθώσεων (μέρος Δ)
● Περιορισμός των σημείων θορύβου στο
35% (~4000 σημεία)
● Αρχική παραμετρική ανάλυση για minPts
με ε = 0.12, στο διάστημα [5, 50] με βήμα
2 στο σχήμα
● Τελική σχεδιαστική επιλογή:
○ Τιμή ε = 0.1
○ Τιμή minPts = 20
16
Αυτοματοποιημένη διόρθωση σφαλμάτων
● Εξαγωγή fix look-up table
● Με βάση τον κανόνα εξάγεται EditScript από το fix look-up table
● Εξάγεται η srcML αναπαράσταση του εσφαλμένου κώδικα
● Εφαρμόζονται διαδοχικά οι μετασχηματισμοί των actions στα πιθανά σημεία
εφαρμογής
● Παράγονται πιθανώς διορθωμένες αναπαραστάσεις srcML
● Μετατροπη σε κώδικα
● Έλεγχος υποψήφιων διορθώσεων με το PMD
17
Εξαγωγή fix look-up table
Δομή του fix look-up table:
Υπολογισμός Ελάχιστου
Κοινού Προγόνου (LCA):
18
Εύρεση πιθανών σημείων εφαρμογής (μέρος Α)
● Αρχικές μέθοδοι εύρεσης πιθανών σημείων εφαρμογής:
○ Υποθέτουμε ίδιο parse tree με το πρότυπο EditScript. Βρίσκονται ακολουθόντας στο
εσφαλμένο parse tree, το ίδιο μονοπάτι με αυτό του EditScript
○ Δεν κάνουμε καμία υπόθεση. Είναι όλα τα σημεία με το ίδιο CodeBlockType
● Λύση: Αναζήτηση των πιθανών σημείων εφαρμογής ενός action στην
“γειτονιά” που εφαρμόστηκαν τα προηγούμενα actions
19
Εύρεση πιθανών σημείων εφαρμογής (μέρος Β)
Παράδειγμα εύρεσης
σημείων εφαρμογής:
20
Διάρθρωση Παρουσίασης
➢ Εισαγωγή
➢ Ανάλυση Μεθοδολογίας
➢ Αξιολόγηση & Αποτελέσματα
➢ Συμπεράσματα & Μελλοντική Εργασία
21
Αποτελέσματα ομαδοποίησης
● Το μέσο μέγεθος των ομάδων είναι 115 διορθώσεις
● Θόρυβος τα 3943 / 11219 (~35%) σημεία
● Προέκυψαν συνολικά 62 ομάδες
● Η τιμή του Purity είναι 0.9307
● Ομαδοποιήθηκαν συνολικά 7276 διορθώσεις για 27 από τους 33 κανόνες
● Απο τους 27 κανόνες, 19 αποτελούν τον συχνότερο κανόνα κάποιας ομάδας
○ Άρα εξάγαμε πρότυπα διορθώσεων για 19 κανόνες
22
Αποτελέσματα ομαδοποίησης
Αντιπροσωπευτικό δείγμα 21
ομάδων:
● Πολύ υψηλό Purity στις
περισσότερες ομάδες
● Αρκετά ικανοποιητικό
μέγεθος των ομάδων
● Οι περισσότερες περιέχουν
αλλαγές από πολλά
commits
23
Αποτελέσματα διόρθωσης σφαλμάτων
Συγκεντρωτικά αποτελέσματα
BugFixer για παραδείγματα
από τους 19 κανόνες:
● Με “A” οι κανόνες με
αρκετά ή πολύ χρήσιμες
διορθώσεις
● Με “B” οι κανόνες με
σχετικά ή λίγο χρήσιμες
διορθώσεις
● Με “C” οι κανόνες με
καθόλου χρήσιμες
διορθώσεις
● Περίπου το ⅓ των
κανόνων είναι κατηγορίας
A, ⅓ κατηγορίας B και ⅓
κατηγορίας C 24
Αποτελέσματα διόρθωσης σφαλμάτων
Παραδείγματα διόρθωσης κατηγορίας “A”:
25
Αποτελέσματα διόρθωσης σφαλμάτων
Παραδείγματα διόρθωσης κατηγορίας “B”:
26
Διάρθρωση Παρουσίασης
➢ Εισαγωγή
➢ Ανάλυση Μεθοδολογίας
➢ Αξιολόγηση & Αποτελέσματα
➢ Συμπεράσματα & Μελλοντική Εργασία
27
Συμπεράσματα
● Συνολικά 62 ομάδες, υψηλού Purity, με αρκετές διορθώσεις
● Αυτοματοποιημένη επιδιόρθωση σφαλμάτων από τα πρότυπα των ομάδων
● Διορθώσεις με λίγη ή πολύ χρησιμότητα για περίπου ⅔ των κανόνων του
PMD
● Προβλήματα στην διόρθωση συγκεκριμένων κανόνων
28
Μελλοντική εργασία
● Εξαγωγή πρότυπου EditScript που έχει το πιο όμοιο parse tree με τον
εσφαλμένο κώδικα
● Ανάπτυξη συστήματος βελτίωσης του παραγόμενου κώδικα, από τις
εξαγόμενες αναπαραστάσεις srcML
● Η ενσωμάτωση του συστήματος αυτοματοποιημένης διόρθωσης σφαλμάτων
σε κάποιο αποθετήριο λογισμικού με την μορφή ενός bot
29
Ευχαριστίες
Θα ήθελα να ευχαριστήσω θερμά:
● Τον καθηγητή Ανδρέα Λ. Συμεωνίδη
● Τον μεταδιδακτορικό ερευνητή Θεμιστοκλή Διαμαντόπουλο
● Όλους όσους παρακολουθήσατε την παρουσίασή μου
30
Ευχαριστώ για την προσοχή σας
Ερωτήσεις;
31

Εφαρμογή τεχνικών εξόρυξης δεδομένων για την αυτοματοποιημένη διόρθωση σφαλμάτων

  • 1.
    Εφαρμογή τεχνικών εξόρυξηςδεδομένων για την αυτοματοποιημένη διόρθωση σφαλμάτων Διπλωματική εργασία Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Πολυτεχνική σχολή Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Τομέας Ηλεκτρονικής & Υπολογιστών Εργαστήριο Επεξεργασίας Πληροφορίας & Υπολογισμών Εκπόνηση: Ηρακλής Γενιτσιφτσόπουλος ΑΕΜ: 8789 Επιβλέποντες: Ανδρέας Λ. Συμεωνίδης Καθηγητής Α.Π.Θ. Θεμιστοκλής Διαμαντόπουλος Επιβλέπων Μεταδιδακτορικός Ερευνητής
  • 2.
    Διάρθρωση Παρουσίασης ➢ Εισαγωγή ➢Ανάλυση Μεθοδολογίας ➢ Αξιολόγηση & Αποτελέσματα ➢ Συμπεράσματα & Μελλοντική Εργασία 2
  • 3.
    Διάρθρωση Παρουσίασης ➢ Εισαγωγή ➢Ανάλυση Μεθοδολογίας ➢ Αξιολόγηση & Αποτελέσματα ➢ Συμπεράσματα & Μελλοντική Εργασία 3
  • 4.
    Περιγραφή του Προβλήματος ●Αύξηση μεγέθους και πολυπλοκότητας έργων λογισμικού ● Μεγάλο μέρος του χρόνου των προγραμματιστών για αποσφαλμάτωση ○ Εντοπισμός σφαλμάτων ○ Επιδιόρθωση ● Οι μεθοδολογίες για αυτόματο εντοπισμό σφαλμάτων: ○ Δυναμικός έλεγχος: έλεγχος βάσει αναμενόμενων εξόδων ○ Στατική ανάλυση: έλεγχος του πηγαίου κώδικα ή παραγώγων 4
  • 5.
    Περιγραφή του Προβλήματος Στατικήανάλυση ● Πλεονεκτήματα: ○ Χαμηλό κόστος ○ Απαιτείται λιγότερος χρόνος ● Μειονεκτήματα: ○ False positives - μεγάλος αριθμός σφαλμάτων ○ Απαιτείται προσπάθεια για την κατανόηση των μηνυμάτων ○ Η επιδιόρθωση των σφαλμάτων επιβαρύνει τους προγραμματιστές 5
  • 6.
    Περιγραφή του Προβλήματος ●Ανάγκη για δημιουργία εργαλείων: ○ Εξαγωγής χρήσιμων σφαλμάτων και προτύπων διορθώσεων ○ Αυτοματοποιημένης διόρθωσης σφαλμάτων ● Πρόσφατα γίνονται ερευνητικές προσπάθειες με στόχο την αυτοματοποιημένη διόρθωση σφαλμάτων 6
  • 7.
    Στόχος διπλωματικής εργασίας ●Ανάπτυξη συστήματος αυτοματοποιημένης διόρθωσης σφαλμάτων από εργαλεία στατικής ανάλυσης με την χρήση τεχνικών εξόρυξης δεδομένων ● Σφάλματα στην Java, εντοπισμένα από το PMD ● Δεδομένα από αποθετήρια στο Github 7
  • 8.
    Διάρθρωση Παρουσίασης ➢ Εισαγωγή ➢Ανάλυση Μεθοδολογίας ➢ Αξιολόγηση & Αποτελέσματα ➢ Συμπεράσματα & Μελλοντική Εργασία 8
  • 9.
  • 10.
    Συλλογή δεδομένων ● Επιλογή33 κανόνων του PMD με βάση: ○ Την κατηγορία του κανόνα ○ Την συχνότητα του κανόνα ○ Υποκειμενικής αξιολόγησης της “χρησιμότητας” του κανόνα ● Αναζήτηση για commits επιδιορθώσεων βάσει των μηνυμάτων τους (π.χ. PMD+<ονομα κανόνα>) ● Λήψη των αρχείων πριν και μετά το commit 10
  • 11.
    Δημιουργία συνόλου δεδομένων ●Τα edit scripts αποτελούνται από: ○ Μια λίστα των matches ○ Μια λίστα των actions ● Κατηγορίες των actions είναι ○ Προσθήκη (insert) ○ Αφαίρεση (delete) ○ Μετακίνηση (move) ○ Τροποποίηση (update) 11
  • 12.
    Προ-επεξεργασία δεδομένων Γίνεται λεξικογραφικήανάλυση των actions των edit scripts για την παραγωγή αντικειμένων EditScript της Python Η ανάλυση ενός action: Η ανάλυση ενός TreeId: Sequence: Specifier Init Expr Literal Init Expr Literal 12
  • 13.
    Εξόρυξη προτύπων διορθώσεων(μέρος Α) ● Εξαγωγή αποστάσεων ακολουθιών μέσω της μετρικής ομοιότητας: , όπου: ○ |si| είναι το μήκος της ακολουθίας si ○ LCS(s1,s2) είναι το μήκος της μέγιστης κοινής υπακολουθίας ● Η απόσταση είναι 1 - S με εύρος τιμών [0, 1] ● Εξαγωγή πίνακα αποστάσεων υπολογίζοντας για τον συνδυασμό όλων των ακολουθιών 13
  • 14.
    Εξόρυξη προτύπων διορθώσεων(μέρος Β) ● Ορισμός μετρικής Purity: όπου: ○ N είναι το συνολικό μέγεθος των ομαδοποιημένων σημείων ○ c είναι η κάθε ομάδα στο σύνολο των ομάδων C ○ r είναι ο κάθε κανόνας στο σύνολο των κανόνων R ○ |c ∩ r| είναι το πλήθος των διορθώσεων της ομάδας c με κανόνα r ● Η μετρική Purity χρησιμοποιήθηκε για την επιλογή των παραμέτρων του DBSCAN 14
  • 15.
    Εξόρυξη προτύπων διορθώσεων(μέρος Γ) ● Ομαδοποίηση 11219 αλλαγών με DBSCAN ● Αρχική παραμετρική ανάλυση για ε με minPts = 10, στο διάστημα [0.05, 0.5] με συνολικά 15 τιμές: ● Επιλογή του μέσου μεταξύ του πράσινου και κίτρινου σημείου: ε = 0.12 15
  • 16.
    Εξόρυξη προτύπων διορθώσεων(μέρος Δ) ● Περιορισμός των σημείων θορύβου στο 35% (~4000 σημεία) ● Αρχική παραμετρική ανάλυση για minPts με ε = 0.12, στο διάστημα [5, 50] με βήμα 2 στο σχήμα ● Τελική σχεδιαστική επιλογή: ○ Τιμή ε = 0.1 ○ Τιμή minPts = 20 16
  • 17.
    Αυτοματοποιημένη διόρθωση σφαλμάτων ●Εξαγωγή fix look-up table ● Με βάση τον κανόνα εξάγεται EditScript από το fix look-up table ● Εξάγεται η srcML αναπαράσταση του εσφαλμένου κώδικα ● Εφαρμόζονται διαδοχικά οι μετασχηματισμοί των actions στα πιθανά σημεία εφαρμογής ● Παράγονται πιθανώς διορθωμένες αναπαραστάσεις srcML ● Μετατροπη σε κώδικα ● Έλεγχος υποψήφιων διορθώσεων με το PMD 17
  • 18.
    Εξαγωγή fix look-uptable Δομή του fix look-up table: Υπολογισμός Ελάχιστου Κοινού Προγόνου (LCA): 18
  • 19.
    Εύρεση πιθανών σημείωνεφαρμογής (μέρος Α) ● Αρχικές μέθοδοι εύρεσης πιθανών σημείων εφαρμογής: ○ Υποθέτουμε ίδιο parse tree με το πρότυπο EditScript. Βρίσκονται ακολουθόντας στο εσφαλμένο parse tree, το ίδιο μονοπάτι με αυτό του EditScript ○ Δεν κάνουμε καμία υπόθεση. Είναι όλα τα σημεία με το ίδιο CodeBlockType ● Λύση: Αναζήτηση των πιθανών σημείων εφαρμογής ενός action στην “γειτονιά” που εφαρμόστηκαν τα προηγούμενα actions 19
  • 20.
    Εύρεση πιθανών σημείωνεφαρμογής (μέρος Β) Παράδειγμα εύρεσης σημείων εφαρμογής: 20
  • 21.
    Διάρθρωση Παρουσίασης ➢ Εισαγωγή ➢Ανάλυση Μεθοδολογίας ➢ Αξιολόγηση & Αποτελέσματα ➢ Συμπεράσματα & Μελλοντική Εργασία 21
  • 22.
    Αποτελέσματα ομαδοποίησης ● Τομέσο μέγεθος των ομάδων είναι 115 διορθώσεις ● Θόρυβος τα 3943 / 11219 (~35%) σημεία ● Προέκυψαν συνολικά 62 ομάδες ● Η τιμή του Purity είναι 0.9307 ● Ομαδοποιήθηκαν συνολικά 7276 διορθώσεις για 27 από τους 33 κανόνες ● Απο τους 27 κανόνες, 19 αποτελούν τον συχνότερο κανόνα κάποιας ομάδας ○ Άρα εξάγαμε πρότυπα διορθώσεων για 19 κανόνες 22
  • 23.
    Αποτελέσματα ομαδοποίησης Αντιπροσωπευτικό δείγμα21 ομάδων: ● Πολύ υψηλό Purity στις περισσότερες ομάδες ● Αρκετά ικανοποιητικό μέγεθος των ομάδων ● Οι περισσότερες περιέχουν αλλαγές από πολλά commits 23
  • 24.
    Αποτελέσματα διόρθωσης σφαλμάτων Συγκεντρωτικάαποτελέσματα BugFixer για παραδείγματα από τους 19 κανόνες: ● Με “A” οι κανόνες με αρκετά ή πολύ χρήσιμες διορθώσεις ● Με “B” οι κανόνες με σχετικά ή λίγο χρήσιμες διορθώσεις ● Με “C” οι κανόνες με καθόλου χρήσιμες διορθώσεις ● Περίπου το ⅓ των κανόνων είναι κατηγορίας A, ⅓ κατηγορίας B και ⅓ κατηγορίας C 24
  • 25.
  • 26.
  • 27.
    Διάρθρωση Παρουσίασης ➢ Εισαγωγή ➢Ανάλυση Μεθοδολογίας ➢ Αξιολόγηση & Αποτελέσματα ➢ Συμπεράσματα & Μελλοντική Εργασία 27
  • 28.
    Συμπεράσματα ● Συνολικά 62ομάδες, υψηλού Purity, με αρκετές διορθώσεις ● Αυτοματοποιημένη επιδιόρθωση σφαλμάτων από τα πρότυπα των ομάδων ● Διορθώσεις με λίγη ή πολύ χρησιμότητα για περίπου ⅔ των κανόνων του PMD ● Προβλήματα στην διόρθωση συγκεκριμένων κανόνων 28
  • 29.
    Μελλοντική εργασία ● Εξαγωγήπρότυπου EditScript που έχει το πιο όμοιο parse tree με τον εσφαλμένο κώδικα ● Ανάπτυξη συστήματος βελτίωσης του παραγόμενου κώδικα, από τις εξαγόμενες αναπαραστάσεις srcML ● Η ενσωμάτωση του συστήματος αυτοματοποιημένης διόρθωσης σφαλμάτων σε κάποιο αποθετήριο λογισμικού με την μορφή ενός bot 29
  • 30.
    Ευχαριστίες Θα ήθελα ναευχαριστήσω θερμά: ● Τον καθηγητή Ανδρέα Λ. Συμεωνίδη ● Τον μεταδιδακτορικό ερευνητή Θεμιστοκλή Διαμαντόπουλο ● Όλους όσους παρακολουθήσατε την παρουσίασή μου 30
  • 31.
    Ευχαριστώ για τηνπροσοχή σας Ερωτήσεις; 31