JaCoCo-SonarQube - aucune information sur la couverture par test

J'utilise JaCoCo pour la couverture du Code. Les rapports de test unitaires sont créés avec junit et ils sont importés correctement, de sorte que les informations de test unitaires sont affichées correctement. problème j'ai le message d'erreur: aucune information sur la couverture par test. et la couverture du code est égale à 0% pour les tests unitaires, les tests d'intégration et la couverture globale. J'ai vérifié toutes les informations requises dans le projet sonar.des propriétés comme binaire, src, tests etc.

j'utilise:

- SonarQube 4.5.1

- SonarRunner 2.4

- MySQL

- junit 4.1.1

- jacoco 0.7.2

Le jacoco.exec est situé dans un fichier /cible dans le répertoire de base du projet.

en suivant vous pouvez voir le sonar-projet.propriété: De mon point de vue, toutes les voies nécessaires sont tracées correctement. (i.e. binaire, src, tests)

Comma-separated paths to directories with sources (required)
sonar.sources=src

compiled code
sonar.java.binaries=class

source code of unit tests 
sonar.tests=test/src

Comma-separated paths to files with third-party libraries (JAR files in the case of Java)
sonar.java.libraries=jar

Language
sonar.language=java

Encoding of the source files
sonar.sourceEncoding=UTF-8

Additional parameters
sonar.my.property=value

Set Project Base
sonar.projectBaseDir=C:/snapshots/steffen_latest/software/java

Tells SonarQube to reuse existing reports for unit tests execution and coverage reports
sonar.dynamicAnalysis=reuseReports

JUnit path
sonar.surefire.reportsPath=test/report/junit

Tells SonarQube where the unit tests execution reports are
sonar.junit.reportsPath=test/report/junit

Tells SonarQube that the code coverage tool by unit tests is JaCoCo
sonar.java.coveragePlugin=jacoco

Import JaCoCo code coverage report.
Tells SonarQube where the unit tests code coverage report is
Unit Tests Coverage
sonar.jacoco.reportPath=target/jacoco.exec

Tells SonarQube where the integration tests code coverage report is
sonar.jacoco.itReportPath=target/it-jacoco.exec

C'est la fichier d'enregistrement de sonar-runner:

13:56:05.883 INFO  - Sensor SurefireSensor...
13:56:05.883 INFO  - parsing C:worksnapshotssteffen_latestsoftwarejavatestreportjunit
13:56:06.149 INFO  - Sensor SurefireSensor done: 266 ms
13:56:06.149 INFO  - Sensor JaCoCoItSensor...
13:56:06.195 INFO  - Analysing C:worksnapshotssteffen_latestsoftwarejavatargetit-jacoco.exec
13:56:06.726 INFO  - **No information about coverage per test**.
13:56:06.726 INFO  - Sensor JaCoCoItSensor done: 577 ms
13:56:06.726 INFO  - Sensor JaCoCoOverallSensor...
13:56:06.851 INFO  - Analysing C:worksnapshotssteffen_latestsoftwarejava.sonarjacoco-overall.exec
13:56:07.178 INFO  - **No information about coverage per test**.
13:56:07.178 INFO  - Sensor JaCoCoOverallSensor done: 452 ms
13:56:07.178 INFO  - Sensor JaCoCoSensor...
13:56:07.209 INFO  - Analysing C:worksnapshotssteffen_latestor_basesoftwarejavatargetjacoco.exec
13:56:07.521 INFO  - **No information about coverage per test**.
13:56:07.521 INFO  - Sensor JaCoCoSensor done: 343 ms
13:56:07.521 INFO  - Sensor CPD Sensor (wrapped)...
13:56:07.521 INFO  - JavaCpdEngine is used for java
13:56:07.521 INFO  - Cross-project analysis disabled
13:56:09.019 INFO  - Sensor CPD Sensor (wrapped) done: 1498 ms
13:56:09.144 INFO  - Execute decorators...
13:56:16.166 INFO  - Store results in database

quelqu'un pourrait-il me donner un conseil quel pourrait être le problème? Car je ne sais pas quel est le problème... Je travaille sur cette question depuis quelques jours et je ne sais vraiment pas quoi faire..

je vous Remercie à l'avance.

19
demandé sur carpinchosaurio 2014-12-04 17:55:48

5 réponses

Avez-vous essayé d'utiliser le prepare-agent?

mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent install
conseils:

si votre projet utilise déjà l'argLine pour configurer le surefire-maven-plugin, assurez-vous qu'argLine soit défini comme une propriété, plutôt que comme une partie de la configuration du plugin."

2
répondu dokaspar 2015-04-16 08:32:57

Avec cette configuration Maven je peux voir la couverture par données d'essai.

Vous devez configurer sonar-jacoco-auditeurs à obtenir une couverture par test.

s'il vous Plaît être conscient que c'est déconseillé par sonar: "cette fonctionnalité est dépréciée au niveau du SonarQube et ne sera plus améliorée/entretenue."

    <skipTests>false</skipTests>
            <!--Jacoco settings -->
            <jacoco.haltOnFailure>false</jacoco.haltOnFailure>
            <jacoco.skip>false</jacoco.skip>

            <!-- sonar JACOCO properties -->
            <sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
            <sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>
            <sonar.jacoco.reportPaths>${project.reporting.outputDirectory}/jacoco-ut.exec</sonar.jacoco.reportPaths>
            <sonar.language>java</sonar.language>


<!-- Added for Jacoco -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.12.4</version>
                <configuration>
                  <properties>
                    <property>
                      <name>listener</name>
                      <value>org.sonar.java.jacoco.JUnitListener</value>
                    </property>
                  </properties>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>0.8.1</version>
                <configuration>
                    <destFile>${sonar.jacoco.reportPaths}</destFile>
                    <append>true</append>
                </configuration>
                <executions>
                    <execution>
                        <id>agent</id>
                        <goals>
                          <goal>prepare-agent</goal>
                        </goals>
                      </execution>
                </executions>
            </plugin>



        <dependency>
            <groupId>org.jacoco</groupId>
            <artifactId>org.jacoco.agent</artifactId>
            <version>0.8.1</version>
            <classifier>runtime</classifier>
        </dependency>
        <dependency>
          <groupId>org.codehaus.sonar-plugins.java</groupId>
          <artifactId>sonar-jacoco-listeners</artifactId>
          <version>1.2</version>
          <scope>test</scope>
        </dependency>
1
répondu arkay 2018-07-10 10:42:15

dans mon cas, les commandes ci-dessous fonctionnent.

mvn clean org.jacoco:jacoco-maven-plugin:0.7.3.201502191951:prepare-agent install
mvn sonar:sonar 

Pour vérifier la couverture de code: Démarrer SonarQube serveur -> Exécuter deux commandes ci-dessus l'un après l'autre et vous verrez la couverture de code dans Client SonarQube.

SonarQube Code Coverage

POUR INFORMATION: Mon SonarQube Version-5.1.2. Vous pouvez télécharger la dernière version de SonarQube Download

0
répondu OO7 2016-06-17 13:31:19

J'utilise Jun aussi bien et dans mon cas le problème était d'avoir la dépendance de TestNG dans ma pom.XML. Après avoir supprimé cette dépendance inutile, tout a commencé à fonctionner comme prévu.

0
répondu MikhailSP 2017-09-04 06:44:36

assurez-vous de diviser la compilation et l'analyse en deux étapes de compilation différentes:

mvn clean install

mvn sonar:sonar
-3
répondu Alix 2015-07-21 13:26:45