SONAR – Misura la copertura del codice usando Cobertura

Sto usando il sonar per misurare la qualità del codice. Una cosa che non conosco è la procedura per misurare la copertura del codice utilizzando Cobertura.

Ho seguito i passaggi da http://cobertura.sourceforge.net/anttaskreference.html e sono stato in grado di generare file xml. Come posso ottenere questi file xml in SONAR?

C’è un modo più semplice per usare Cobertura in SONAR?

Sto eseguendo la copertura del codice (Cobertura) su un server diverso dal mio server SONAR. Entrambi i server funzionano sotto LINUX.

Grazie per l’aiuto!

Configurare l’attività Sonar per caricare i report unit test e di cobertura generati da altre parti della logica di build.

Questo è in contrasto con Maven, che ha un ciclo di vita di build standard che Sonar è in grado di sfruttare.

Test unitario e copertura del codice

La seguente logica esegue i test unitari con classi strumentate di cobertura. Un report di copertura XML è generato da cobertura alla fine:

                         

Richiamo del sonar

Normalmente utilizzo un target sonar molto semplice:

     

E usa un file di proprietà per controllare tutti gli aspetti del comportamento di Sonar:

 sonar.project.key=org.demo:demo sonar.project.version=1.0-SNAPSHOT sonar.projectName=Demo project sonar.host.url=http://myserver:9000 sonar.jdbc.url=jdbc:mysql://myserver:3306/sonar?useUnicode=true&characterEncoding=utf8 sonar.jdbc.driverClassName=com.mysql.jdbc.Driver sonar.jdbc.username=sonar sonar.jdbc.password=sonar sonar.sources=${src.dir} sonar.tests=${test.src.dir} sonar.binaries=${classs.dir} sonar.dynamicAnalysis=reuseReports sonar.surefire.reportsPath=${test.reports.dir} sonar.java.coveragePlugin=cobertura sonar.cobertura.reportsPath=${cobertura.reports.dir}/coverage.xml 

Dimostra come è ansible configurare Sonar per raccogliere i report di test dell’unità creati da junit e il report di copertura del codice generato da cobertura.

La build non deve essere eseguita sullo stesso server di Sonar. In tal caso è necessario fornire l’URL del Sonar remoto e le credenziali JDBC.

Dovresti aggiungere queste proprietà a pom.xml di Sonar:

  false generate-sources target/reports/test/ ../project/target/reports/coverage/coverage.xml  

(con percorsi appropriati per il tuo ambiente)

E corri:

 mvn sonar:sonar 

Controlla l’ elenco degli utenti per maggiori dettagli.

se usi Maven, non hai nulla di speciale da specificare nel tuo file POM. Basta eseguire “mvn clean sonar: sonar” e Sonar compilerà automaticamente il codice, eseguirà i test con Cobertura (che è il motore di copertura predefinito in Sonar) e sposterà tutti i risultati nel DB.

Lo stesso se stai usando Ant [1] o il semplice java runner [2] invece di Maven.

Insisto sul fatto che non è necessario eseguire manualmente Cobertura (con un’attività Ant, ad esempio) per eseguire Sonar.

[1] http://docs.codehaus.org/display/SONAR/Analyzing+with+Sonar+Ant+Task

[2] http://docs.codehaus.org/display/SONAR/Analyse+with+a+simple+Java+Runner

Fabrice, SonarSource