2013-02-21 12 views
3

J'ai un projet scala (avec quelques fichiers java) construit en utilisant maven (scala-maven-plugin). Nous avons jacoco branché pour la couverture de code (jacoco-maven-plugin) et cela génère une bonne couverture de code scala. Nous pouvons voir les rapports html/csv dans l'endroit typique dans/target et la couverture de scala est là et bonne.Maven avec couverture Jacoco et Sonar 0%

Cependant, nous ne pouvons pas obtenir la couverture de code avec sonar pour travailler sur les fichiers scala. Le plugin s'exécute et il envoie la couverture java, donc je sais qu'il récupère quelque chose de la sortie jacoco, mais la couverture scala est manquante. De plus, si j'exécute l'objectif jacoco: check dans le cadre de la construction, il échoue sur la couverture, citant à nouveau uniquement la couverture java comme la couverture totale. Cela m'amène à croire que le problème est lié à la façon dont j'ai configuré jacoco et non au sonar.

Toute aide appréciée.

Voici les parties pertinentes de la pom

  <plugin> 
       <groupId>net.alchim31.maven</groupId> 
       <artifactId>scala-maven-plugin</artifactId> 
       <version>3.1.3</version> 
       <configuration> 
        <args> 
         <arg>-g:vars</arg> 
        </args> 
       </configuration> 
       <executions> 
        <execution> 
         <goals> 
          <goal>compile</goal> 
          <goal>testCompile</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
      <plugin> 
       <groupId>org.jacoco</groupId> 
       <artifactId>jacoco-maven-plugin</artifactId> 
       <version>0.6.2.201302030002</version> 
       <executions> 
        <execution> 
         <id>prepare-agent</id> 
         <goals> 
          <goal>prepare-agent</goal> 
         </goals> 
        </execution> 
        <execution> 
         <id>report</id> 
         <phase>prepare-package</phase> 
         <goals> 
          <goal>report</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
      <!-- disable surefire --> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <version>${maven.plugin.surefire.version}</version> 
       <configuration> 
        <skipTests>true</skipTests> 
       </configuration> 
      </plugin> 
      <!-- enable scalatest --> 
      <plugin> 
       <groupId>org.scalatest</groupId> 
       <artifactId>scalatest-maven-plugin</artifactId> 
       <version>1.0-M2</version> 
       <executions> 
        <execution> 
         <id>test</id> 
         <phase>test</phase> 
         <goals> 
          <goal>test</goal> 
         </goals> 
         <configuration> 
          <reportsDirectory>${project.build.directory}/surefire-reports</reportsDirectory> 
          <junitxml>.</junitxml> 
          <parallel>true</parallel> 
          <tagsToExclude>IntegrationTest</tagsToExclude> 
          <filereports>ScalaTestSuite.txt</filereports> 
         </configuration> 
        </execution> 
        <execution> 
         <id>integration-test</id> 
         <phase>integration-test</phase> 
         <goals> 
          <goal>test</goal> 
         </goals> 
         <configuration> 
          <reportsDirectory>${project.build.directory}/surefire-reports</reportsDirectory> 
          <junitxml>.</junitxml> 
          <parallel>true</parallel> 
          <tagsToInclude>IntegrationTest</tagsToInclude> 
          <filereports>ScalaIntegrationTestSuite.txt</filereports> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
      <plugin> 
       <groupId>org.codehaus.sonar</groupId> 
       <artifactId>sonar-maven3-plugin</artifactId> 
       <version>3.4.1</version> 
      </plugin> 




    <sonar.host.url>http://vltapp02:9000/</sonar.host.url> 
    <sonar.jdbc.url>jdbc:h2:tcp://vltapp02:9092/sonar</sonar.jdbc.url> 
    <sonar.language>java</sonar.language> 
    <sonar.core.codeCoveragePlugin>jacoco</sonar.core.codeCoveragePlugin> 
    <sonar.jacoco.reportPath>target/jacoco.exec</sonar.jacoco.reportPath> 
    <sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis> 
    <sonar.surefire.reportsPath>target/surefire-reports</sonar.surefire.reportsPath> 
+0

Avez-vous déjà trouvé une solution? – RubberDuck

+1

À la fin, j'ai écrit https://github.com/scoverage/sbt-scoverage – monkjack

Répondre

0

Peut-être vérifier jacoco/sonar contre les dossiers source. Dans ce cas, vous devriez essayer d'exposer le dossier source scala à d'autres plugins (via l'objectif 'add-source'):

  <plugin> 
      <groupId>net.alchim31.maven</groupId> 
      <artifactId>scala-maven-plugin</artifactId> 
      <version>3.1.3</version> 
      <configuration> 
       <args> 
        <arg>-g:vars</arg> 
       </args> 
      </configuration> 
      <executions> 
       <execution> 
        <goals> 
         <goal>add-source</goal> 
         <goal>compile</goal> 
         <goal>testCompile</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
+0

Merci pour la réponse. Malheureusement, j'ai toujours les mêmes problèmes. [INFO] [09: 57: 45.824] Analyse de C: \ development \ espace de travail \ mpp \ mpp-buster \ cible \ jacoco.exec [WARN] [09: 57: 45.926] Les informations de couverture n'ont pas été collectées. Peut-être oubliez-vous d'inclure des informations de débogage dans les classes compilées? – monkjack

+0

@monkjack Donc compiler en mode débogage, comme l'avertissement informe – Cole9350

+0

j'avais déjà essayé. – monkjack

Questions connexes