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.
La seguente logica esegue i test unitari con classi strumentate di cobertura. Un report di copertura XML è generato da cobertura alla fine:
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