06 Analisi di qualità del codice, collezioni avanzate, enumeration e classi innestate

Documenti analoghi
07 JAR e Javadoc. Danilo Pianini Giovanni Ciatto, Angelo Croatti, Mirko Viroli

05 JAR file, Javadoc, Polimorfismo Parametrico e Introduzione al Java Collections Framework

Cosa è importante: pom.xml Goal Plug-in Repository

Ambienti di Sviluppo. Linguaggi compilati

Fondamenti di Informatica T2 Modulo 2

Installazione. Eclipse. Workspace. Primo Avvio. Fondamenti di Informatica T2 Modulo 2. Università di Bologna A.A. 2008/2009

Guida introduttiva su Eclipse. Ing. Marco Dell'Unto

Anno Accademico Laboratorio di Tecnologie Web Introduzione ad Eclipse

Strumenti Java. Fondamenti di informatica L-B A.A Alessandra Toninelli

Ingegneria del Software 1: Eclipse

Laboratorio di Informatica

Guida all uso dell ambiente di sviluppo 1 integrato o IDE JCreator LE

BlueJ: un ambiente per imparare Java

Laboratorio di Informatica

Installazioni preliminari

NetBeans. Dott. Ing. Rossella Rubino A.A. 2007/2008 Laboratorio II CdL: Operatore Informatico Giuridico

Laboratorio di Informatica

Fondamenti di Informatica T-1 CdS Ingegneria Informatica. Introduzione agli ambienti di sviluppo MS Visual Studio 2005/2008/2010 CodeLite 6.1.

Installazione dell SDK sotto Windows

Fondamenti di Informatica Ingegneria Biomedica A.A. 2017/18

Fondamenti di Informatica T-1

Corso di programmazione

Aprire MPLAB. Cliccare sull icona presente sul Desktop

per ulteriori informazioni consultare la guida disponibile on line all indirizzo:

L'applicazione integrata con il servizio My Fattura

Introduzione a Visual Studio 2005

Fondamenti di Informatica T-1. Guida al LAB4 Introduzione a JDK e Eclipse

Università di Ferrara. Facoltà di Ingegneria. Esercitazioni di

Introduzione a CodeBlocks. Università degli Studi di Brescia Sergio Colosio

Eclipse e SDK. Capiamo che sistema operativo abbiamo

Ambienti di Sviluppo

INSTALLAZIONE DI JAVA

Ambiente di Sviluppo Dev-C++

Esplorare e modificare il file system Compilare con gcc Lanciare un programma da linea di comando

NOTE SULL USO DI ECLIPSE per la compilazione di programmi c

Di Luisanna Fiorini

Guida all uso dell ambiente di sviluppo 1 integrato o IDE. JCreator LE 4.50

1 Installazione di Mingw e conseguente configurazione di TextPad

PROCEDURA D INSTALLAZIONE DEL SOFTWARE DELLA CARTA TS-CNS. OBERTHUR su Windows 32 bit e 65 bit

Guida. per l'installazione. l'utilizzo di. TelematiKo versione 1.7

Fondamenti di Informatica T-1. Guida al LAB3 Introduzione a JDK e Eclipse

Stellar Extractor for Windows Backup 5.0. Guida d'installazione

INTRODUZIONE A VISUAL STUDIO

IDE DevC

Registrazione automatica CES. Guida dell'amministratore

Windows 98 e Windows Me

Introduzione a Visual Studio Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Agenda. Agenda. Credenziali. Configurazione del Proxy (1/2) Configurazione del Proxy (2/2) Fondamenti di Informatica T2 Modulo 2

Maven2.apache.org: usare un linguaggio formale per descrivere in modo standard tutte le fasi del ciclo di vita del software

PROCEDURA D INSTALLAZIONE DEL SOFTWARE DELLA CARTA TS-CNS. ATOS su Windows 32 bit e 65 bit

Backup e manutenzione del database

ISTRUZIONI DEVC++ Autore: Luca Florio (luca.florio<at>polimi.it)

Fondamenti di Informatica T2 Modulo 2. Corso di Laurea in Ingegneria Informatica Anno accademico 2008/2009. Agenda

Versione 3.0. a cura di Claudia Cavicchi Biblioteca Clinica F.Bianchi Università di Bologna

