2017-03-22 13 views
1

Sonarをコードベースで実行するスタンドアロンのJenkinsジョブがありますが、これは問題なく動作しますが、後処理ジョブJenkinsのコードカバレッジを正しく表示します。私はジェンキンスログでこれを受け付けておりますような問題は、ソナーが正しくexecのファイルを拾っていないとだと思う:Jacquo.execファイルがJenkinsのSonarによって選択されていない

INFO: Analysing D:\Data\CCS\Jenkins\jobs\Sonar Scan\workspace\ccs-core\target\jacoco.exec 
INFO: Analysing D:\Data\CCS\Jenkins\jobs\Sonar Scan\workspace\ccs-core-common\target\jacoco.exec 
INFO: Analysing D:\Data\CCS\Jenkins\jobs\Sonar Scan\workspace\ccs-core-client\target\jacoco.exec 
INFO: No JaCoCo analysis of project coverage can be done since there is no class files. 

ジョブが持って後、私はファイルがその場所にいることを確認することができるという事実にもかかわらず、完了しました。

私は、ビルド中に2つのステップを持って、最初はMVN経由Jacocoを実行することです:

clean org.jacoco:jacoco-maven-plugin:prepare-agent install -Dmaven.test.failure.ignore=true 

秒だけのレポートを生成するためにソナープラグインを使用しています。その後、JenkinsでJacocoレポートを生成する後処理レポートがあります。

私が迷っているかもしれないものを私に指摘してもらえますか?

答えて

0

これを試してみてください。

<properties> 
<jacoco.data.file>${project.build.directory}/coverage-reports/jacoco.exec</jacoco.data.file> 
... 
</properties> 

     <plugin> 
      <groupId>org.jacoco</groupId> 
      <artifactId>jacoco-maven-plugin</artifactId> 
      <executions> 

       <execution> 
        <id>default-prepare-agent</id> 
        <goals> 
         <goal>prepare-agent</goal> 
        </goals> 
        <configuration> 
         <destFile>${jacoco.data.file}</destFile> 
         <propertyName>surefireArgLine</propertyName> 
        </configuration> 
       </execution> 
       <execution> 
        <id>post-unit-test</id> 
        <phase>test</phase> 
        <goals> 
         <goal>report</goal> 
        </goals> 
        <configuration> 
         <dataFile>${jacoco.data.file}</dataFile> 
         <outputDirectory>${project.reporting.outputDirectory}/jacoco</outputDirectory> 
        </configuration> 
       </execution> 
        ... 
        ... 

のpom.xmlで

そしてsonar-projet.propertiesでのプロジェクト構造はと少し奇妙であるように、これは、動作しません

sonar.jacoco.reportPath=coverage-reports/jacoco.exec 
+0

サブpom.xmlファイル私の設定ファイルは次のようになります: #ソースを持つディレクトリへのカンマ区切りパス(必須) sonar.sources = ccs-core/src、ccs-core-client/src、ccs-core-common/src sonar.binaries = ccs-core/target/classes、ccs-core-client/target/classes、ccs-core-common/target/classes #テストカバレッジロケーション sonar.jacoco.reportPaths = ccs-core/target/jacoco.exec 、ccs-core-client/target/jacoco.exec、ccs-core-common/target/jacoco.exec –

+0

これは機能しません。プロジェクト構造には独自のpomsを持つサブプロジェクトがあるためです。私はそれが基本的に問題だと思う。私はこれを越えて走った:http://stackoverflow.com/questions/27778752/how-can-i-integrate-jacoco-reports-with-sonarqube-without-using-mavenこれは私がsonar.binariesを設定する必要があると述べたプロパティが、同じエラーで失敗しています。私はsonar.junit.reportsPathも指定する必要があるのか​​、サブプロジェクトごとに複数のパスをカンマ区切りの値として指定できるのかどうかはわかりません。 –

+0

はい、sonar.junit.reportsPathに複数のパスを追加することはできません。私はこれらのモジュールのそれぞれを別々に指定する必要があるので、私は単にこれを行うことができないと思う。 –

関連する問題