This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
Ανάπτυξη διαδικτυακής εφαρμογής για τηστατική ανάλυση αποθετηρίων κώδικα
Κωνσταντίνος Σιδέρης
Αριστοτέλειο Πανεπιστήμιο ΘεσσαλονίκηςΠολυτεχνική Σχολή
Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών ΥπολογιστώνΕργαστήριο Επεξεργασίας Πληροφορίας και Υπολογισμών
Ιούλιος 2016
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
Στατική Ανάλυση Κώδικα (1/3)
Είναι η ανάλυση κώδικα που γίνεται χωρίς την εκτέλεση τουπρογράμματος, συνήθως με την βοήθεια αυτόματωνεργαλείων που εξετάζουν τον πηγαίο κώδικα.
def foo ( a , b ) :while b ! = 0 :
i f a > b :a = a − b
else :b = b − a
return a
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
Στατική Ανάλυση Κώδικα (2/3)
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
Στατική Ανάλυση Κώδικα (3/3)
• Μέτρηση της πολυπλοκότητας.• Αποφυγή λαθών και σφαλμάτων.
• Cyclomatic complexity: Μετρά όλες τις πιθανές ξεχωριστέςδιαδρομές που μπορούν να ακολουθηθούν κατά τηνεκτέλεση του προγράμματος.
• Halstead Volume: Μετρά τον όγκος της πληροφορίας πουπεριέχεται στο κώδικα. Πιο συγκεκριμένα ερευνά πόσεςμεταβλητές χρησιμοποιούνται και πόσο συχνά.
• Maintainability: Διατυπώνει μια εκτίμηση για το επίπεδοσυντηρησιμότητας τού προγράμματος.
• Change cost: Το ποσοστό των modules που επηρεάζονταικατα μέσο όρο όταν αλλάζει ένα module.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
Υπηρεσίες Στατικής Ανάλυσης (3/4)eslintΑνιχνεύει συντακτικά και σημασιολογικά λάθη, καθώς καιλανθασμένες πρακτικές.
• Χρήση του τελεστή === αντί του τελεστή ==.[ ] == fa l se[ ] == ! [ ]3 == "03"
• Εμφάνιση προειδοποίησης για την ύπαρξη μηεκτελέσιμου κώδικα.
funct ion fn ( ) {x = 1 ;return x ;x = 3 ;
}
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
Υπηρεσίες Στατικής Ανάλυσης (4/4)
jsinspectΑνιχνεύει κομμάτια κώδικα που παρουσιάζουν την ίδια ήπαρόμοια δομή και λειτουργία.
def findAManager :for each employee in employees :
i f employee . isManager :return employee
return n i l
def f indASupervisor :for each employee in employees :
i f employee . i sSuperv isor :return employee
return n i l
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
Αποτελέσματα (1/6)
• Λιγότερο από το 15% των πακέτων χρησιμοποιείται απόάλλα και μόλις 2% των πακέτων έχει in degree μεγαλύτεροτου 100.
• Κυριαρχεί η τάση για δημιουργία μικρών πακέτων.• Συνήθως τα πακέτα περιέχουν λιγότερο από 5συναρτήσεις. Το 53% των πακέτων αποτελούνται απόλιγότερες από 100 γραμμές κώδικα.
• Σχεδόν το 40% των πακέτων δεν έχει ανανεωθεί τοντελευταίο χρόνο.
• Τα πακέτα τα οποία χρησιμοποιούνται περιορίζονται στα1.000 με 2.500.
• Τα περισσότερα πακέτα αποτελούν βοηθητικά εργαλείασχετικά με τη συγγραφή λογισμικού.