Fondamenti di informatica T-1 (A K) Esercitazione 6: Eclipse

Guida Autenticazione CNS

PROCEDURA D INSTALLAZIONE DEL SOFTWARE DELLA CARTA TS-CNS. ATOS su Mac OS 10.5, OS 10.6 e OS 10.7+

STRUMENTO IMPOSTAZIONI DEL PANNELLO A SFIORAMENTO MANUALE DI ISTRUZIONI

2 Lavorare con Eclipse

Anno Accademico Laboratorio di Tecnologie Web Uso di Firebug

Problemi di attivazione dell opzione Fiery

Lab 01 Introduzione a Codelite

Tale attività non è descritta in questa dispensa

INFORMAZIONI IMPORTANTI e MOLTO UTILI. (zzz = 732 a 32 bit, 764 a 64 bit) (xx = Versione)

Corso Eclipse. Prerequisiti. 1 Introduzione

USB 2,0 SERVER DI STAMPA ETHERNET

Linguaggio C: Introduzione ad ambienti di sviluppo integrati (IDE) e a Dev-C++ Università degli Studi di Brescia

Elaborazione dati contabili Office Automation Consulenza aziendale

PROCEDURA DI INSTALLAZIONE BAOBAB

Come lo chiamiamo?..

PROCEDURA D INSTALLAZIONE DEL SOFTWARE DELLA CARTA TS-CNS. OBERTHUR su Mac OS

Introduzione al corso. Obiettivo del corso

PROCEDURA D INSTALLAZIONE DEL SOFTWARE DELLA CARTA TS-CNS. ACTALIS su Windows 32 bit e 65 bit

Qual è la procedura per aggiornare VIALIBERA Azienda ad una nuova versione? Risposta. 1 Avvio del setup di installazione

Symantec IT Management Suite 8.0 powered by Altiris technology

Configurazione di Eclipse con Liferay 5.2.2/6.0.6/6.1.0 Mac/Linux

0. COME INSTALLARE L AGGIORNAMENTO STR PLANSWIFT INSTALLARE LA VERSIONE 9.5 DI STR PLANSWIFT ATTIVAZIONE LICENZA...

Esercitazioni di FONDAMENTI DI INFORMATICA MODULO B

Software Rowan Key Manager C400RKM rel.4.xx / C350RKM rel.2.xx

A.A. 2018/2019. Introduzione ad AlgoBuild FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE. Docente Prof. Raffaele Pizzolante

Getting Started. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi Sebastiano Peluso

Printer Driver. Guida all installazione. Questa guida descrive l installazione dei driver stampante per Windows Vista.

MAIL ENCRYPTOR PLUG-IN - User guide-

Programmazione Orientata agli Oggetti in Linguaggio Java

Introduzione al DEV C++

Progettazione Web. Laboratorio di. Ambiente di Sviluppo. Angelica Lo Duca

WPCustPad Utility per la personalizzazione di WEBpatente 4.2 offline.

CONFIGURAZIONE E GESTIONE DEL DATABASE. rev giugno 2018

Autorità di Certificazione del Consiglio Nazionale del Notariato

Concetti base. Java - package 2

Istruzioni Installazione ed Utilizzo del Software FIRMACERTA 1. Installazione del Software FIRMACERTA

Università di Ferrara Facoltà di Ingegneria. Esercitazioni di FONDAMENTI DI INFORMATICA MODULO B

IBM SPSS Statistics per Windows - Istruzioni di installazione (Licenza per sito)

Scrigno Client Setup

Corso sul linguaggio Java

File Leggimi di Veritas System Recovery 16 Monitor

Transcript:

06 Analisi di qualità del codice, collezioni avanzate, enumeration e classi innestate Danilo Pianini Angelo Croatti, Simone Grotti, Mirko Viroli C.D.L. Ingegneria e Scienze Informatiche Alma Mater Studiorum Università di Bologna, Cesena 27 ottobre 2016 Pianini (Università di Bologna) L06 Advanced Collections 27 ottobre 2016 1 / 36

Outline 1 JAR e gestione del classpath in Eclipse 2 Analisi di qualità del codice FindBugs PMD e CPD Checkstyle 3 Coding style: configurazione IDE Eclipse 4 Esercitazione di oggi Pianini (Università di Bologna) L06 Advanced Collections 27 ottobre 2016 2 / 36

