2016-08-04 8 views
3

私は、Gradleを使用したマルチモジュールのGroovyプロジェクトを持っています。私はjacoco、sonarqubeプラグインを適用しました。新しいGradle SonarQubeプラグインを使用してJacoco GroovyコードカバレッジをSonarに報告する方法は?

私は

  1. 検索ビルド/ jacoco/test.execすることができました。ジェンキンスはそれを正しく描写することができました。 SonarQube

しかしCode Coverage上のすべてのコードカバレッジの詳細

  • 検索ユニットテストの結果とソースコードと
  • ブラウズjacocoHtmlはSonarQubeに報告されていませんでした。

    は、ここで私は、ビルド時に次のログ・ステートメントを観察し、私のbuild.gradle

    plugins { 
        id "org.sonarqube" version "2.0.1" 
    } 
    
    allprojects { 
        group = 'my' 
        version = '1.0-SNAPSHOT' 
    } 
    
    subprojects { 
        apply plugin: 'groovy' 
        apply plugin: "jacoco" 
    
        dependencies { 
         compile group: 'org.codehaus.groovy', name: 'groovy-all', version: '2.4.1' 
         testCompile group: 'org.spockframework', name: 'spock-core', version: '1.0-groovy-2.4' 
         testCompile group: 'org.assertj', name: 'assertj-core', version: '2.4.1' 
        } 
    } 
    

    です。

    No binary directories defined for project core. 
    Project coverage is set to 0% since there is no directories with classes. 
    

    次に、サブプロジェクトまたはすべてのプロジェクトに以下を追加しようとしましたが、まだカバレッジがSonarQubeに報告されていませんでした。

    sonarqube { 
        properties { 
         property "sonar.groovy.jacoco.reportPath", "${project.buildDir}/jacoco/test.exec" 
         property "sonar.jacoco.reportPath", "${project.buildDir}/jacoco/test.exec" 
         property "sonar.binaries", "${project.buildDir}/classes" 
         property "sonar.groovy.binaries", "${project.buildDir}/classes" 
        } 
    } 
    

    ヤココのGroovyコードカバレッジをSonarQubeに報告するにはどうすればよいですか?

  • +0

    あなたの設定は大丈夫だと思います。これをバイナリに使用しましたが、 "$ project.buildDir.name/classes"。おそらく、あなたのモジュールとカバレッジファイルを探すパスを具体的に列挙するログからより長いスニペットを追加することができます。更新:rootにsonarqubeプラグインを適用したい場合は、別のプロジェクトであると思われるかもしれません。 – dbalakirev

    +0

    今私は1つのプロジェクトではこのような問題はありますが、他のプロジェクトではそうではありません。ルート上の設定を直接適用しようとしましたか? – dbalakirev

    答えて

    2

    私は同じ問題を抱えていたので、私のコメントを見たことがあります。

    sonar.groovy.binariesがルートプロジェクトのために一度だけ解決されます。

    私は次のような問題が報告されたグルーヴィーなプラグインのサイトを、見つけました。 プロパティがルート モジュールでは定義されていないリーフモジュール上でのみ定義されているマルチモジュールプロジェクトでは、これはカバレッジが不足している の情報です。

    https://github.com/SonarQubeCommunity/sonar-groovy/issues/52

    だから、それはあなたのモジュールのセットの場合でも:

    ":myspecialsubmodule.sonar.groovy.binaries" - >「/ホーム/ユーザー/プロジェクト/ルート・プロジェクト/ myspecialsubmodule /ビルド/クラス/メイン "

    ルートに設定されるまでは機能しません。

    configにrootを指定すると(今のところ、問題が修正されるまで)、私にとってはうまくいきました。

    property "sonar.groovy.binaries", "${project.buildDir.name}${File.separator}classes" 
    

    この回避策をいつ削除できるかを知るためにgithubの問題を追跡します。

    +0

    私はそれを試してみましょう。どうもありがとう。アップデートを投稿します。 – phani

    +2

    それは働いた。ありがとう。 '' $ {project.buildDir.name} $ {File.separator} classes ''の答えに関連する部分を編集してください。 " – phani

    +0

    非常に良い点です。 – dbalakirev

    関連する問題