Strumenti di analisi statica Java in Eclipse e IntelliJ IDEA

1. Panoramica

Nella nostra introduzione a FindBugs, abbiamo esaminato la funzionalità di FindBugs come strumento di analisi statica e come può essere integrato direttamente in IDE come Eclipse e IntelliJ Idea.

In questo articolo, esamineremo alcuni degli strumenti di analisi statica alternativi per Java e come questi si integrano con Eclipse e IntelliJ IDEA.

2. PMD

Cominciamo con PMD.

Questo strumento maturo e abbastanza consolidato analizza il codice sorgente per possibili bug, codici non ottimali e altre cattive pratiche; esamina anche metriche più avanzate come la complessità ciclomatica per la base di codice che analizza.

2.1. Integrazione con Eclipse

Il plug-in PMD può essere installato direttamente da Eclipse Marketplace. Il plugin può anche essere scaricato manualmente qui. Una volta installato, possiamo eseguire il controllo PMD direttamente dall'IDE stesso:

Vale la pena notare che possiamo eseguire PMD a livello di progetto oa livello di singola classe.

I risultati sono mostrati di seguito - con colori diversi per diversi livelli di rilevamento che vanno da "avviso" a "blocco" in ordine crescente di gravità:

Possiamo scavare nei dettagli di ogni voce facendo clic con il tasto destro e selezionando "mostra dettagli" dal menu contestuale. Eclipse mostrerà una breve descrizione del problema e l'eventuale rimedio su come risolverlo:

È anche possibile modificare la configurazione della scansione PMD - possiamo farlo nel menu, sotto Finestra -> Preferenze -> PMD per avviare la pagina di configurazione. Qui possiamo configurare i parametri di scansione, il set di regole, le impostazioni di visualizzazione dei risultati, ecc.

Se dobbiamo disattivare alcune regole specifiche per il progetto, possiamo semplicemente rimuoverle dalla scansione:

2.2. Integrazione con IntelliJ

Ovviamente, IntelliJ ha un plug-in PMD simile, che può essere scaricato e installato dal negozio di plug-in JetBrains.

Allo stesso modo possiamo eseguire il plug-in direttamente nell'IDE: facendo clic con il pulsante destro del mouse sulla fonte di cui abbiamo bisogno per la scansione e selezionando la scansione PMD dal menu di scelta rapida:

I risultati vengono visualizzati immediatamente ma, a differenza di Eclipse, se proviamo ad aprire la descrizione si aprirà un browser con una pagina web pubblica sulla ricerca di informazioni:

Possiamo impostare il comportamento del plugin PMD dalla pagina delle impostazioni, andando su File -> Impostazioni -> altre impostazioni -> PMD per visualizzare la pagina di configurazione. Dalla pagina delle impostazioni, possiamo configurare il set di regole caricando un set di regole personalizzato con le nostre regole di test.

3. JaCoCo

Andando avanti: JaCoCo è uno strumento di copertura dei test, utilizzato per tenere traccia della copertura dei test unitari nella base di codice. In poche parole, lo strumento calcola la copertura utilizzando una serie di strategie, ad esempio: linee, classe, metodi, ecc.

3.1. Integrazione con Eclipse

JaCoCo può essere installato direttamente dal marketplace. Un link di installazione è anche ospitato sul sito ufficiale disponibile qui.

Lo strumento può essere eseguito dal livello di progetto al livello di metodo individuale. Il plug-in Eclipse utilizza diversi schemi di colori per individuare quale parte del codice è coperta dai casi di test e cosa non è coperta:

Il nostro metodo divide due parametri interi forniti e restituisce il risultato. Se il secondo parametro è zero, restituirà un valore massimo per il tipo di dati intero.

Nel nostro caso di test, stiamo testando solo lo scenario in cui il secondo parametro è zero:

In questo caso, possiamo vedere che la linea 6 è colorata in giallo. Solo un ramo della condizione "if" viene testato e viene eseguito nel nostro semplice test. Pertanto non è completamente testato e contrassegnato in giallo.

Inoltre, la linea 7 ha il colore verde - significa che è completamente testata. Infine, la linea 9 è evidenziata con un colore rosso, il che significa che questa linea non è stata affatto testata dai nostri test unitari.

Possiamo vedere un riepilogo della copertura del test in cui mostra quanto codice è coperto dagli unit test a livello di classe e di pacchetto:

3.2. Integrazione con IntelliJ IDEA

JaCoCo è in bundle per impostazione predefinita con l'ultima distribuzione IntelliJ IDEA, quindi non è necessario installare il plug-in separatamente.

Quando si eseguono unit test, possiamo selezionare quale coverage runner dobbiamo utilizzare. Possiamo eseguire i casi di test sia a livello di progetto che a livello di classe:

Simile a Eclipse, JaCoCo visualizza i risultati utilizzando diversi schemi di colori per la copertura.

Possiamo vedere il riepilogo della copertura del test in cui mostra la quantità di codice coperta dagli unit test a livello di classe e di pacchetto.

4. Cobertura

Infine, vale la pena menzionare Cobertura, che viene utilizzato in modo simile per tenere traccia della copertura degli unit test nel codice.

L'ultima versione di Eclipse non supporta il plugin Cobertura al momento della scrittura; il plugin funziona con le versioni precedenti di Eclipse.

Allo stesso modo, IntelliJ IDEA non ha un plugin ufficiale in grado di eseguire la copertura di Cobertura.

5. conclusione

Abbiamo esaminato l'integrazione con Eclipse e IntelliJ IDEA per tre strumenti di analisi statica ampiamente utilizzati. FindBug è stato trattato in una precedente introduzione a FindBugs.

Il codice sorgente di questo tutorial può essere trovato nel progetto GitHub: questo è un progetto basato su Maven, quindi dovrebbe essere facile da importare ed eseguire così com'è.