Aggiunta di un jar al classpath di un progetto Eclipse I lab06 Properties Java build path Libraries Add Jar Pianini (Università di Bologna) L06 Advanced Collections 27 ottobre 2016 3 / 36

Aggiunta di un jar al classpath di un progetto Eclipse II Pianini (Università di Bologna) L06 Advanced Collections 27 ottobre 2016 4 / 36

Aggiunta di un jar al classpath di un progetto Eclipse III Pianini (Università di Bologna) L06 Advanced Collections 27 ottobre 2016 5 / 36

Outline 1 JAR e gestione del classpath in Eclipse 2 Analisi di qualità del codice FindBugs PMD e CPD Checkstyle 3 Coding style: configurazione IDE Eclipse 4 Esercitazione di oggi Pianini (Università di Bologna) L06 Advanced Collections 27 ottobre 2016 6 / 36

Analisi di qualità del codice sorgente Definizione Software in grado di analizzare il codice sorgente per individuare: Potenziali bug, magari dovuti a distrazione Possibili miglioramenti, ottimizzazioni o pratiche difformi da quelle consigliate Codice duplicato, segnale di una progettazione discutibile Stile non conforme Uso L analisi automatica del proprio codice garantisce sempre un elevata qualità del codice, aiuta ad apprendere il modo corretto di scrivere, riduce il costo di manutenzione e garantisce uniformità fra le parti sviluppate da persone diverse. Pianini (Università di Bologna) L06 Advanced Collections 27 ottobre 2016 7 / 36

Code checking I I software che vedremo sono eseguibili in due modalità 1 : Stand-alone: il software viene eseguito e genera un report Come plug-in: il software viene integrato con l IDE (nel nostro caso Eclipse), e segnala i problemi sotto forma di warning Noi ci concentreremo nell imparare la seconda modalità. 1 In realtà cominciano a prender piede anche servizi web come Codacy, ma non li tratteremo in questo corso... Pianini (Università di Bologna) L06 Advanced Collections 27 ottobre 2016 8 / 36

Code checkers in Eclipse I Configurazione globale La configurazione globale viene applicata a tutti i progetti del workspace, a meno che non sia sovrascritta localmente (non sempre è possibile). Veloce da configurare: si configura una volta, e i settaggi sono applicati su tutti i progetti Poco portabile: se inviamo il progetto ad un collaboratore, questi settaggi non saranno inviati: c è il rischio di inconsistenze Ottimo da usare quando si hanno molti progetti nel workspace con la stessa configurazione, e si sviluppa da soli. Pianini (Università di Bologna) L06 Advanced Collections 27 ottobre 2016 9 / 36

Code checkers in Eclipse II Configurazione locale La configurazione locale va messa a punto singolarmente per ciascun progetto. Bisogna verificare che quella globale non la stia sovrascrivendo. Alta flessibilità: si possono specificare regole diverse per progetti diversi Alta portabilità: se si invia il progetto ad un collaboratore, questi settaggi vengono mantenuti Ottimo da usare quando si hanno pochi progetti, o ai progetti serve una configurazione diversa, oppure quando si lavora in modo collaborativo Noi faremo uso della configurazione locale Voi farete uso della configurazione locale nell elaborato finale Pianini (Università di Bologna) L06 Advanced Collections 27 ottobre 2016 10 / 36

Outline 1 JAR e gestione del classpath in Eclipse 2 Analisi di qualità del codice FindBugs PMD e CPD Checkstyle 3 Coding style: configurazione IDE Eclipse 4 Esercitazione di oggi Pianini (Università di Bologna) L06 Advanced Collections 27 ottobre 2016 11 / 36

FindBugs Cos è FindBugs scansiona il bytecode generato dal compilatore, e dalla sua analisi cerca di scoprire potenziali bug nel sorgente, ad esempio: Uguaglianza esatta fra float o double Utilizzo di == invece di equals() Mancato retain a runtime di annotazioni Uso errato di meccanismi di sincronizzazione Vulnerabilità di sicurezza Tanti altri! Si veda: http://findbugs.sourceforge.net/bugdescriptions.html Pianini (Università di Bologna) L06 Advanced Collections 27 ottobre 2016 12 / 36

