Evaluating code readability models in incremental changes and developing a new model

ISSEL
ISSELISSEL
1
Αξιολόγηση μοντέλων αναγνωσιμότητας κώδικα σε μικρές μεταβολές και κατασκευή νέου μοντέλου
Ιούλιος 2022
Αξιολόγηση μοντέλων
αναγνωσιμότητας κώδικα
σε μικρές μεταβολές και
κατασκευή νέου μοντέλου
Διπλωματική Εργασία
Εκπόνηση:
Ανέστης Βαρσαμίδης
ΑΕΜ 9112
Επίβλεψη:
Καθηγητής Ανδρέας Συμεωνίδης
Υποψήφιος διδάκτωρ
Θωμάς Καρανικιώτης
2
Αξιολόγηση μοντέλων αναγνωσιμότητας κώδικα σε μικρές μεταβολές και κατασκευή νέου μοντέλου
Ιούλιος 2022
Μοντέλα αναγνωσιμότητας κώδικα
Είναι συνάρτηση διαφόρων μετρικών,
όπως αριθμός γραμμών, μέσο μήκος
γραμμών, μέσο μήκος identifiers,
DFT της στοίχισης του κώδικα, κα.
Τα μοντέλα που θα αξιολογήσουμε:
● Buse&Weimer
● Posnett
● Dorn (προσέγγιση)
● Scalabrino
● Καρανικιώτης (ISSEL)
Μοντέλο
αναγνωσιμότητας
Αρχείο
κώδικα
Σκορ
3
Αξιολόγηση μοντέλων αναγνωσιμότητας κώδικα σε μικρές μεταβολές και κατασκευή νέου μοντέλου
Ιούλιος 2022
Στόχος της διπλωματικής
Να εξετάσουμε εάν τα σκορ αναγνωσιμότητας κώδικα βελτιώνονται μετά
από commit που υποστηρίζουν ότι βελτιώνουν την αναγνωσιμότητα
Να βρούμε ποιες μετρικές μεταβάλλονται σημαντικά στα
commits αναγνωσιμότητας,
και άρα θα μπορούσαν να χρησιμοποιηθούν σε ένα νέο μοντέλο;
Να φτιάξουμε ένα μοντέλο αναγνωσιμότητας με αυτές τις μετρικές
4
Αξιολόγηση μοντέλων αναγνωσιμότητας κώδικα σε μικρές μεταβολές και κατασκευή νέου μοντέλου
Ιούλιος 2022
Υπολογισμός των
μετρικών και σκορ
5
Αξιολόγηση μοντέλων αναγνωσιμότητας κώδικα σε μικρές μεταβολές και κατασκευή νέου μοντέλου
Ιούλιος 2022
Επιλογή repositories: από τα δημοφιλέστερα του GitHub σε Java
Γιατί Java? Όλα τα μοντέλα υποστηρίζουν κώδικες Java
Επιλογή readability commits:
- Αρχικά αναζήτηση στα μηνύματα των commit με λέξεις-κλειδιά, πχ
readable, readability, easier to read, comprehensible, understandable
- Έπειτα, έλεγχος των μηνυμάτων για επαλήθευση ότι το commit έχει σκοπό
τη βελτίωση της αναγνωσιμότητας. Περίπου τα μισά ήταν ψευδώς θετικά
Επιλογή non-readability commits, για σύγκριση: τυχαία
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
Αξιολόγηση μοντέλων αναγνωσιμότητας κώδικα σε μικρές μεταβολές και κατασκευή νέου μοντέλου
Ιούλιος 2022
Τα ερωτήματα που μελετάμε
Από το metric generation καταλήγουμε με 2 τιμές για κάθε μετρική (ή μοντέλο)
για κάθε αρχείο Java που τροποποιήθηκε σε κάποιο commit: την μετρική πριν το
commit και μετά
Q1a: σε ποιες μετρικές ή μοντέλα παρατηρείται αύξηση της μέσης τιμής μετά
από readability commits
Δηλαδή για κάθε μετρική συγκρίνουμε τα 2 σύνολα: {η μετρική για κάθε αρχείο
πριν το commit} {η μετρική για κάθε αρχείο μετά το commit}
Q1b: το ίδιο για τα non-readability commits
8
Αξιολόγηση μοντέλων αναγνωσιμότητας κώδικα σε μικρές μεταβολές και κατασκευή νέου μοντέλου
Ιούλιος 2022
Τα ερωτήματα που μελετάμε (2)
Q2: ποιες μετρικές ή μοντέλα μεταβάλλονται στα readability commits
διαφορετικά από ότι στα non-readability
Δηλαδή για κάθε μετρική συγκρίνουμε τα 2 σύνολα: {οι διαφορές μετά-πριν για
κάθε αρχείο σε readability commits} {οι διαφορές για κάθε αρχείο σε non-
readability commits}
Q3: μπορεί να κατασκευαστεί ένα μοντέλο αναγνωσιμότητας
ώστε το σκορ να βελτιώνεται μετά από readability commits;
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
Αξιολόγηση μοντέλων αναγνωσιμότητας κώδικα σε μικρές μεταβολές και κατασκευή νέου μοντέλου
Ιούλιος 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
Αξιολόγηση μοντέλων αναγνωσιμότητας κώδικα σε μικρές μεταβολές και κατασκευή νέου μοντέλου
Ιούλιος 2022
Ομαδοποίηση ανά commit
Τα ερωτήματα εξετάζονται 2 φορές:
όταν τα Cliff’s, Cohen’s d κλπ υπολογίζονται για μία μετρική στα διάφορα
αρχεία,
και όταν, πριν υπολογίσουμε τα Cliff’s, Cohen’s d κλπ, ομαδοποιούμε τα
δεδομένα ανά commit. Δηλαδή, λέμε ότι πριν το commit x, η μετρική Α είναι ίση
με το μέσο όρο των τιμών της Α στα αρχεία που μεταβάλλονται στο commit x.
Αυτό τον τρόπο θα τον ονομάζουμε per-commit
12
Αξιολόγηση μοντέλων αναγνωσιμότητας κώδικα σε μικρές μεταβολές και κατασκευή νέου μοντέλου
Ιούλιος 2022
Κατασκευή μοντέλου και επιλογή χαρακτηριστικών εισόδου
Ακολουθιακή
οπισθοδρομική επιλογή
13
Αξιολόγηση μοντέλων αναγνωσιμότητας κώδικα σε μικρές μεταβολές και κατασκευή νέου μοντέλου
Ιούλιος 2022
Αποτελέσματα:
Q1a
πριν vs μετά
σε επίπεδο αρχείου
14
Αξιολόγηση μοντέλων αναγνωσιμότητας κώδικα σε μικρές μεταβολές και κατασκευή νέου μοντέλου
Ιούλιος 2022
Αποτελέσματα:
Q1a
πριν vs μετά
σε επίπεδο commit
15
Αξιολόγηση μοντέλων αναγνωσιμότητας κώδικα σε μικρές μεταβολές και κατασκευή νέου μοντέλου
Ιούλιος 2022
Μετρική
(σε επίπεδο αρχείου)
q1a
cohen
q1a cliff q1a ttest
pval
q1a wilcoxon
pval
q1b
cohen
q1b cliff q1b ttest
pval
q1b wilcoxon
pval
BW Avg blank lines 0.03795 0.01712 0.000003 0.014149 -0.01029 -0.55715 0.005039 0.000000
CC (Clone Coverage) -0.04800 -0.99747 0.000009 0.000000 0.00203 -0.97974 0.750903 0.000000
BW Avg Assignment -0.03325 -0.01731 0.000013 0.000000 0.00904 0.01767 0.016432 0.675391
CLLC (Cl. Log. Line Cov.) -0.04944 -0.99747 0.000020 0.000000 0.00087 -0.98043 0.933312 0.000000
Dorn Visual X Numbers -0.02632 -0.01055 0.000045 0.036398 0.01728 0.01213 0.000027 0.000537
NLE (Nesting Lvl Else-If) -0.03021 -0.99747 0.000049 0.000000 0.00813 -0.95911 0.011213 0.000000
BW Avg loops -0.02086 -0.00791 0.000154 0.000000 0.01436 0.00882 0.004245 0.000000
CLC (Clone Line Cov.) -0.04269 -0.99747 0.000217 0.000000 0.00474 -0.98043 0.383319 0.000000
NA (Number of Attributes) -0.02529 -0.97351 0.000264 0.000000 0.00570 -0.75052 0.000000 0.000000
NL (Nesting Level) -0.02957 -0.99747 0.000858 0.000000 0.00586 -0.75046 0.023617 0.000000
BW Avg conditionals -0.02414 -0.01458 0.001004 0.000011 0.00224 0.00349 0.461382 0.000001
BW Avg commas -0.01957 -0.00880 0.001965 0.023494 0.00602 -0.64362 0.012068 0.156621
TNA (Total # Attributes) -0.01938 -0.65000 0.002735 0.000000 0.00632 -0.71834 0.000000 0.000000
BW Max keywords -0.01687 -0.01357 0.004874 0.005659 -0.00124 0.01731 0.706635 0.364976
NLA (# Local Attributes) -0.01057 -0.34891 0.006834 0.000000 0.00537 -0.74814 0.000000 0.000000
NS (Number of Setters) -0.01385 -0.99747 0.010056 0.000000 0.00276 -0.88871 0.000002 0.000000
BW Avg spaces -0.02144 -0.01080 0.011362 0.000099 0.00647 -0.77531 0.012598 0.000003
BW Avg parenthesis -0.01320 -0.00655 0.017536 0.002476 0.00534 -0.55999 0.021778 0.690260
issel_r_cmplx 0.02476 -0.92892 0.019222 0.004127 0.00943 -0.75445 0.140701 0.000008
BW Avg indentation length -0.02039 -0.00958 0.021713 0.000081 0.00482 -0.75455 0.069441 0.008891
Dorn score 0.01716 0.00258 0.024127 0.000060 -0.02144 -0.58388 0.000001 0.000000
Issel score 0.02051 -0.76760 0.024438 0.017263 0.00650 -0.88910 0.213736 0.000017
Dorn Areas Identifiers 0.01175 0.00428 0.034597 0.000158 0.01341 -0.56156 0.000000 0.000000
Posnett entropy 0.01784 0.00629 0.035151 0.000041 0.01036 -0.77064 0.000575 0.000001
16
Αξιολόγηση μοντέλων αναγνωσιμότητας κώδικα σε μικρές μεταβολές και κατασκευή νέου μοντέλου
Ιούλιος 2022
Αποτελέσματα: Q2 readability vs non-read. commits
σε επίπεδο αρχείου
17
Αξιολόγηση μοντέλων αναγνωσιμότητας κώδικα σε μικρές μεταβολές και κατασκευή νέου μοντέλου
Ιούλιος 2022
Αποτελέσματα: Q2 readability vs non-read. commits
σε επίπεδο commit
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
Αξιολόγηση μοντέλων αναγνωσιμότητας κώδικα σε μικρές μεταβολές και κατασκευή νέου μοντέλου
Ιούλιος 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
Αξιολόγηση μοντέλων αναγνωσιμότητας κώδικα σε μικρές μεταβολές και κατασκευή νέου μοντέλου
Ιούλιος 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
Αξιολόγηση μοντέλων αναγνωσιμότητας κώδικα σε μικρές μεταβολές και κατασκευή νέου μοντέλου
Ιούλιος 2022
Επιλογή features του μοντέλου
RBF πυρήνας Γραμμικός πυρήνας
Μέσο τετραγωνικό σφάλμα vs Αριθμός χαρακτηριστικών εισόδου
22
Αξιολόγηση μοντέλων αναγνωσιμότητας κώδικα σε μικρές μεταβολές και κατασκευή νέου μοντέλου
Ιούλιος 2022
1 of 22

Recommended

Βελτίωση Αυτοματοποιημένης Ανάθεσης Εργασιών Λογισμικού με χρήση Commits σε Δ... by
Βελτίωση Αυτοματοποιημένης Ανάθεσης Εργασιών Λογισμικού με χρήση Commits σε Δ...Βελτίωση Αυτοματοποιημένης Ανάθεσης Εργασιών Λογισμικού με χρήση Commits σε Δ...
Βελτίωση Αυτοματοποιημένης Ανάθεσης Εργασιών Λογισμικού με χρήση Commits σε Δ...ISSEL
29 views38 slides
Μιχαήλ Παπαμιχαήλ by
Μιχαήλ ΠαπαμιχαήλΜιχαήλ Παπαμιχαήλ
Μιχαήλ ΠαπαμιχαήλISSEL
160 views28 slides
Υποδικτύωση by
ΥποδικτύωσηΥποδικτύωση
ΥποδικτύωσηΕλένη Μουστάκα
10.4K views31 slides
Konstantinos Papadopoulos Diploma Thesis presenation by
Konstantinos Papadopoulos Diploma Thesis presenationKonstantinos Papadopoulos Diploma Thesis presenation
Konstantinos Papadopoulos Diploma Thesis presenationISSEL
219 views16 slides
Optimization of traffic lights timing using Reinforcement learning to minimiz... by
Optimization of traffic lights timing using Reinforcement learning to minimiz...Optimization of traffic lights timing using Reinforcement learning to minimiz...
Optimization of traffic lights timing using Reinforcement learning to minimiz...ISSEL
13 views29 slides
Υπολογισμός χρονισμού φωτεινών σηματοδοτών με χρήση ενισχυτικής μάθησης προς ... by
Υπολογισμός χρονισμού φωτεινών σηματοδοτών με χρήση ενισχυτικής μάθησης προς ...Υπολογισμός χρονισμού φωτεινών σηματοδοτών με χρήση ενισχυτικής μάθησης προς ...
Υπολογισμός χρονισμού φωτεινών σηματοδοτών με χρήση ενισχυτικής μάθησης προς ...ISSEL
48 views29 slides

More Related Content

More from ISSEL

Design and implementation of an automation mechanism to automatically develop... by
Design and implementation of an automation mechanism to automatically develop...Design and implementation of an automation mechanism to automatically develop...
Design and implementation of an automation mechanism to automatically develop...ISSEL
4 views17 slides
ΣΧΕΔΙΑΣΗ ΚΑΙ ΑΝΑΠΤΥΞΗ ΜΗΧΑΝΙΣΜΟΥ ΑΥΤΟΜΑΤΟΠΟΙΗΣΗΣ ΤΗΣ ΑΝΑΠΤΥΞΗΣ ΓΡΑΦΙΚΩΝ ΕΝΤΟΛ... by
ΣΧΕΔΙΑΣΗ ΚΑΙ ΑΝΑΠΤΥΞΗ ΜΗΧΑΝΙΣΜΟΥ ΑΥΤΟΜΑΤΟΠΟΙΗΣΗΣ ΤΗΣ ΑΝΑΠΤΥΞΗΣ ΓΡΑΦΙΚΩΝ ΕΝΤΟΛ...ΣΧΕΔΙΑΣΗ ΚΑΙ ΑΝΑΠΤΥΞΗ ΜΗΧΑΝΙΣΜΟΥ ΑΥΤΟΜΑΤΟΠΟΙΗΣΗΣ ΤΗΣ ΑΝΑΠΤΥΞΗΣ ΓΡΑΦΙΚΩΝ ΕΝΤΟΛ...
ΣΧΕΔΙΑΣΗ ΚΑΙ ΑΝΑΠΤΥΞΗ ΜΗΧΑΝΙΣΜΟΥ ΑΥΤΟΜΑΤΟΠΟΙΗΣΗΣ ΤΗΣ ΑΝΑΠΤΥΞΗΣ ΓΡΑΦΙΚΩΝ ΕΝΤΟΛ...ISSEL
6 views17 slides
Static Analysis of Python code and Identification of Potential Security Vulne... by
Static Analysis of Python code and Identification of Potential Security Vulne...Static Analysis of Python code and Identification of Potential Security Vulne...
Static Analysis of Python code and Identification of Potential Security Vulne...ISSEL
7 views16 slides
Στατική Ανάλυση Κώδικα Python και Αναγνώριση Πιθανών Ευπαθειών Ασφαλείας για ... by
Στατική Ανάλυση Κώδικα Python και Αναγνώριση Πιθανών Ευπαθειών Ασφαλείας για ...Στατική Ανάλυση Κώδικα Python και Αναγνώριση Πιθανών Ευπαθειών Ασφαλείας για ...
Στατική Ανάλυση Κώδικα Python και Αναγνώριση Πιθανών Ευπαθειών Ασφαλείας για ...ISSEL
26 views27 slides
Design and Development of an Authorization and Access Control Mechanism for C... by
Design and Development of an Authorization and Access Control Mechanism for C...Design and Development of an Authorization and Access Control Mechanism for C...
Design and Development of an Authorization and Access Control Mechanism for C...ISSEL
13 views27 slides
Σχεδίαση και Ανάπτυξη Μηχανισμού Εξουσιοδότησης και Ελέγχου Πρόσβασης σε Συνο... by
Σχεδίαση και Ανάπτυξη Μηχανισμού Εξουσιοδότησης και Ελέγχου Πρόσβασης σε Συνο...Σχεδίαση και Ανάπτυξη Μηχανισμού Εξουσιοδότησης και Ελέγχου Πρόσβασης σε Συνο...
Σχεδίαση και Ανάπτυξη Μηχανισμού Εξουσιοδότησης και Ελέγχου Πρόσβασης σε Συνο...ISSEL
19 views27 slides

More from ISSEL(20)

Design and implementation of an automation mechanism to automatically develop... by ISSEL
Design and implementation of an automation mechanism to automatically develop...Design and implementation of an automation mechanism to automatically develop...
Design and implementation of an automation mechanism to automatically develop...
ISSEL4 views
ΣΧΕΔΙΑΣΗ ΚΑΙ ΑΝΑΠΤΥΞΗ ΜΗΧΑΝΙΣΜΟΥ ΑΥΤΟΜΑΤΟΠΟΙΗΣΗΣ ΤΗΣ ΑΝΑΠΤΥΞΗΣ ΓΡΑΦΙΚΩΝ ΕΝΤΟΛ... by ISSEL
ΣΧΕΔΙΑΣΗ ΚΑΙ ΑΝΑΠΤΥΞΗ ΜΗΧΑΝΙΣΜΟΥ ΑΥΤΟΜΑΤΟΠΟΙΗΣΗΣ ΤΗΣ ΑΝΑΠΤΥΞΗΣ ΓΡΑΦΙΚΩΝ ΕΝΤΟΛ...ΣΧΕΔΙΑΣΗ ΚΑΙ ΑΝΑΠΤΥΞΗ ΜΗΧΑΝΙΣΜΟΥ ΑΥΤΟΜΑΤΟΠΟΙΗΣΗΣ ΤΗΣ ΑΝΑΠΤΥΞΗΣ ΓΡΑΦΙΚΩΝ ΕΝΤΟΛ...
ΣΧΕΔΙΑΣΗ ΚΑΙ ΑΝΑΠΤΥΞΗ ΜΗΧΑΝΙΣΜΟΥ ΑΥΤΟΜΑΤΟΠΟΙΗΣΗΣ ΤΗΣ ΑΝΑΠΤΥΞΗΣ ΓΡΑΦΙΚΩΝ ΕΝΤΟΛ...
ISSEL6 views
Static Analysis of Python code and Identification of Potential Security Vulne... by ISSEL
Static Analysis of Python code and Identification of Potential Security Vulne...Static Analysis of Python code and Identification of Potential Security Vulne...
Static Analysis of Python code and Identification of Potential Security Vulne...
ISSEL7 views
Στατική Ανάλυση Κώδικα Python και Αναγνώριση Πιθανών Ευπαθειών Ασφαλείας για ... by ISSEL
Στατική Ανάλυση Κώδικα Python και Αναγνώριση Πιθανών Ευπαθειών Ασφαλείας για ...Στατική Ανάλυση Κώδικα Python και Αναγνώριση Πιθανών Ευπαθειών Ασφαλείας για ...
Στατική Ανάλυση Κώδικα Python και Αναγνώριση Πιθανών Ευπαθειών Ασφαλείας για ...
ISSEL26 views
Design and Development of an Authorization and Access Control Mechanism for C... by ISSEL
Design and Development of an Authorization and Access Control Mechanism for C...Design and Development of an Authorization and Access Control Mechanism for C...
Design and Development of an Authorization and Access Control Mechanism for C...
ISSEL13 views
Σχεδίαση και Ανάπτυξη Μηχανισμού Εξουσιοδότησης και Ελέγχου Πρόσβασης σε Συνο... by ISSEL
Σχεδίαση και Ανάπτυξη Μηχανισμού Εξουσιοδότησης και Ελέγχου Πρόσβασης σε Συνο...Σχεδίαση και Ανάπτυξη Μηχανισμού Εξουσιοδότησης και Ελέγχου Πρόσβασης σε Συνο...
Σχεδίαση και Ανάπτυξη Μηχανισμού Εξουσιοδότησης και Ελέγχου Πρόσβασης σε Συνο...
ISSEL19 views
Analysis and profiling of developer profiles using data mining techniques fro... by ISSEL
Analysis and profiling of developer profiles using data mining techniques fro...Analysis and profiling of developer profiles using data mining techniques fro...
Analysis and profiling of developer profiles using data mining techniques fro...
ISSEL3 views
Ανάλυση και μοντελοποίηση προφίλ προγραμματιστών μέσω τεχνικών εξόρυξης γνώση... by ISSEL
Ανάλυση και μοντελοποίηση προφίλ προγραμματιστών μέσω τεχνικών εξόρυξης γνώση...Ανάλυση και μοντελοποίηση προφίλ προγραμματιστών μέσω τεχνικών εξόρυξης γνώση...
Ανάλυση και μοντελοποίηση προφίλ προγραμματιστών μέσω τεχνικών εξόρυξης γνώση...
ISSEL8 views
TOWARDS AN AUTOMATED SOURCE CODE FORMATTING SYSTEM by ISSEL
TOWARDS AN AUTOMATED SOURCE CODE FORMATTING SYSTEMTOWARDS AN AUTOMATED SOURCE CODE FORMATTING SYSTEM
TOWARDS AN AUTOMATED SOURCE CODE FORMATTING SYSTEM
ISSEL3 views
ΔΗΜΙΟΥΡΓΙΑ ΣΥΣΤΗΜΑΤΟΣ ΓΙΑ ΤΗΝ ΠΑΡΟΧΗ ΠΡΟΤΑΣΕΩΝ ΒΕΛΤΙΩΣΗΣ ΤΗΣ ΜΟΡΦΟΠΟΙΗΣΗΣ ΠΗΓ... by ISSEL
ΔΗΜΙΟΥΡΓΙΑ ΣΥΣΤΗΜΑΤΟΣ ΓΙΑ ΤΗΝ ΠΑΡΟΧΗ ΠΡΟΤΑΣΕΩΝ ΒΕΛΤΙΩΣΗΣ ΤΗΣ ΜΟΡΦΟΠΟΙΗΣΗΣ ΠΗΓ...ΔΗΜΙΟΥΡΓΙΑ ΣΥΣΤΗΜΑΤΟΣ ΓΙΑ ΤΗΝ ΠΑΡΟΧΗ ΠΡΟΤΑΣΕΩΝ ΒΕΛΤΙΩΣΗΣ ΤΗΣ ΜΟΡΦΟΠΟΙΗΣΗΣ ΠΗΓ...
ΔΗΜΙΟΥΡΓΙΑ ΣΥΣΤΗΜΑΤΟΣ ΓΙΑ ΤΗΝ ΠΑΡΟΧΗ ΠΡΟΤΑΣΕΩΝ ΒΕΛΤΙΩΣΗΣ ΤΗΣ ΜΟΡΦΟΠΟΙΗΣΗΣ ΠΗΓ...
ISSEL11 views
System Development for Prediction of Static Analysis Metrics of Source Code by ISSEL
System Development for Prediction of Static Analysis Metrics of Source CodeSystem Development for Prediction of Static Analysis Metrics of Source Code
System Development for Prediction of Static Analysis Metrics of Source Code
ISSEL6 views
Ανάπτυξη συστήματος πρόβλεψης της εξέλιξης των μετρικών στατικής ανάλυσης πηγ... by ISSEL
Ανάπτυξη συστήματος πρόβλεψης της εξέλιξης των μετρικών στατικής ανάλυσης πηγ...Ανάπτυξη συστήματος πρόβλεψης της εξέλιξης των μετρικών στατικής ανάλυσης πηγ...
Ανάπτυξη συστήματος πρόβλεψης της εξέλιξης των μετρικών στατικής ανάλυσης πηγ...
ISSEL11 views
Micro Front-ends and Microservices Architecture in Web Application Development by ISSEL
Micro Front-ends and Microservices Architecture in Web Application DevelopmentMicro Front-ends and Microservices Architecture in Web Application Development
Micro Front-ends and Microservices Architecture in Web Application Development
ISSEL8 views
Η αρχιτεκτονική των Microservices και Micro Front-ends στην Ανάπτυξη Εφαρµογώ... by ISSEL
Η αρχιτεκτονική των Microservices και Micro Front-ends στην Ανάπτυξη Εφαρµογώ...Η αρχιτεκτονική των Microservices και Micro Front-ends στην Ανάπτυξη Εφαρµογώ...
Η αρχιτεκτονική των Microservices και Micro Front-ends στην Ανάπτυξη Εφαρµογώ...
ISSEL19 views
Indoor localization using wireless networks by ISSEL
Indoor localization using wireless networksIndoor localization using wireless networks
Indoor localization using wireless networks
ISSEL5 views
Εντοπισμός θέσης σε εσωτερικούς χώρους με χρήση ασύρματων δικτύων by ISSEL
Εντοπισμός θέσης σε εσωτερικούς χώρους με χρήση ασύρματων δικτύωνΕντοπισμός θέσης σε εσωτερικούς χώρους με χρήση ασύρματων δικτύων
Εντοπισμός θέσης σε εσωτερικούς χώρους με χρήση ασύρματων δικτύων
ISSEL10 views
Design and implementation of a big data architecture for storage, real-time p... by ISSEL
Design and implementation of a big data architecture for storage, real-time p...Design and implementation of a big data architecture for storage, real-time p...
Design and implementation of a big data architecture for storage, real-time p...
ISSEL9 views
Σχεδιασµός και υλοποίηση µιας αρχιτεκτονικής µεγάλων δεδοµένων για την αποθήκ... by ISSEL
Σχεδιασµός και υλοποίηση µιας αρχιτεκτονικής µεγάλων δεδοµένων για την αποθήκ...Σχεδιασµός και υλοποίηση µιας αρχιτεκτονικής µεγάλων δεδοµένων για την αποθήκ...
Σχεδιασµός και υλοποίηση µιας αρχιτεκτονικής µεγάλων δεδοµένων για την αποθήκ...
ISSEL16 views
Ανάπτυξη Συστήματος Παραγωγής Ερωτήσεων & Γνωσιακού Γράφου από Πρόσφατα Νέα μ... by ISSEL
Ανάπτυξη Συστήματος Παραγωγής Ερωτήσεων & Γνωσιακού Γράφου από Πρόσφατα Νέα μ...Ανάπτυξη Συστήματος Παραγωγής Ερωτήσεων & Γνωσιακού Γράφου από Πρόσφατα Νέα μ...
Ανάπτυξη Συστήματος Παραγωγής Ερωτήσεων & Γνωσιακού Γράφου από Πρόσφατα Νέα μ...
ISSEL15 views
Development of a system for designing remote digital image processing pipelin... by ISSEL
Development of a system for designing remote digital image processing pipelin...Development of a system for designing remote digital image processing pipelin...
Development of a system for designing remote digital image processing pipelin...
ISSEL5 views

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 αναγνωσιμότητας, και άρα θα μπορούσαν να χρησιμοποιηθούν σε ένα νέο μοντέλο; Να φτιάξουμε ένα μοντέλο αναγνωσιμότητας με αυτές τις μετρικές
  • 4. 4 Αξιολόγηση μοντέλων αναγνωσιμότητας κώδικα σε μικρές μεταβολές και κατασκευή νέου μοντέλου Ιούλιος 2022 Υπολογισμός των μετρικών και σκορ
  • 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
  • 15. 15 Αξιολόγηση μοντέλων αναγνωσιμότητας κώδικα σε μικρές μεταβολές και κατασκευή νέου μοντέλου Ιούλιος 2022 Μετρική (σε επίπεδο αρχείου) q1a cohen q1a cliff q1a ttest pval q1a wilcoxon pval q1b cohen q1b cliff q1b ttest pval q1b wilcoxon pval BW Avg blank lines 0.03795 0.01712 0.000003 0.014149 -0.01029 -0.55715 0.005039 0.000000 CC (Clone Coverage) -0.04800 -0.99747 0.000009 0.000000 0.00203 -0.97974 0.750903 0.000000 BW Avg Assignment -0.03325 -0.01731 0.000013 0.000000 0.00904 0.01767 0.016432 0.675391 CLLC (Cl. Log. Line Cov.) -0.04944 -0.99747 0.000020 0.000000 0.00087 -0.98043 0.933312 0.000000 Dorn Visual X Numbers -0.02632 -0.01055 0.000045 0.036398 0.01728 0.01213 0.000027 0.000537 NLE (Nesting Lvl Else-If) -0.03021 -0.99747 0.000049 0.000000 0.00813 -0.95911 0.011213 0.000000 BW Avg loops -0.02086 -0.00791 0.000154 0.000000 0.01436 0.00882 0.004245 0.000000 CLC (Clone Line Cov.) -0.04269 -0.99747 0.000217 0.000000 0.00474 -0.98043 0.383319 0.000000 NA (Number of Attributes) -0.02529 -0.97351 0.000264 0.000000 0.00570 -0.75052 0.000000 0.000000 NL (Nesting Level) -0.02957 -0.99747 0.000858 0.000000 0.00586 -0.75046 0.023617 0.000000 BW Avg conditionals -0.02414 -0.01458 0.001004 0.000011 0.00224 0.00349 0.461382 0.000001 BW Avg commas -0.01957 -0.00880 0.001965 0.023494 0.00602 -0.64362 0.012068 0.156621 TNA (Total # Attributes) -0.01938 -0.65000 0.002735 0.000000 0.00632 -0.71834 0.000000 0.000000 BW Max keywords -0.01687 -0.01357 0.004874 0.005659 -0.00124 0.01731 0.706635 0.364976 NLA (# Local Attributes) -0.01057 -0.34891 0.006834 0.000000 0.00537 -0.74814 0.000000 0.000000 NS (Number of Setters) -0.01385 -0.99747 0.010056 0.000000 0.00276 -0.88871 0.000002 0.000000 BW Avg spaces -0.02144 -0.01080 0.011362 0.000099 0.00647 -0.77531 0.012598 0.000003 BW Avg parenthesis -0.01320 -0.00655 0.017536 0.002476 0.00534 -0.55999 0.021778 0.690260 issel_r_cmplx 0.02476 -0.92892 0.019222 0.004127 0.00943 -0.75445 0.140701 0.000008 BW Avg indentation length -0.02039 -0.00958 0.021713 0.000081 0.00482 -0.75455 0.069441 0.008891 Dorn score 0.01716 0.00258 0.024127 0.000060 -0.02144 -0.58388 0.000001 0.000000 Issel score 0.02051 -0.76760 0.024438 0.017263 0.00650 -0.88910 0.213736 0.000017 Dorn Areas Identifiers 0.01175 0.00428 0.034597 0.000158 0.01341 -0.56156 0.000000 0.000000 Posnett entropy 0.01784 0.00629 0.035151 0.000041 0.01036 -0.77064 0.000575 0.000001
  • 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 Αριθμός χαρακτηριστικών εισόδου
  • 22. 22 Αξιολόγηση μοντέλων αναγνωσιμότητας κώδικα σε μικρές μεταβολές και κατασκευή νέου μοντέλου Ιούλιος 2022