2012-01-20 11 views
8

mia configurazione è:Come faccio a far funzionare Jenkins, Sonar e il plugin JaCoCo per Eclipse Tycho Plugin Projects (o forse Cobertura)?

  • Jenkins 1.448
  • Sonar 2.13
  • Jenkins Sonar Plugin 1.72
  • un database MySql per Sonar

ho il seguente progetto:

  • Progetto plugin Eclipse
  • usando Maven
  • più moduli (progetto maven genitore, progetto plug fonte, progetto frammento di prova)
  • un semplice test JUnit prova una classe del progetto plug sorgente

Nei il processo è in momento:

  • Jenkins estrae il progetto principale da SVN
  • Jenkins costruisce il progetto ed i suoi moduli utilizzando Maven e Tycho
  • Jenkins utilizza sicuro per eseguire i test e produrre un rapporto
  • Jenkins utilizza il plugin Jenkins Sonar per iniziare il sonar mvn: il sonar per eseguire l'analisi del codice
  • Analisi statica del codice viene effettuata su ogni modulo
  • JaCoCo fallisce

Sonar ha statistiche di analisi del codice statico disponibili e viene mostrata la percentuale di successo del test. L'unica cosa che manca è la copertura del codice di JaCoCo ... o forse anche la copertura del codice di Cobertura.

Non mi interessa davvero a questo punto, voglio solo una di queste cose per produrre risultati di copertura del codice.

Cobertura sembra essere in grado di produrre risultati forse perché o - essa non può strumento il codice - sembra per il codice strumentato nel posto sbagliato - non può far fronte con Tycho o della sorgente separata/codice di prova di setup

JaCoCo dovrebbe essere in grado di "vedere" la copertura del codice al volo, ma la sua uscita è

[INFO] [17:44:04.708] Sensor JaCoCoSensor... 
[INFO] [17:44:04.717] Project coverage is set to 0% as no JaCoCo execution data has been dumped: /var/lib/jenkins/jobs/testPlugin/workspace/testSource/target/jacoco.exec 
[INFO] [17:44:04.854] Sensor JaCoCoSensor done: 146 ms 

[INFO] [17:44:10.587] Sensor JaCoCoSensor... 
[INFO] [17:44:10.587] Project coverage is set to 0% as no JaCoCo execution data has been dumped: /var/lib/jenkins/jobs/testPlugin/workspace/testTest/target/jacoco.exec 
[INFO] [17:44:10.631] Sensor JaCoCoSensor done: 44 ms 

[INFO] [17:44:12.402] Sensor JaCoCoSensor... 
[INFO] [17:44:12.402] Project coverage is set to 0% as build output directory doesn't exists: /var/lib/jenkins/jobs/testPlugin/workspace/testParent/target/classes 
[INFO] [17:44:12.402] Sensor JaCoCoSensor done: 0 ms 

che cosa sto facendo di sbagliato? Devo abilitare JaCoCo nel mio pom.xml da qualche parte? Ho bisogno di infallibile? Cosa devo fare per usare Cobertura?

risposta

0

Quando il codice viene eseguito con strumenti, è necessario eseguire surefire su quel codice specifico generato dalla strumentazione. Non ho usato il tuo setup, ma il tuo errore sembra molto simile a quello che ho ottenuto quando stavo facendo funzionare la copertura del codice Clover; Ho dovuto fare attenzione a eseguire test fuori dalla directory in cui veniva memorizzato il codice strumentato compilato.

Inoltre, ho trovato che l'opzione -X sulla riga di comando Maven è preziosa in quanto la lettura dei registri di ciascun plug-in durante una compilazione mostra esattamente dove sta cercando ciò che sta cercando di trovare.

Edit:

codice Instrumented dovrà essere compilato prima infallibile può essere eseguito contro di esso, quindi ti consigliamo di puntare alla directory di post-raccolta e non la fonte strumentato in sé.

+0

Come faccio a dire Sonar o Cobertura o JaCoCo dove cercare il codice strumentato? – danowar

3

Ho trovato una pagina con un progetto tycho multi-modulo di esempio (fonte separata e progetti di test). Dopo aver copiato alcune proprietà e configurazioni ...

sembra che ora utilizzi un plug-in Maven jacoco per generare il report di copertura del codice jacoco e poi dire a Sonar dove trovare il rapporto e riutilizzarlo.

Perché sulla terra non c'è quasi nessuna documentazione per questo? O perché è così difficile da trovare?

https://github.com/Godin/sonar-experiments/tree/master/jacoco-examples/tycho-example

Problemi correlati