Misurare la Code Coverage con JaCoCo
JaCoCo è una libreria per il Code Coverage in ambito Java.
Derivato dal plugin per Eclipse EclEmma, JaCoCo ha come obiettivi principali leggerezza e flessibilità, essendo capace di integrarsi con numerosi strumenti: Ant, Sonar e anche Maven.
É disponibile come plugin per IDE come Eclipse e IntelliJ.
Lorenzo ha mostrato il funzionamento di questa libreria in una suite di casi di test con il framework JUnit 5.
L’esecuzione del test tramite JUnit mette automaticamente in moto l’agente JaCoCo il quale crea un coverage report in formato binario nella directory di destinazione target/jacoco.exec.
L’output sarà interpretato da altri strumenti e plugin quali Sonar Qube.
É’ possibile generare report leggibili in diversi formati come ad esempio HTML, CSV e XML. Per dimostrazione Lorenzo ha mostrato il report in formato HTML generato nella directory target/site/jacoco/index.html.
Report con JaCoCo
Un report JaCoCo aiuta ad analizzare visivamente la Code Coverage usando diamanti colorati per branch e colori di sfondo per le linee:
- il diamante rosso indica che non sono stati raggiunti branch durante la fase di test;
- con il diamante giallo si indica il codice parzialmente coperto – alcuni branch non sono stati esercitati;
- infine con il diamante verde si notifica che tutti i branch sono stati esercitati durante il test.
JaCoCo fornisce principalmente tre parametri importanti:
- line Coverage che riflette la quantità di codice che è stata esercitata in base al numero di istruzioni Java chiamate dai test;
- branch Coverage che mostra la percentuale di branch esercitate nel codice, generalmente correlata alle istruzioni if / else e switch;
- complessità ciclomatica che indica la complessità del codice fornendo il numero di percorsi necessari per coprire tutti i possibili percorsi in un codice attraverso una combinazione lineare.