FindBugs Plugin Eclipse Può essere installato dal marketplace di Eclipse cercando findbugs. Una volta installato, apparirà un nuovo sotto-menu del progetto: Pianini (Università di Bologna) L06 Advanced Collections 27 ottobre 2016 13 / 36

FindBugs Configurazione globale Pianini (Università di Bologna) L06 Advanced Collections 27 ottobre 2016 14 / 36

FindBugs Configurazione del progetto In FindBugs, la configurazione locale è più prioritaria di quella globale. Pianini (Università di Bologna) L06 Advanced Collections 27 ottobre 2016 15 / 36

Outline 1 JAR e gestione del classpath in Eclipse 2 Analisi di qualità del codice FindBugs PMD e CPD Checkstyle 3 Coding style: configurazione IDE Eclipse 4 Esercitazione di oggi Pianini (Università di Bologna) L06 Advanced Collections 27 ottobre 2016 16 / 36

PMD e CPD Cos è PMD si occupa di trovare imperfezioni nel codice: Campi protetti o default Mancato uso di final Singular fields Usa CPD per verificare se vi siano blocchi di codice copincollati Tanti altri! Si veda: http://pmd.sourceforge.net/pmd-4.3.0/rules/index.html Pianini (Università di Bologna) L06 Advanced Collections 27 ottobre 2016 17 / 36

PMD: Installazione Plugin Eclipse installazione Il marketplace contiene due plugin concorrenti: meglio eseguire l installazione manuale. Dal menu Help, si selezioni Install new software Si incolli l indirizzo https://sourceforge.net/projects/pmd/ files/pmd-eclipse/update-site-latest/ e si prema Enter Si selezioni PMD for Eclipse 4 Next, Finish Si accetti il codice non firmato Si riavvii Eclipse come suggerito Plugin Eclipse Al termine dell installazione, verrà installato un menu di opzioni globali, un menu di opzioni per progetto ed un menu contestuale. Pianini (Università di Bologna) L06 Advanced Collections 27 ottobre 2016 18 / 36

PMD Configurazione globale La configurazione di default di PMD contiene regole con limiti arbitrari, regole che hanno senso solo in particolari environment (e.g. J2EE) e regole controverse. È meglio rimuovere tali regole! Dalle proprietà di Eclipse, si allarghi il sotto menu PMD Si vada su Rule Configuration Si selezionino tutte le regole (click su una, poi ctrl+a) Si eliminino tutte le regole Si usi il tasto import Si importino (meglio per copia) le regole da un file XML Vi forniremo noi un buon file di regole! Pianini (Università di Bologna) L06 Advanced Collections 27 ottobre 2016 19 / 36

PMD Configurazione globale Pianini (Università di Bologna) L06 Advanced Collections 27 ottobre 2016 20 / 36

PMD Configurazione globale In PMD, la configurazione globale sovrascrive quella locale: disattivate Use global rule management se sviluppate un progetto su più sistemi Pianini (Università di Bologna) L06 Advanced Collections 27 ottobre 2016 21 / 36

PMD Configurazione globale Pianini (Università di Bologna) L06 Advanced Collections 27 ottobre 2016 22 / 36

PMD Configurazione del progetto ATTENZIONE: Prima di attivare la configurazione locale, assicurarsi che il file pmd.xml sia stato copiato all interno della cartella del progetto! Pianini (Università di Bologna) L06 Advanced Collections 27 ottobre 2016 23 / 36

Outline 1 JAR e gestione del classpath in Eclipse 2 Analisi di qualità del codice FindBugs PMD e CPD Checkstyle 3 Coding style: configurazione IDE Eclipse 4 Esercitazione di oggi Pianini (Università di Bologna) L06 Advanced Collections 27 ottobre 2016 24 / 36

Checkstyle Cos è Checkstyle si occupa di trovare errori di stile: Mancanza di commento Javadoc Spaziature non corrette Parentesi assenti Magic numbers Altro: http://checkstyle.sourceforge.net/checks.html Pianini (Università di Bologna) L06 Advanced Collections 27 ottobre 2016 25 / 36

