Measuring and improving code readability is important, since a lot of human effort is required during the project lifetime in reading and understanding code. Various models have been proposed to automatically evaluate how easy it is for a human to read or understand a piece of source code. In this thesis, we are looking into which models and metrics are sensitive to small changes in readability (one commit). After searching in open-source code repositories, we found readability-improving commits and also selected some random non-readability improving commits. For each changed file we calculated various metrics and readability models before and after the commit. Then, we measured the difference in each metric before and after the commits, and also between readability and non-readability improving commits. We also developed a new model that is sensitive to such small changes. To build our candidate models, we employed Support Vector Regression with linear, RBF, or polynomial kernels, and cross-validation for training. To determine the input features we applied Sequential backward selection. We found that most metrics show no statistically significant changes after readability commits, and the rest had a very small effect size. When comparing changes after readability commits to non-readability commits, the effect size is larger: almost all metrics have a noticable change and at least a small or very small effect size. The SVR code readability model that we trained employs 9 features, and has approximately the same or slightly larger differences after readability commits, compared to the existing readability models.
ΣΧΕΔΙΑΣΗ ΚΑΙ ΑΝΑΠΤΥΞΗ ΜΗΧΑΝΙΣΜΟΥ ΑΥΤΟΜΑΤΟΠΟΙΗΣΗΣ ΤΗΣ ΑΝΑΠΤΥΞΗΣ ΓΡΑΦΙΚΩΝ ΕΝΤΟΛ...
Evaluating code readability models in incremental changes and developing a new model
1. 1
Αξιολόγηση μοντέλων αναγνωσιμότητας κώδικα σε μικρές μεταβολές και κατασκευή νέου μοντέλου
Ιούλιος 2022
Αξιολόγηση μοντέλων
αναγνωσιμότητας κώδικα
σε μικρές μεταβολές και
κατασκευή νέου μοντέλου
Διπλωματική Εργασία
Εκπόνηση:
Ανέστης Βαρσαμίδης
ΑΕΜ 9112
Επίβλεψη:
Καθηγητής Ανδρέας Συμεωνίδης
Υποψήφιος διδάκτωρ
Θωμάς Καρανικιώτης
2. 2
Αξιολόγηση μοντέλων αναγνωσιμότητας κώδικα σε μικρές μεταβολές και κατασκευή νέου μοντέλου
Ιούλιος 2022
Μοντέλα αναγνωσιμότητας κώδικα
Είναι συνάρτηση διαφόρων μετρικών,
όπως αριθμός γραμμών, μέσο μήκος
γραμμών, μέσο μήκος identifiers,
DFT της στοίχισης του κώδικα, κα.
Τα μοντέλα που θα αξιολογήσουμε:
● Buse&Weimer
● Posnett
● Dorn (προσέγγιση)
● Scalabrino
● Καρανικιώτης (ISSEL)
Μοντέλο
αναγνωσιμότητας
Αρχείο
κώδικα
Σκορ
3. 3
Αξιολόγηση μοντέλων αναγνωσιμότητας κώδικα σε μικρές μεταβολές και κατασκευή νέου μοντέλου
Ιούλιος 2022
Στόχος της διπλωματικής
Να εξετάσουμε εάν τα σκορ αναγνωσιμότητας κώδικα βελτιώνονται μετά
από commit που υποστηρίζουν ότι βελτιώνουν την αναγνωσιμότητα
Να βρούμε ποιες μετρικές μεταβάλλονται σημαντικά στα
commits αναγνωσιμότητας,
και άρα θα μπορούσαν να χρησιμοποιηθούν σε ένα νέο μοντέλο;
Να φτιάξουμε ένα μοντέλο αναγνωσιμότητας με αυτές τις μετρικές
5. 5
Αξιολόγηση μοντέλων αναγνωσιμότητας κώδικα σε μικρές μεταβολές και κατασκευή νέου μοντέλου
Ιούλιος 2022
Επιλογή repositories: από τα δημοφιλέστερα του GitHub σε Java
Γιατί Java? Όλα τα μοντέλα υποστηρίζουν κώδικες Java
Επιλογή readability commits:
- Αρχικά αναζήτηση στα μηνύματα των commit με λέξεις-κλειδιά, πχ
readable, readability, easier to read, comprehensible, understandable
- Έπειτα, έλεγχος των μηνυμάτων για επαλήθευση ότι το commit έχει σκοπό
τη βελτίωση της αναγνωσιμότητας. Περίπου τα μισά ήταν ψευδώς θετικά
Επιλογή non-readability commits, για σύγκριση: τυχαία
6. 6
Αξιολόγηση μοντέλων αναγνωσιμότητας κώδικα σε μικρές μεταβολές και κατασκευή νέου μοντέλου
Ιούλιος 2022
“Υλοποίηση” των μοντέλων
● Μοντέλα Buse-Weimer, Scalabrino, Issel: Χρήση έτοιμων εκτελέσιμων,
εκπαιδευμένων μοντέλων
○ στο Buse-Weimer, σαν είσοδος δινόταν snippets 8 γραμμών
● Μοντέλο Posnett: Χρήση του τύπου λογιστικής παλινδρόμησης που
περιέχει στο paper: logistic(8.87 − 0.033 V + 0.40 Lines −1.5 Entropy)
● Dorn: προσπάθεια ανακατασκευής μοντέλου από τα δεδομένα και το paper
○ κατώφλι για Long lines? Επιλέξαμε Q3 +1.5 IQR του μήκους των μη κενών γραμμών από
τα αρχεία Java του dataset. = 113 χαρακτήρες
○ Σταθερά +c ? Για ελάχιστο MSE μεταξύ αναγν. από ερωτηματολόγια, και του σκορ.
c=1.4
○ Τελικά, σκορ = logistic(-0.0388 * Dorn DFT Spaces - 0.0349 * long lines - 0.0114 *
lines_per_identifier + 0.004 * keywords + 1.4)
7. 7
Αξιολόγηση μοντέλων αναγνωσιμότητας κώδικα σε μικρές μεταβολές και κατασκευή νέου μοντέλου
Ιούλιος 2022
Τα ερωτήματα που μελετάμε
Από το metric generation καταλήγουμε με 2 τιμές για κάθε μετρική (ή μοντέλο)
για κάθε αρχείο Java που τροποποιήθηκε σε κάποιο commit: την μετρική πριν το
commit και μετά
Q1a: σε ποιες μετρικές ή μοντέλα παρατηρείται αύξηση της μέσης τιμής μετά
από readability commits
Δηλαδή για κάθε μετρική συγκρίνουμε τα 2 σύνολα: {η μετρική για κάθε αρχείο
πριν το commit} {η μετρική για κάθε αρχείο μετά το commit}
Q1b: το ίδιο για τα non-readability commits
8. 8
Αξιολόγηση μοντέλων αναγνωσιμότητας κώδικα σε μικρές μεταβολές και κατασκευή νέου μοντέλου
Ιούλιος 2022
Τα ερωτήματα που μελετάμε (2)
Q2: ποιες μετρικές ή μοντέλα μεταβάλλονται στα readability commits
διαφορετικά από ότι στα non-readability
Δηλαδή για κάθε μετρική συγκρίνουμε τα 2 σύνολα: {οι διαφορές μετά-πριν για
κάθε αρχείο σε readability commits} {οι διαφορές για κάθε αρχείο σε non-
readability commits}
Q3: μπορεί να κατασκευαστεί ένα μοντέλο αναγνωσιμότητας
ώστε το σκορ να βελτιώνεται μετά από readability commits;
9. 9
Αξιολόγηση μοντέλων αναγνωσιμότητας κώδικα σε μικρές μεταβολές και κατασκευή νέου μοντέλου
Ιούλιος 2022
Πώς εξετάζουμε τα ερωτήματα
Cohen’s delta
για interval δεδομένα
d = (μ1 - μ2) / σ
t-test για διαφορά μέσων τιμών
Τ = d √N >? Tthreshold
Cliff’s Delta
για ordinal δεδομένα
Πόσο συχνά οι τιμές του ενός συνόλου
είναι μεγαλύτερες από του δεύτερου
Mann–Whitney U statistic
U = (d+1)*mn / 2 >? Uthreshold
Effect size |d|
Very small 0.01
Small 0.20
Medium 0.50
Large 0.80
10. 10
Αξιολόγηση μοντέλων αναγνωσιμότητας κώδικα σε μικρές μεταβολές και κατασκευή νέου μοντέλου
Ιούλιος 2022
Κριτήρια
Για το t-test και το Mann-Whitney U, το κατώφλια υπολογίζονται με βάση την
μηδενική υπόθεση, ότι δεν υπάρχει διαφορά στις δύο κατανομές, και ότι είναι
κανονικές. Επιλέγουμε κριτήριο p-value < 0.05
Για το Cohen’s d:
- στο Q1, όλες οι μετρικές είχαν λιγότερο από μικρό |d| < 0.1
Αναμενόμενο, αφού μεσολαβεί μόνο ένα commit. Βάζουμε όριο |d| > 0.01
- στο Q2 βάζουμε όριο |d|>0.14, δηλαδή σχεδόν μικρό effect size
11. 11
Αξιολόγηση μοντέλων αναγνωσιμότητας κώδικα σε μικρές μεταβολές και κατασκευή νέου μοντέλου
Ιούλιος 2022
Ομαδοποίηση ανά commit
Τα ερωτήματα εξετάζονται 2 φορές:
όταν τα Cliff’s, Cohen’s d κλπ υπολογίζονται για μία μετρική στα διάφορα
αρχεία,
και όταν, πριν υπολογίσουμε τα Cliff’s, Cohen’s d κλπ, ομαδοποιούμε τα
δεδομένα ανά commit. Δηλαδή, λέμε ότι πριν το commit x, η μετρική Α είναι ίση
με το μέσο όρο των τιμών της Α στα αρχεία που μεταβάλλονται στο commit x.
Αυτό τον τρόπο θα τον ονομάζουμε per-commit
12. 12
Αξιολόγηση μοντέλων αναγνωσιμότητας κώδικα σε μικρές μεταβολές και κατασκευή νέου μοντέλου
Ιούλιος 2022
Κατασκευή μοντέλου και επιλογή χαρακτηριστικών εισόδου
Ακολουθιακή
οπισθοδρομική επιλογή
13. 13
Αξιολόγηση μοντέλων αναγνωσιμότητας κώδικα σε μικρές μεταβολές και κατασκευή νέου μοντέλου
Ιούλιος 2022
Αποτελέσματα:
Q1a
πριν vs μετά
σε επίπεδο αρχείου
14. 14
Αξιολόγηση μοντέλων αναγνωσιμότητας κώδικα σε μικρές μεταβολές και κατασκευή νέου μοντέλου
Ιούλιος 2022
Αποτελέσματα:
Q1a
πριν vs μετά
σε επίπεδο commit
16. 16
Αξιολόγηση μοντέλων αναγνωσιμότητας κώδικα σε μικρές μεταβολές και κατασκευή νέου μοντέλου
Ιούλιος 2022
Αποτελέσματα: Q2 readability vs non-read. commits
σε επίπεδο αρχείου
17. 17
Αξιολόγηση μοντέλων αναγνωσιμότητας κώδικα σε μικρές μεταβολές και κατασκευή νέου μοντέλου
Ιούλιος 2022
Αποτελέσματα: Q2 readability vs non-read. commits
σε επίπεδο commit
18. 18
Αξιολόγηση μοντέλων αναγνωσιμότητας κώδικα σε μικρές μεταβολές και κατασκευή νέου μοντέλου
Ιούλιος 2022
Μετρική (σε επίπεδο αρχείου) Cohen Cliff t-test p-
value
mann-whitn p-
value
BW Max Identifiers Length -0.25118 -0.30673 1.50E-15 7.10E-14
BW Avg blank lines 0.19745 -0.71919 3.44E-10 1.05E-09
Dorn Visual X Numbers -0.19099 -0.88854 1.25E-09 5.87E-03
NA (Number of Attributes) -0.19437 -0.83025 1.49E-09 5.31E-14
Dorn DFT Operators -0.17844 -0.45594 1.38E-08 1.79E-16
NLA (Number of Local Attributes) -0.18101 -0.94814 1.66E-08 2.42E-11
TNLA (Total Number of Local Attributes) -0.17606 -0.94689 4.00E-08 1.63E-13
BW Avg Assignment -0.17256 -0.92510 4.03E-08 1.63E-04
NLE (Nesting Level Else-If) -0.17345 -0.98602 6.16E-08 3.99E-13
TNA (Total Number of Attributes) -0.17147 -0.82821 9.47E-08 3.67E-15
Dorn DFT Conditionals -0.16216 -0.44446 2.48E-07 5.82E-16
New Semantic Text Coherence Standard -0.16161 -0.45523 2.72E-07 2.56E-17
Posnett volume -0.15455 -0.46492 8.75E-07 1.57E-29
Dorn score 0.14697 -0.91512 2.90E-06 3.05E-10
NS (Number of Setters) -0.14851 -0.99301 3.70E-06 1.79E-08
NL (Nesting Level) -0.14682 -0.98818 4.58E-06 4.26E-11
Dorn DFT Numbers -0.14345 -0.40272 4.98E-06 1.98E-14
Dorn Visual Y Numbers -0.14235 -0.42903 5.88E-06 2.95E-13
Dorn DFT Spaces -0.14078 -0.46292 7.44E-06 4.58E-16
Dorn Visual X Identifiers -0.14073 -0.85257 7.47E-06 3.88E-05
Dorn Visual X Operators -0.14040 -0.84311 7.85E-06 4.30E-05
Dorn Visual X Keywords -0.14034 -0.84780 7.92E-06 3.36E-06
19. 19
Αξιολόγηση μοντέλων αναγνωσιμότητας κώδικα σε μικρές μεταβολές και κατασκευή νέου μοντέλου
Ιούλιος 2022
Αρχικό σύνολο features μοντέλων
Μετρικές που μεταβάλλονται μετά από readability commits και:
είτε μεταβάλλονται αντίθετα μετά από non-readability commits, είτε καθόλου
BW Avg Assignment BW Avg loops CC (Clone Coverage) NL (Nesting Level)
BW Avg blank lines BW Avg
parenthesis
CLC (Clone Line
Coverage)
NLA (Number of Local
Attributes)
BW Avg commas BW Avg spaces CLLC (Clone Logical
Line Coverage)
NLE (Nesting Level
Else-If )
BW Avg conditionals BW Max keywords karanikiotis_r_cmplx NS (Number of Setters)
BW Avg indentation
length
Dorn Visual X
Numbers
NA (Number of
Attributes)
TNA (Total Number of
Attributes)
20. 20
Αξιολόγηση μοντέλων αναγνωσιμότητας κώδικα σε μικρές μεταβολές και κατασκευή νέου μοντέλου
Ιούλιος 2022
Παράμετροι υποψήφιων μοντέλων
● Γραμμικό πυρήνα με τις προεπιλεγμένες υπερπαραμέτρους
● Γραμμικό πυρήνα με παράμετρο κανονικοποποίησης C = 0,2 ή C = 3.
(προεπιλογή: C = 1). Και στις δύο περιπτώσεις, χειρότερη απόδοση από C = 1
● Πολυωνυμικό πυρήνα, με συντελεστή γάμμα = 1/(nfeatures ⋅ Var( X ))
(“scale”, η προεπιλογή), ή γάμμα = 1/nfeatures (“auto”).
● Πυρήνα radial basis function (rbf), με συντελεστή γάμμα “scale” ή “auto”.
21. 21
Αξιολόγηση μοντέλων αναγνωσιμότητας κώδικα σε μικρές μεταβολές και κατασκευή νέου μοντέλου
Ιούλιος 2022
Επιλογή features του μοντέλου
RBF πυρήνας Γραμμικός πυρήνας
Μέσο τετραγωνικό σφάλμα vs Αριθμός χαρακτηριστικών εισόδου