manual operaciones ACA - ?‡‡†™ ™ › œ ™ ™™ ™ ™ ™ ™ ™ ™›™™ › ™ ™ ™
Ιoannis Αgrotis
Transcript of Ιoannis Αgrotis
Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος
βελτίωσης ποιότητας κώδικα μέσω αυτόματης διόρθωσης
παραβάσεων ποιότητας κώδικα
Αγρότη Ιωάννη
ΑΕΜ 7567
Υπό την επίβλεψη του Επίκουρου Καθηγητή
κ. Συμεωνίδη Ανδρέα
Και του υποψήφιου διδάκτορα
κ. Παπαμιχαήλ Μιχαήλ
Διπλωματική
Εργασία
Εισαγωγή
Ποιότητα Κώδικα
Σύστημα που υλοποιήθηκε
Πειράματα & Αποτελέσματα
Συμπεράσματα & Ανοιχτά θέματα
1
Οκτώβριος 2017
Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα
Η παραγωγή λογισμικού σήμερα
• Open Source Community
• Code Reuse
Δημιουργία Λογισμικού:
•Γρηγορότερα
•Χαμηλότερο Κόστος
Διαθέσιμος κώδικας:
Δεν καλύπτει πάντα τις
προδιαγραφές ποιότητας
κώδικα
Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα
Οκτώβριος 2017
2
Ποιότητα κώδικα (1/2)
• Μοντελοποίηση ποιότητας κώδικα
• Προτάθηκαν ενδεικνυόμενοι τρόποι γραφής
• Εργαλεία στατικής ανάλυσης κώδικα
Πρότυπα Ποιότητας
(ISO/IEC 25010)
Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα
Οκτώβριος 2017
3
Ποιότητα Κώδικα (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
Παραδείγματα Παραβάσεων (Violations)
Συνθήκη πάντα αληθής Αχρησιμοποίητη μεταβλητή
Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα
Οκτώβριος 2017
5
Το Σύστημα που υλοποιήθηκε
Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα
Οκτώβριος 2017
6
Builder & Analyzer
Sourcemeter (PMD)
AnalyzerBuilder
Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα
Οκτώβριος 2017
7
Αποτελέσματα PMD – Xml file
Γραμμές που βρίσκεται η παράβαση Rule: Ο κανόνας που
παραβιάζεται
Ruleset: Κατηγορία κανόνα
Προτεραιότητα
ΠαράβασηςΠεριγραφή
Παράβασης
Αρχείο
Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα
Οκτώβριος 2017
8
Results HandlerViolations Finder & Logger
Path Begin Line End Line Rule Violation Description
Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα
Οκτώβριος 2017
9
Comparator• Priorities
• Categories
Imports Finder
ASTs.json Imports.json
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 1Total Violations: 17
Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα
Οκτώβριος 2017
10
Οι διορθώσεις που εκτελούνται:
• Έχουν σαν πρωταρχικό στόχο να μην εμφανιστούν
νέες παραβάσεις (Violations)
• Λαμβάνουν υπόψη την διαδικασία μεταγλώττισης και
έχουν ως στόχο να μην επηρεαστεί
Με βάση τα ASTs :
• Εκτελούνται οι διορθώσεις στα υπόλοιπα αρχεία που
επηρεάζονται από τις αλλαγές που γίνονται
• Έχουμε αντίληψη της δομής του αρχείου ώστε να
γίνουν οι αλλαγές σε αυτό
Πειράματα & Αποτελέσματα
24 Projects από το GitHub
• Min: 3392 LLOC
• Max: 114332 LLOC
Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα
Οκτώβριος 2017
11
Συνολική Επίδραση του Συστήματος
• Min: 6.8%
• Max: 84.14%
Η διακύμανση στο ποσοστό οφείλεται:
1. Το σύστημα δεν διορθώνει όλες τις
κατηγορίες παραβάσεων
2. Διαφέρει το μέγεθος κάθε project
Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα
Οκτώβριος 2017
12
Ποσοστό του συνόλου
των παραβάσεων:
76,16%
Ανάλυση αποτελεσμάτων ανά
προτεραιότητα
Priority 1: 29,4%
Priority 2: 21,55%
Priority 3: 58,32%
Priority 4: 40,73%
Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα
Οκτώβριος 2017
13
Ανάλυση αποτελεσμάτων ανά κατηγορία
Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα
Οκτώβριος 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%
Επίδραση στις μετρικές ποιότητας κώδικα
WMC: 2,70%
CBO: 5,09%
RFC: 11,98%
Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα
Οκτώβριος 2017
15
Ανάλυση χρονικής πολυπλοκότητας του
συστήματος
Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα
Οκτώβριος 2017
16
Συμπεράσματα
Το σύστημα που υλοποιήθηκε είναι σε θέση να:
• Εκτελεί διορθώσεις στο υπό εξέταση σύστημα
• Δημιουργεί αρχεία για εύκολη επισκόπηση των αλλαγών που έγιναν
και τις παραβάσεις που εμφανίζονται
• Δίνει την δυνατότητα σύγκρισης αποτελεσμάτων πριν και μετά τις
αλλαγές που έγιναν
• Η δομή και η λειτουργία του μπορούν να αποτελέσουν βάση για την
ανάπτυξη ενός πιο ολοκληρωμένου συστήματος
Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα
Οκτώβριος 2017
17
Ανοιχτά Θέματα
• Εφαρμογή σε άλλες γλώσσες προγραμματισμού
• Διόρθωση περισσοτέρων παραβάσεων κώδικα
• Επέκταση και σε άλλους τύπους project (εκτός maven)
Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα
Οκτώβριος 2017
18