web-dev-qa-db-ja.com

JaCoCo-SonarQube-テストごとのカバレッジに関する情報なし

コードカバレッジにJaCoCoを使用しています。ユニットテストレポートはjunitで作成され、正しくインポートされるため、ユニットテスト情報が適切に表示されます。 問題は、エラーメッセージが表示されることです:テストごとのカバレッジに関する情報がありません。とコードカバレッジは、ユニットテスト、統合テスト、および全体的なカバレッジの値0%を示しています。バイナリ、src、テストなどのsonar-project.propertiesですべての必要な情報をチェックしました。

私が使用しています:
-SonarQube 4.5.1
-SonarRunner 2.4
-MySQL
-junit 4.1.1
-jacoco 0.7.2

Jacoco.execは、プロジェクトのベースディレクトリの/ targetファイルにあります。

以下では、sonar-project.propertiesを確認できます。私の観点から、すべての必要なパスが適切に設定されています。 (つまり、バイナリ、src、テスト)

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

これはソナーランナーからのログファイルです:

13:56:05.883 INFO  - Sensor SurefireSensor...
13:56:05.883 INFO  - parsing C:\work\snapshots\steffen_latest\software\Java\test\report\junit
13:56:06.149 INFO  - Sensor SurefireSensor done: 266 ms
13:56:06.149 INFO  - Sensor JaCoCoItSensor...
13:56:06.195 INFO  - Analysing C:\work\snapshots\steffen_latest\software\Java\target\it-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:\work\snapshots\steffen_latest\software\Java\.sonar\jacoco-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:\work\snapshots\steffen_latest\or_base\software\Java\target\jacoco.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

誰が問題になる可能性があるかアドバイスをくれますか?何が問題なのかわからないので...数日からこの問題に取り組んでおり、どうすればいいのか本当にわかりません。

前もって感謝します。

20
Stelos10

prepare-agentを使用してみましたか?

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

また、カバレッジが0%を示し続ける場合は、 このアドバイス に従う必要があります。

プロジェクトですでにargLineを使用してsurefire-maven-pluginを構成している場合は、argLineがプラグイン構成の一部としてではなく、プロパティとして定義されていることを確認してください。」

2
dokaspar

このMaven構成では、テストデータごとのカバレッジを確認できます。

テストごとのカバレッジを取得するには、sonar-jacoco-listenersを構成する必要があります。

sonar によって非推奨になっていることに注意してください:「この機能はSonarQubeレベルでは非推奨であり、今後の改善/メンテナンスは受けられなくなります。」

    <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
arkay

私の場合、以下のコマンドが機能します。

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

コードカバレッジを確認するには: SonarQubeサーバーを起動-> 2つのコマンドを上から順に実行すると、 SonarQube Client にコードカバレッジが表示されます。

SonarQube Code Coverage

FYI: My SonarQubeバージョン-5.1.2。最新バージョンは からダウンロードできますSonarQubeダウンロード

0
OO7

私はJUnitも使用していますが、私の場合、問題はpom.xmlにTestNG依存関係があることが原因でした。この不要な依存関係を削除した後、すべてが期待どおりに機能し始めました。

0
MikhailSP