2011-08-27 8 views
5

私は、次のソナーのAntターゲットが定義されていない:私は「アリソナー」を実行して、私のブラウザでソナーを持ち出すとき、私はsrcディレクトリ内のクラスに関する情報を参照してくださいSonarにテストの統計情報をエクスポートするにはどうすればよいですか?

<target name='sonar'> 
    <property name='sonar.sources' value='${src.dir}'/> 
    <property name='sonar.tests' value='${test.src.dir}'/> 
    <property name='sonar.binaries' value='build/classes'/> 
    <path id='jars'> 
     <fileset dir='${env.JAVA_HOME}/jre/lib' includes='*.jar'/> 
     <fileset dir='build/lib/test' includes='*.jar'/> 
    </path> 
    <pathconvert property='sonar.libraries' refid='jars' pathsep=','/> 

    <exec executable='p4' outputproperty='p4.P4CLIENT'> 
     <arg value='set'/> 
     <arg value='P4CLIENT'/> 
    </exec> 
    <propertyregex 
      property='p4client' 
      input='${p4.P4CLIENT}' 
      regexp='P4CLIENT=([^ ]+) *.*' 
      replace='\1'/> 
    <propertyregex 
      property='sonar.timestamp' 
      input='${build.time}' 
      regexp='_' 
      replace='T'/> 
    <sonar:sonar key='com.netflix:${module.name}' version='${p4client}@${sonar.timestamp}' xmlns:sonar='antlib:org.sonar.ant'/> 

    <property name='sonar.dynamicAnalysis' value='reuseReports'/> 
    <property name='sonar.emma.reportPath' value='${coverage.dir}'/> 
</target> 

が、中のものについては何もテストディレクトリ。

sonar.sourcesに$ {test.src.dir}を追加し、sonar.testsを設定しないと、テストクラスに関する情報が表示されますが、Sonarはまだ0テストの成功を報告しています。

どのようにして各テストメソッドとその統計にドリルダウンできますか?

答えて

2

プロパティ 'sonar.surefire.reportsPath'は、ソナーターゲットの定義の前に定義する必要があります。 (それはまだカバレッジ情報をエクスポートしていないが)

次の定義は、エクスポートされたテスト情報を取得します。

<property name='sonar.surefire.reportsPath' value='${test.dir}'/> 

<property name='sonar.dynamicAnalysis' value='reuseReports'/> 
<property name='sonar.emma.reportPath' value='${coverage.report.dir}'/> 

<target name='sonar'> 
    <property name='sonar.sources' value='${src.dir}'/> 
    <property name='sonar.tests' value='${test.src.dir}'/> 
    <property name='sonar.binaries' value='${build.dir}'/> 
    <path id='jars'> 
     <fileset dir='${env.JAVA_HOME}/jre/lib' includes='*.jar'/> 
     <fileset dir='${ivy.lib.dir}/test' includes='*.jar'/> 
    </path> 
    <pathconvert property='sonar.libraries' refid='jars' pathsep=','/> 

    <exec executable='p4' outputproperty='p4.P4CLIENT'> 
     <arg value='set'/> 
     <arg value='P4CLIENT'/> 
    </exec> 
    <propertyregex 
      property='p4client' 
      input='${p4.P4CLIENT}' 
      regexp='P4CLIENT=([^ ]+) *.*' 
      replace='\1'/> 
    <propertyregex 
      property='sonar.timestamp' 
      input='${build.time}' 
      regexp='_' 
      replace='T'/> 

    <sonar:sonar key='com.netflix:${module.name}' version='${p4client}@${sonar.timestamp}' xmlns:sonar='antlib:org.sonar.ant'/> 
</target> 
+0

こんにちは私は、[同様の問題](http://stackoverflow.com/questions/21267948/sonarqube-test-coverage-report-for-android-built-with-ant)を抱えているが、全く同じではありません。あなたはどうやってエマファイルを出していますか? – JaKXz

+0

私たちは、実際にソナーを使用して停止しましたし、私たち自身のビルドデータリポジトリを構築します。 –

6

この問題を越え、私は最終的に私たちのエマコードカバレッジを報告するソナーを持って実行します他の誰のために。最初の問題は、私が使用していたSonarのバージョン(3.1.1)がEmmaプラグインに付属していないことでした。私はdownload itにして、Sonarのextensions/pluginsディレクトリにインストールして再起動してください。

は、その後、私は私のbuild.xmlの次のプロパティを設定する必要がありました:いくつかの後

[sonar:sonar] 13:41:49.705 WARN  org.sonar.INFO - No coverage (*.ec) file found in /my/local/path 
[sonar:sonar] 13:41:49.708 WARN  org.sonar.INFO - No metadata (*.em) file found in /my/local/path 

:この後

<property name="sonar.core.codeCoveragePlugin" value="emma" /> 
<property name="sonar.emma.reportPath" value="${coverage.dir}" /> 

を、私少なくともソナーAntタスクを実行した後、次の出力を見て私は、Sonar Emma pluginの中に、.ec(カバレッジ)ファイルと.em(メタデータ)ファイルを探すようにハードコードされていることが分かりました。残念ながら、私のカバレッジファイルの拡張子は.emmaで、メタデータファイルの名前は変更できませんでした。そこで以下のAntタスクを書いてSonar Emmaプラグインが期待する命名基準に合うようにファイルをコピーします。再びこれを実行した後

<target name="createEmmaFilesWithSonarNamingStandard" depends="defineAntContribTasks"> 
    <if> 
     <available file="${coverage.dir}/metadata.emma" /> 
     <then> 
      <copyfile src="${coverage.dir}/metadata.emma" dest="${coverage.dir}/metadata.em" /> 
     </then> 
    </if> 
    <if> 
     <available file="${coverage.dir}/coverage.emma" /> 
     <then> 
      <copyfile src="${coverage.dir}/coverage.emma" dest="${coverage.dir}/coverage.ec" /> 
     </then> 
    </if> 
</target> 

、私は新しい問題に出くわした:いくつかのより多くの掘削後

org.sonar.api.utils.SonarException: java.io.IOException: cannot read [/my/local/path/build/coverage/metadata.em]: created by another EMMA version [2.0.5312] 

、私はソナーエマ1.0.1プラグインがエマ2.0.5312に対して、コンパイルされていることを発見し、ソナーエマ1.1とSonar Emma pluginページ上に述べたようにエマのバージョン2.1.5320に対して1.2.xの。

Emmaの2.1.5320バージョンをダウンロードし、emma.jaremma_ant.jarの両方をAnt libディレクトリに置き換えました。クリーン再コンパイルとテストの後、私はソナーAntタスクを再実行して、私のコードカバレッジはソナーに反映していすることができました。

関連する問題