2016-06-17 17 views
2

Ich habe ein paar Tage damit verbracht, SonarQube dazu zu bringen, die Unit-Testcode-Abdeckung vom Maven Jacoco-Plugin anzuzeigen.Jacoco SonarQube Integration

Die Fehlermeldung steckte ich bin auf ist

[INFO] Analysing .../target/jacoco.exec 
[WARNING] Coverage information was not collected. Perhaps you forget to include debug information into compiled classes? 

Der Bericht unter target/site/jacoco/index.html wie erwartet erzeugt und enthält Zeile markieren und Zeilennummern. Ich habe gelesen, dass, wenn keine Debug-Informationen in den kompilierten Klassen enthalten sind, die Hervorhebungs- und Zeilennummern in diesem Bericht nicht angezeigt werden.

Ich habe Maven enthält Debug-Informationen standardmäßig jedoch nur für den Fall enthalten ich die folgende Konfiguration in meinen Projekten Maven-Compiler-Plugin-Setup

<configuration> 
    <debug>true</debug> 
    <debuglevel>lines,vars,source</debuglevel> 
</configuration> 

ich die folgenden Eigenschaften in meiner settings.xml haben (Host und Login absichtlich ausgelassen)

Ich habe die folgende Konfiguration meines Jacoco-Plugins.

<plugin> 
    <groupId>org.jacoco</groupId> 
    <artifactId>jacoco-maven-plugin</artifactId> 
    <version>0.7.7.201606060606</version> 
    <executions> 
     <execution> 
      <goals> 
       <goal>prepare-agent</goal> 
      </goals> 
     </execution> 
     <execution> 
      <id>report</id> 
      <phase>prepare-package</phase> 
      <goals> 
       <goal>report</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

Mein jacoco.exec ist im Standardverzeichnis von Ziel/jacoco.exec und korrekt durch Sonarqube gefunden wird.

Relevante Versionen

Maven 3.2.2

Maven Compiler 3.5.1

Maven todsichere 2.19.1

Java 1.8.0_11

Sonarqube Server 5.6

Jacoco Maven Plugin 0.7.7.201606060606

Mac OS X 10.10.5

Vielen Dank im Voraus für die Hilfe!

---- ---- EDIT

ich folgende Maven leite Befehle

mvn clean package

mvn sonar:sonar

+0

Welcher Befehl wird ausgeführt, um die Analyse auszuführen? Schauen Sie sich zum Beispiel mein Beispielprojekt an, das funktioniert, und zwar am besten in der Datei "runAnalysis.sh" => https://github.com/bellingard/fake-project-for-tests –

+0

Ich führe 'mvn sauberes Paket 'und' mvn Sonar: Sonar'. Das Ziel des Bereitstellungsagenten wird vor dem Test ausgeführt, wie im folgenden Protokoll zu sehen ist. '[INFO] --- jacoco-maven-plugin: 0.7.7.2016606060606: vorbereitung-agent (default) @ event-service --- [INFO] argLine auf -javaagent: ... /. M2/repository gesetzt /org/jacoco/org.jacoco.agent/0.7.7.201606060606/org.jacoco.agent-0.7.7.201606060606-runtime.jar=destfile = .../target/jacoco.exec' – DecafCoder

+0

Können Sie versuchen, die JaCoCo-Konfiguration zu entfernen? von Ihrem POM und führen Sie den gleichen Befehl als was Sie in "runAnalysis.sh" -Datei in meinem Repo sehen? –

Antwort

0

Ich habe den Artikel here gefolgt und es nur für mich arbeiten , Ich habe nur den Code aktualisiert, um die neueste JaCoCo Plugin Version

<dependency> 
     <groupId>org.jacoco</groupId> 
     <artifactId>jacoco-maven-plugin</artifactId> 
     <version>0.7.9</version> 
    </dependency> 
01 zu reflektieren

und JaCoCo Mittel meiner POM Plugins hinzugefügt:

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-maven-plugin</artifactId> 
      <configuration> 
       <executable>true</executable> 
      </configuration> 
     </plugin> 
     <!-- JaCoCo configuration --> 
     <plugin> 
      <groupId>org.jacoco</groupId> 
      <artifactId>jacoco-maven-plugin</artifactId> 
      <version>0.7.9</version> 
      <executions> 
       <execution> 
        <id>default-prepare-agent</id> 
        <goals> 
         <goal>prepare-agent</goal> 
        </goals> 
       </execution> 
       <execution> 
        <id>default-report</id> 
        <phase>prepare-package</phase> 
        <goals> 
         <goal>report</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

und den folgenden Maven Befehl ausgeführt wird (in Jenkins):

clean deploy $SONAR_MAVEN_GOAL -Dsonar.host.url=$SONAR_HOST_URL 

I Sonarqube haben 6.3.0.19869, Jenkins 2,46.1, Maven Integration Plugin in Jenkins 2.15.1 (der ältere verursachte JVM-Probleme in meinem Stack).