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

Ιoannis Αgrotis

Jan 22, 2018

Download

Education

ISSEL
Welcome message from author
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
Page 1: Ιoannis Αgrotis

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

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

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

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

[email protected]

ΑΕΜ 7567

Υπό την επίβλεψη του Επίκουρου Καθηγητή

κ. Συμεωνίδη Ανδρέα

Και του υποψήφιου διδάκτορα

κ. Παπαμιχαήλ Μιχαήλ

Διπλωματική

Εργασία

Page 2: Ιoannis Αgrotis

Εισαγωγή

Ποιότητα Κώδικα

Σύστημα που υλοποιήθηκε

Πειράματα & Αποτελέσματα

Συμπεράσματα & Ανοιχτά θέματα

1

Οκτώβριος 2017

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

Page 3: Ιoannis Αgrotis

Η παραγωγή λογισμικού σήμερα

• Open Source Community

• Code Reuse

Δημιουργία Λογισμικού:

•Γρηγορότερα

•Χαμηλότερο Κόστος

Διαθέσιμος κώδικας:

Δεν καλύπτει πάντα τις

προδιαγραφές ποιότητας

κώδικα

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

Οκτώβριος 2017

2

Page 4: Ιoannis Αgrotis

Ποιότητα κώδικα (1/2)

• Μοντελοποίηση ποιότητας κώδικα

• Προτάθηκαν ενδεικνυόμενοι τρόποι γραφής

• Εργαλεία στατικής ανάλυσης κώδικα

Πρότυπα Ποιότητας

(ISO/IEC 25010)

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

Οκτώβριος 2017

3

Page 5: Ιoannis Αgrotis

Ποιότητα Κώδικα (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

Page 6: Ιoannis Αgrotis

Παραδείγματα Παραβάσεων (Violations)

Συνθήκη πάντα αληθής Αχρησιμοποίητη μεταβλητή

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

Οκτώβριος 2017

5

Page 7: Ιoannis Αgrotis

Το Σύστημα που υλοποιήθηκε

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

Οκτώβριος 2017

6

Page 8: Ιoannis Αgrotis

Builder & Analyzer

Sourcemeter (PMD)

AnalyzerBuilder

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

Οκτώβριος 2017

7

Page 9: Ιoannis Αgrotis

Αποτελέσματα PMD – Xml file

Γραμμές που βρίσκεται η παράβαση Rule: Ο κανόνας που

παραβιάζεται

Ruleset: Κατηγορία κανόνα

Προτεραιότητα

ΠαράβασηςΠεριγραφή

Παράβασης

Αρχείο

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

Οκτώβριος 2017

8

Page 10: Ιoannis Αgrotis

Results HandlerViolations Finder & Logger

Path Begin Line End Line Rule Violation Description

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

Οκτώβριος 2017

9

Comparator• Priorities

• Categories

Imports Finder

ASTs.json Imports.json

Page 11: Ιoannis Αgrotis

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 :

• Εκτελούνται οι διορθώσεις στα υπόλοιπα αρχεία που

επηρεάζονται από τις αλλαγές που γίνονται

• Έχουμε αντίληψη της δομής του αρχείου ώστε να

γίνουν οι αλλαγές σε αυτό

Page 12: Ιoannis Αgrotis

Πειράματα & Αποτελέσματα

24 Projects από το GitHub

• Min: 3392 LLOC

• Max: 114332 LLOC

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

Οκτώβριος 2017

11

Page 13: Ιoannis Αgrotis

Συνολική Επίδραση του Συστήματος

• Min: 6.8%

• Max: 84.14%

Η διακύμανση στο ποσοστό οφείλεται:

1. Το σύστημα δεν διορθώνει όλες τις

κατηγορίες παραβάσεων

2. Διαφέρει το μέγεθος κάθε project

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

Οκτώβριος 2017

12

Ποσοστό του συνόλου

των παραβάσεων:

76,16%

Page 14: Ιoannis Αgrotis

Ανάλυση αποτελεσμάτων ανά

προτεραιότητα

Priority 1: 29,4%

Priority 2: 21,55%

Priority 3: 58,32%

Priority 4: 40,73%

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

Οκτώβριος 2017

13

Page 15: Ιoannis Αgrotis

Ανάλυση αποτελεσμάτων ανά κατηγορία

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

Οκτώβριος 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%

Page 16: Ιoannis Αgrotis

Επίδραση στις μετρικές ποιότητας κώδικα

WMC: 2,70%

CBO: 5,09%

RFC: 11,98%

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

Οκτώβριος 2017

15

Page 17: Ιoannis Αgrotis

Ανάλυση χρονικής πολυπλοκότητας του

συστήματος

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

Οκτώβριος 2017

16

Page 18: Ιoannis Αgrotis

Συμπεράσματα

Το σύστημα που υλοποιήθηκε είναι σε θέση να:

• Εκτελεί διορθώσεις στο υπό εξέταση σύστημα

• Δημιουργεί αρχεία για εύκολη επισκόπηση των αλλαγών που έγιναν

και τις παραβάσεις που εμφανίζονται

• Δίνει την δυνατότητα σύγκρισης αποτελεσμάτων πριν και μετά τις

αλλαγές που έγιναν

• Η δομή και η λειτουργία του μπορούν να αποτελέσουν βάση για την

ανάπτυξη ενός πιο ολοκληρωμένου συστήματος

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

Οκτώβριος 2017

17

Page 19: Ιoannis Αgrotis

Ανοιχτά Θέματα

• Εφαρμογή σε άλλες γλώσσες προγραμματισμού

• Διόρθωση περισσοτέρων παραβάσεων κώδικα

• Επέκταση και σε άλλους τύπους project (εκτός maven)

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

Οκτώβριος 2017

18

Page 20: Ιoannis Αgrotis

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

19

Οκτώβριος 2017