3

Bambooは継続的なビルドを行うために用意されていますが、品質メトリクスの追跡にSonarを使用したいと考えています。ユニットテストの合格/不合格とクローバーコードカバレッジメトリックは、Bambooでキャプチャする必要があります。ただし、単体テストとCloverを2回実行してビルド期間が長くならないように、これらの同じ値をSonarにも送信する必要があります。

Mavenビルドで「sonar.dynamicAnalysis=reuseReports」ディレクティブを使用して、これらのメトリックをBambooビルドからSonarに送信できるようになりました。ただし、Sonarの「ルールコンプライアンス」メトリックは0%になります。

ディレクティブを使用せずに以前にいじくり回したことに基づいて、ルールコンプライアンススコアは高くなります。したがって、ディレクティブを使用すると、そのメトリックが計算されないことがどういうわけか妨げられていることは明らかです。

このディレクティブを使用してルールコンプライアンススコアを取得する方法を知っている人はいますか?それとも、診断に役立つ何かを指摘できますか?「-e」オプションを指定してMavenを実行しても、特に役立つものは何もありません。

4

2 に答える 2

7

多くの道のりとエラーの後で、私はついにソナー、ジャココ、そしてバンブーが調和して一緒に働くようにすることができました。ここでプロセスを文書化しましたが、ソリューションをここにコピーして、常に利用できるようにします。

私のアプリケーションでは、実際にソナーランナータスクを使用しました。ソナーランナーをインストールして構成するためのより明確な手順がありますが、これはインストールガイドには記載されていません。まず、sonar-runnerをインストールし、sonar-runner.propertiesで次のプロパティを指定する必要があります。

#----- Default Sonar server
sonar.host.url=http://localhost:9000

#sonar.jdbc.url=jdbc:postgresql://localhost/sonar
#sonar.jdbc.driver=org.postgresql.Driver

#----- Global database settings
sonar.jdbc.username=user
sonar.jdbc.password=passwd

上部のAntビルドスクリプトにjacocoxmlnsを含めます。

<project basedir="." default="build" name="project" xmlns:jacoco="antlib:org.jacoco.ant">
    <property environment="env" />

    <taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml">
       <classpath path="libs/independent/jacocoant.jar"/>
    </taskdef>

次に、Antビルドスクリプトにjacocoカバレッジを追加する必要があります。

<jacoco:coverage enabled="${tests.code.coverage}" destfile="${jacoco.exec.dest}">
    <junit fork="yes" printsummary="withOutAndErr" dir="${tests.working.dir}">
    ...

最後に、jacocoの結果を使用し、ビルドで生成されたレポートを再利用するように、竹からソナーに指示する必要があります。これを行うには、Bambooジョブのソナー分析用にタスク構成の「カスタム追加パラメーター」に次のプロパティを追加します。次のオプションを構成します。

-DbuildNumber=${bamboo.buildNumber}
-Dsonar.core.codeCoveragePlugin=jacoco
-Dsonar.jacoco.reportPath=tests/jacoco-exec/jacoco.exec
-Dsonar.dynamicAnalysis=reuseReports
-Dsonar.surefire.reportsPath=tests/test-reports

これらすべてを構成すると、テストカバレッジがソナーに表示され始め、#成功したテストがリストされます。

単体テストから生成されたレポートを再利用するように、sunfireプロパティを設定してください。そうしないと、レポートを再利用するように指示しても、ソナーはそれらを見つける場所を知りません。それがあなたの次の試みに役立つことを願っています。

于 2012-02-24T01:43:00.517 に答える
-2

以下に行ってください

リンクリンク2

于 2015-03-25T13:50:16.757 に答える