Evangelos Papathomas: Semantic Code Search in Software Repositories using Neu...
ThesisPresentation
1. Διπλωματική Εργασία
Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της
Μορφοποίησης Πηγαίου Κώδικα
Θωμάς Κανούτας
ΑΕΜ: 8826
Επιβλέποντες
Ανδρέας Συμεωνίδης, Καθηγητής ΑΠΘ
Θωμάς Καρανικιώτης, Υποψήφιος Διδάκτωρ ΑΠΘ
Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης
Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών
Εργαστήριο Επεξεργασίας Πληροφορίας & Τεχνολογίας Λογισμικού (ISSEL)
2. Περιεχόμενα
Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα
Θωμάς Κανούτας
Κίνητρο - Ορισμός
Προβλήματος
1 2 3 4
Παρουσίαση Πειραμάτων
Παρουσίαση Μεθοδολογίας -
Αντιμετώπιση Προβλήματος
Τελικά Αποτελέσματα -
Παρουσίαση Αποτελεσμάτων
Εισαγωγή Μεθοδολογικό
Πλαίσιο
Πειράματα Αποτελέσματα -
Συμπεράσματα
2
3. 1.
Αυτοματοποίηση και επιτάχυνση της διαδικασίας ανάπτυξης
λογισμικού
Κίνητρο
2.
Εύκολη πρόσβαση και αξιοποίηση δεδομένων πηγαίου
κώδικα (π.χ.GitHub)
3.
Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα
Θωμάς Κανούτας
3
Μείωση χρόνου συντήρησης μέσω βελτίωσης της
αναγνωσιμότητας των αρχείων κώδικα του έργου
λογισμικού
4.
80% του συνολικού χρόνου ζωής ενός έργου λογισμικού
αφιερώνεται στη συντήρηση του
4. Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα
Θωμάς Κανούτας
4
Υλοποίηση αυτοματοποιημένου συστήματος εντοπισμού και διόρθωσης
σφαλμάτων μορφοποίησης
Ορισμός Προβλήματος
Δημιουργία ενός μηχανισμού αξιολόγησης της μορφοποίησης ενός αρχείου
πηγαίου κώδικα
Βελτίωση
Μορφοποίησης
Ταχύτερη
Κατανόηση
Ταχύτερη &
Ποιοτικότερη
Συντήρηση
Βελτίωση
Αναγνωσιμότητας
5. Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα
Θωμάς Κανούτας
Step 2
Εντοπισμός
σφαλμάτων με
χρήση δικτύου
LSTM
Step 1
Προεπεξεργασία
αρχείου πηγαίου
κώδικα
Step 3 Step 4
Διόρθωση
σφαλμάτων
μορφοποίησης
Step 5
Παροχή
προτάσεων
διόρθωσης με
καλύτερη
αξιολόγηση
μορφοποίησης
Μεθοδολογικό πλαίσιο
5
Αξιολόγηση
μορφοποίησης σε
επίπεδο αρχείου
και token.
6. Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα
Θωμάς Κανούτας
Dataset
Tokenization Vectorization
TokenScore
FileScore
LSTM
10-gram
ErrorDetection
Errorpositions
DataPreprocessing ErrorFixing
FixedFile
Αρχιτεκτονική Συστήματος
6
7. Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα
Θωμάς Κανούτας
7
Προεπεξεργασία Δεδομένων
float y = 1.5
<lit> <space> <word> <space> <equal> <number> <semicolon>
2 1 5 1 8 10 6
T
o
k
e
n
i
z
a
tion
V
e
c
t
o
r
i
z
a
tion
Tokenization: μετατροπή και διάσπαση του αρχείου κώδικα σε επιμέρους, διακριτές οντότητες (tokens)
Vectorization: αντιστοιχία κάθε οντότητας(token) με ένα ακέραιο αριθμό
Δύο βασικά στάδια προεπεξεργασίας ενός αρχείου κώδικα που παρέχεται ως είσοδος:
;
8. Υποσύστημα Αξιολόγησης
Μορφοποίησης
Αξιοποίηση της έννοιας της διασταυρούμενης εντροπίας (cross-entropy) ως μέτρο του βαθμού "έκπληξης"
του μοντέλου N-gram (όταν του παρέχεται ως είσοδος μια αλληλουχία οντοτήτων (tokens) t0,t1,…, tM)
Υλοποίηση στηρίχθηκε στα στατιστικά μοντέλα γλώσσας N-gram τα οποία έχουν την ικανότητα να
αναθέτουν υψηλότερες πιθανότητες εμφάνισης σε αλληλουχίες οντοτήτων (tokens) που συναντώνται
συχνότερα στο σύνολο εκπαίδευσης τους
Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα
Θωμάς Κανούτας
1.
Ποσοτικοποίηση της αφαιρετικής έννοιας της μορφοποίησης πηγαίου κώδικα
2.
3.
8
9. Υποσύστημα Αξιολόγησης της
Μορφοποίησης (2)
Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα
Θωμάς Κανούτας
4.
αξιολόγηση αρχείου πηγαίου κώδικα συνολικά (source code level)
αξιολόγηση του κάθε token που απαρτίζει το αρχείο πηγαίου κώδικα (token level)
Το υποσύστημα αξιολόγησης ενεργεί σε δύο διαφορετικά επίπεδα λειτουργίας:
5.
Διάσπαση του αρχείου πηγαίου κώδικα σε διαδοχικά επιμέρους παράθυρα μήκους 20 tokens
Υπολογισμός της διασταυρούμενης εντροπίας για κάθε παράθυρο
Για κάθε token, εντοπίζεται το σύνολο των παραθύρων στα οποία ανήκει
Ο βαθμός αξιολόγησης του εκάστοτε token υπολογίζεται ως έξης:
9
Aξιολόγηση σε επίπεδο token:
10. Υποσύστημα Εντοπισμού Σφαλμάτων
Μορφοποίησης
Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα
Θωμάς Κανούτας
Tokenization Vectorization
DataPreprocessing LSTM
[1,4,6,10,35...]
ErrorProbability
Modification
10-gram
DetectedError
Positions
Παροχή αρχείου
πηγαίου κώδικα ως
είσοδος
Προεπεξεργασία
Αρχείου Πηγαίου
Κώδικα
Αναπαράσταση
αρχείου πηγαίου
κώδικα ως αλληλουχία
ακεραιών αριθμών
Διάσπαση αλληλουχίας σε παράθυρα
20-tokens τα οποία τροφοδούνται
διαδοχικά στο δίκτυο LSTM
Τροποποίηση των
πιθανοτήτων σφάλματος
του δικτύου LSTM με βάση
την αξιολόγηση του
εκάστοτε token η οποία
προέκυψε από το
υποσύστημα αξιολόγησης
Ως έξοδοι παρέχονται οι M
θέσεις των token με τις
υψηλότερες πιθανότητες
εμφάνισης σφάλματος
10
11. Υποσύστημα Διόρθωσης Σφαλμάτων
Μορφοποίησης
Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα
Θωμάς Κανούτας
1.
Τις θέσεις των Μ tokens με την υψηλότερη πιθανότητα εμφάνισης σφαλμάτων μορφοποίησης σύμφωνα με το υποσύστημα
εντοπισμού
Το σύνολο των tokens που αποτελούν τις πιθανότερες αντικαταστάσεις ή προσθήκες για το εκάστοτε πιθανό σφάλμα
μορφοποίησης
Λαμβάνει δύο εισόδους:
2.
Πραγματοποιεί τρεις διαφορετικές προσεγγίσεις διόρθωσης του σφάλματος μορφοποίησης:
3.
Έλεγχος συντακτικής ορθότητας των νέων διορθωμένων αρχείων κώδικα
Ως έξοδοι του συστήματος παρέχονται τα αρχεία κώδικα με καλύτερο σκορ αξιολόγησης σε σχέση με το αρχικό
11
Ολική διαγραφή του token που αντιστοιχεί στη θέση σφάλματος
Αντικατάσταση του token που αντιστοιχεί στη θέση σφάλματος
Προσθήκη νέου token πριν το token της πιθανής θέσης σφάλματος
12. 1.
Εκπαίδευση των μοντέλων του συστήματος με χρήση
8.500 αρχείων Java από 10.000 αποθετήρια του GitHub
με συγκεκριμένα, ευρέως διαδεδομένα πρότυπα
μορφοποίησης
Πειράματα & Αποτελέσματα
2.
3.
Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα
Θωμάς Κανούτας
12
Αξιολόγηση της απόδοσης του συστήματος με βάση
8.000 αρχεία κώδικα Java από τον διαγωνισμό CodRep
2019, κάθε ένα από τα οποία περιέχει αποκλειστικά ένα
σφάλμα μορφοποίησης
Αναλογία συνόλου εκπαίδευσης - ελέγχου για
εκπαίδευση δικτύου LSTM: 80/20
Αναλογία συνόλου εκπαίδευσης - ελέγχου για
εκπαίδευση μοντέλου γλώσσας N-gram: 90/10
4.
Αξιοποίηση 1.000 αρχείων εξ αυτών για την
αξιολόγηση του υποσυστήματος εντοπισμού
Αξιοποίηση 100 αρχείων εξ αυτών για την αξιολόγηση
του υποσυστήματος διόρθωσης
15. Αξιολόγηση Υποσυστήματος Διόρθωσης (2)
Πριν
Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα
Θωμάς Κανούτας
Μετά
Ολική διαγραφή token
15
16. Αξιολόγηση Υποσυστήματος Διόρθωσης (3)
Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα
Θωμάς Κανούτας
Προσθήκη νέου token
Πριν Μετά
16
17. Αξιολόγηση Διόρθωσης Πολλαπλών
Σφαλμάτων Μορφοποίησης
Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα
Θωμάς Κανούτας
17
1.
Αξιολόγηση του συστήματος σε περιπτώσεις αρχείων με
2 σφάλματα μορφοποίησης - 20 αρχεία
2.
Διαδοχικοί κύκλοι διόρθωσης τροφοδοτώντας το αρχείο
με την καλύτερη αξιολόγηση, του προηγουμένου κύκλου.
Μετά από 2 κύκλους, ελέγχεται αν το τελικό αρχείο
περιέχει τις επιθυμητές διορθώσεις
3.
Επιστροφή διορθωμένων αρχείων σε όλες τις
περιπτώσεις του πειράματος
18. Συμπεράσματα
Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα
Θωμάς Κανούτας
1
2
3
Συνολικό σύστημα εντοπισμού και διόρθωσης σφαλμάτων
μορφοποίησης το οποίο δύναται να προσαρμοστεί σε διαφορετικά
πρότυπα χωρίς όγκο παραμετροποιήσεων
Ικανότητα τόσο των βαθιών νευρωνικών δικτύων τύπου LSTM όσο και
των μοντέλων γλώσσας Ν-gram να αποτυπώσουν τις στατιστικές
ιδιότητες αρχείων πηγαίου κώδικα
Εξαιρετική απόδοση του συνολικού συστήματος τόσο στον εντοπισμό
των σφαλμάτων μορφοποίησης όσο και στην διόρθωσή τους
18
19. Μελλοντική Εργασία
1
2
3
4
Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα
Θωμάς Κανούτας
Εύρεση αυτοματοποιημένης μεθόδου αξιολόγησης του υποσυστήματος διόρθωσης σφαλμάτων
μορφοποίησης με στόχο την αξιολόγησή του σε μεγαλύτερο όγκο δεδομένων
Περαιτέρω αξιολόγηση του συστήματος σε διαφορετικές γλώσσες προγραμματισμού
Χρήση και αξιολόγηση διαφορετικών αρχιτεκτονικών βαθιών νευρωνικών δικτύων
εκτός από τα LSTM
Εκπαίδευση και αξιολόγηση του συστήματος σε διαφορετικά πρότυπα
μορφοποίησης με διαφορετικά χαρακτηριστικά
19
21. Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα
Θωμάς Κανούτας
7
Συλλογή Δεδομένων
1.
2.
3.
Aρχεία κώδικα σε γλώσσα Java από 10.000 διαφορετικά αποθετήρια
κώδικα στο GitHub
Φιλτράρισμα με χρήση regex και τελική επιλογή 8.500 αρχείων τα
οποία υπακούν σε συγκεκριμένα και ευρέως αποδεκτά πρότυπα
μορφοποίησης
8500 αρχεία Java αποτελούν το σύνολο εκπαίδευσης για τα μοντέλα
του συνολικού συστήματος
Παράδειγμαregex
ΤμήμαΚώδικα