Qiitaの記事をもとに、MavenのJavaプロジェクトでJaCoCoのカバレッジレポートをSonarQubeへ取り込む方法を紹介します。
サンプルプロジェクト
| |
プロジェクトには src/main/java/com/example/MyClass.java、src/test/java/com/example/MyClassTest.java、MavenとJaCoCoの設定を含む pom.xml があります。
JaCoCoレポートを生成する
JaCoCo Maven Pluginの prepare-agent でテスト実行時に計測し、report goalでXMLレポートを作成します。原文の設定例は次の通りです。
| |
テストとレポート生成を実行します。
| |
実行後、target/jacoco.exec に計測データ、target/site/jacoco/jacoco.xml にXML形式のレポートが生成されます。
SonarQubeへ送信する
SonarQubeサーバーURL、認証トークン、プロジェクトキーを指定して解析を実行します。
| |
成功ログに JaCoCo XML Report Importer と ANALYSIS SUCCESSFUL が表示されれば、レポートが取り込まれています。
SonarQubeで結果を確認する
プロジェクトのダッシュボードでカバレッジ率を確認できます。例の MyClass には coveredMethod() と uncoveredMethod() があり、テストでは前者だけを呼び出します。そのためカバレッジは50%となり、コードビューでは実行された行と未実行の行が色分けされます。


JavaではJaCoCoやCobertura、JavaScript/TypeScriptではLCOV、.NETではVisual Studio Code CoverageやOpenCover、PythonではCoverage.py、PHPではClover XML、Goでは標準カバレッジ形式などを利用できます。基本的な連携は、レポートを生成し、SonarScannerにそのパスを指定する流れです。
まとめ
JaCoCoとSonarQubeを連携すると、CI/CDでテストカバレッジを継続して確認できます。行単位の可視化によって、どのコードがテストされていないかを把握しやすくなります。