1. Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος
βελτίωσης ποιότητας κώδικα μέσω αυτόματης διόρθωσης
παραβάσεων ποιότητας κώδικα
Αγρότη Ιωάννη
agrotis.ioannis@gmail.com
ΑΕΜ 7567
Υπό την επίβλεψη του Επίκουρου Καθηγητή
κ. Συμεωνίδη Ανδρέα
Και του υποψήφιου διδάκτορα
κ. Παπαμιχαήλ Μιχαήλ
Διπλωματική
Εργασία
2. Εισαγωγή
Ποιότητα Κώδικα
Σύστημα που υλοποιήθηκε
Πειράματα & Αποτελέσματα
Συμπεράσματα & Ανοιχτά
θέματα
1
Οκτώβριος 2017
Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα
μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα
3. Η παραγωγή λογισμικού σήμερα
• Open Source Community
• Code Reuse
Δημιουργία Λογισμικού:
•Γρηγορότερα
•Χαμηλότερο Κόστος
Διαθέσιμος κώδικας:
Δεν καλύπτει πάντα τις
προδιαγραφές ποιότητας
κώδικα
Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα
μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα
Οκτώβριος 2017
2
5. Ποιότητα Κώδικα (2/2)
Μετρικές ποιότητας κώδικα:
• Weighted Method per Class
(WMC)
• Coupling Between Objects (CBO)
• Response For a Class (RFC)
Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα
μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα
Οκτώβριος 2017
4
Κατηγορίες παραβάσεων (Violations):
• Naming
• Optimization
• Design
• Braces
• Empty Code
• Java Logging
6. Παραδείγματα Παραβάσεων (Violations)
Συνθήκη πάντα αληθής Αχρησιμοποίητη μεταβλητή
Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα
μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα
Οκτώβριος 2017
5
7. Το Σύστημα που υλοποιήθηκε
Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα
μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα
Οκτώβριος 2017
6
8. Builder & Analyzer
Sourcemeter (PMD)
AnalyzerBuilder
Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα
μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα
Οκτώβριος 2017
7
9. Αποτελέσματα PMD – Xml file
Γραμμές που βρίσκεται η παράβαση Rule: Ο κανόνας που
παραβιάζεται
Ruleset: Κατηγορία κανόνα
Προτεραιότητα
Παράβασης
Περιγραφή
Παράβασης
Αρχείο
Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα
μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα
Οκτώβριος 2017
8
10. Results Handler
Violations Finder & Logger
Path Begin Line End Line Rule Violation Description
Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα
μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα
Οκτώβριος 2017
9
Comparator
• Priorities
• Categories
Imports Finder
ASTs.json Imports.json
11. Violations Fixer
Violation
Category
Number of
Violations
Design 5
Braces 3
Empty Code 2
Naming 2
Java Logging 1
Optimization 1
Controversial 1
Type
Resolution
1
Junit 1
Total Violations: 17
Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα
μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα
Οκτώβριος 2017
10
Οι διορθώσεις που εκτελούνται:
• Έχουν σαν πρωταρχικό στόχο να μην εμφανιστούν
νέες παραβάσεις (Violations)
• Λαμβάνουν υπόψη την διαδικασία μεταγλώττισης και
έχουν ως στόχο να μην επηρεαστεί
Με βάση τα ASTs :
• Εκτελούνται οι διορθώσεις στα υπόλοιπα αρχεία που
επηρεάζονται από τις αλλαγές που γίνονται
• Έχουμε αντίληψη της δομής του αρχείου ώστε να
γίνουν οι αλλαγές σε αυτό
12. Πειράματα & Αποτελέσματα
24 Projects από το GitHub
• Min: 3392 LLOC
• Max: 114332 LLOC
Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα
μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα
Οκτώβριος 2017
11
13. Συνολική Επίδραση του Συστήματος
• Min: 6.8%
• Max: 84.14%
Η διακύμανση στο ποσοστό οφείλεται:
1. Το σύστημα δεν διορθώνει όλες τις
κατηγορίες παραβάσεων
2. Διαφέρει το μέγεθος κάθε project
Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα
μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα
Οκτώβριος 2017
12
Ποσοστό του συνόλου
των παραβάσεων:
76,16%
14. Ανάλυση αποτελεσμάτων ανά
προτεραιότητα
Priority 1: 29,4%
Priority 2: 21,55%
Priority 3: 58,32%
Priority 4: 40,73%
Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα
μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα
Οκτώβριος 2017
13
15. Ανάλυση αποτελεσμάτων ανά κατηγορία
Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα
μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα
Οκτώβριος 2017
14
Κατηγορία Ποσοστό Διόρθωσης
Junit 89.52%
Type Resolution 67.44%
Optimization 67.18%
Braces 62.58%
Empty Code 57%
Naming 40.10%
Java Logging 33.77%
Controversial 30.28%
Design 20.02%
16. Επίδραση στις μετρικές ποιότητας κώδικα
WMC: 2,70%
CBO: 5,09%
RFC: 11,98%
Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα
μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα
Οκτώβριος 2017
15
17. Ανάλυση χρονικής πολυπλοκότητας του
συστήματος
Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα
μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα
Οκτώβριος 2017
16
18. Συμπεράσματα
Το σύστημα που υλοποιήθηκε είναι σε θέση να:
• Εκτελεί διορθώσεις στο υπό εξέταση σύστημα
• Δημιουργεί αρχεία για εύκολη επισκόπηση των αλλαγών που έγιναν
και τις παραβάσεις που εμφανίζονται
• Δίνει την δυνατότητα σύγκρισης αποτελεσμάτων πριν και μετά τις
αλλαγές που έγιναν
• Η δομή και η λειτουργία του μπορούν να αποτελέσουν βάση για την
ανάπτυξη ενός πιο ολοκληρωμένου συστήματος
Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα
μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα
Οκτώβριος 2017
17
19. Ανοιχτά Θέματα
• Εφαρμογή σε άλλες γλώσσες προγραμματισμού
• Διόρθωση περισσοτέρων παραβάσεων κώδικα
• Επέκταση και σε άλλους τύπους project (εκτός maven)
Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα
μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα
Οκτώβριος 2017
18
20. Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα
μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα
19
Οκτώβριος 2017