Checkstyle Plugin Eclipse installazione Può essere installato dal marketplace di Eclipse cercando checkstyle. Attenzione: il primo risultato potrebbe non essere quello corretto. Il logo corretto presenta la scritta eclipse-cs. Al termine dell installazione, verrà installato un menu di opzioni globali, un menu di opzioni per progetto ed un menu contestuale. Pianini (Università di Bologna) L06 Advanced Collections 27 ottobre 2016 26 / 36

Checkstyle Configurazione La configurazione di default di Checkstyle è eccessivamente pedante. Vi forniremo noi un file di configurazione idoneo: 1. Dalle proprietà di progetto, si clicki sul menu Checkstyle 2. Si selezioni Local Check Configurations 3. Si scelga New 4. Si scelga Project Relative Configuration (mai usare path assoluti!) 5. Utilizzando Browse... si punti al file di configurazione, che deve esser copiato nel progetto 6. Si dia un nome e si prema OK 7. Si vada su Main 8. Si selezioni dal menu la nuova Check configuration 9. Si attivi Checkstyle active for this project e Use simple configuration 10. OK Nota: la configurazione globale è molto simile, si ripetano gli step andando dal menu Windows Preferences Java Code style Formatter Pianini (Università di Bologna) L06 Advanced Collections 27 ottobre 2016 27 / 36

Checkstyle Configurazione per-progetto Pianini (Università di Bologna) L06 Advanced Collections 27 ottobre 2016 28 / 36

Outline 1 JAR e gestione del classpath in Eclipse 2 Analisi di qualità del codice FindBugs PMD e CPD Checkstyle 3 Coding style: configurazione IDE Eclipse 4 Esercitazione di oggi Pianini (Università di Bologna) L06 Advanced Collections 27 ottobre 2016 29 / 36

Configurare l editor per una corretta formattazione del codice Checkstyle è in grado di supportarci nel verificare l utilizzo di un corretto stile di codifica. Adattando le Java Code Convention : 4 spazi per l indentazione Nell originale è consentito scegliere fra fra i due ed i quattro Nessun carattere tab Nell originale è consentito usarli Ma noi vogliamo indentazione consistente, quindi o spazi, oppure tab Essendo in JCC un tab equivalente ad 8 spazi, diventa troppo largo per una buona indentazione Linee lunghe al massimo 120 o 130 caratteri Nell originale sono 80 per motivi storici (le schede perforate IBM avevano 80 colonne) Noi abbiamo i monitor, e anche i nostri colleghi Ora, però, dobbiamo configurare l editor perché ci supporti nella scrittura di codice con lo stile corretto: come fare? Pianini (Università di Bologna) L06 Advanced Collections 27 ottobre 2016 30 / 36

Coding style: configurazione IDE Eclipse Pianini (Università di Bologna) L06 Advanced Collections 27 ottobre 2016 31 / 36

Coding style: configurazione IDE Eclipse Pianini (Università di Bologna) L06 Advanced Collections 27 ottobre 2016 32 / 36

Coding style: configurazione IDE Eclipse Pianini (Università di Bologna) L06 Advanced Collections 27 ottobre 2016 33 / 36

Coding style: configurazione IDE Eclipse Pianini (Università di Bologna) L06 Advanced Collections 27 ottobre 2016 34 / 36

Outline 1 JAR e gestione del classpath in Eclipse 2 Analisi di qualità del codice FindBugs PMD e CPD Checkstyle 3 Coding style: configurazione IDE Eclipse 4 Esercitazione di oggi Pianini (Università di Bologna) L06 Advanced Collections 27 ottobre 2016 35 / 36

Modalità di Lavoro 1. Gli esercizi sono divisi in package con nomi progressivi 2. Troverete un commento con le istruzioni per ciascun esercizio 3. Risolvere l esercizio in autonomia 4. Cercare di risolvere autonomamente eventuali piccoli problemi che possono verificarsi durante lo svolgimento degli esercizi 5. Utilizzare le funzioni di test presenti nei sorgenti per il testing dell esercizio 6. Contattare i docenti nel caso vi troviate a lungo bloccati nella risoluzione di uno specifico esercizio 7. A esercizio ultimato contattare i docenti per un rapido controllo della soluzione realizzata 8. Proseguire con l esercizio seguente 9. Generare il file JAR dell intera esercitazione (o in lab o a casa in mancanza di tempo) Pianini (Università di Bologna) L06 Advanced Collections 27 ottobre 2016 36 / 36