Ιoannis Αgrotis

20
Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα Αγρότη Ιωάννη [email protected] ΑΕΜ 7567 Υπό την επίβλεψη του Επίκουρου Καθηγητή κ. Συμεωνίδη Ανδρέα Και του υποψήφιου διδάκτορα κ. Παπαμιχαήλ Μιχαήλ Διπλωματική Εργασία

Transcript of Ιoannis Αgrotis

Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος

βελτίωσης ποιότητας κώδικα μέσω αυτόματης διόρθωσης

παραβάσεων ποιότητας κώδικα

Αγρότη Ιωάννη

[email protected]

ΑΕΜ 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

Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα

19

Οκτώβριος 2017