目次
はじめに
コードカバレッジとは何か?
SonarQubeサーバーでのコードカバレッジの設定
SonarQubeサー バーにおけるコードカバレッジの分析
コードカバレッジ指標の解釈
SonarQube Serverを使用したコードカバレッジ分析の利点
SonarQube とコードカバレッジ
はじめに
コードが十分にテストされていることを保証することで、失敗したテストが機能的な問題を迅速に特定するため、自信を持って更新できます。これは、ソフトウェア全体の品質と信頼性を維持するのにも役立ちます。
テスト活動の効果を測る重要な指標の一つが、コードカバレッジです。
強力な自動コードレビューソリューションであるSonarQube Serverは、テストカバレッジツールとシームレスに連携し、開発者がより高品質で、より安全で、十分にテストされたコードを書けるように支援します。
SonarQube Serverは、コードカバレッジのレポート、監視、可視化をサポートし、チームが高いコード品質基準を維持するのを助けます。
この記事では、SonarQube Serverにおけるコードカバレッジの仕組みを掘り下げ、その設定、分析、解釈について解説します。これはSonarQube Cloudにも適用されます。
コードカバレッジとは?
コードカバレッジ(テストカバレッジとも呼ばれる)は、自動テストによって実行されたコードベースの割合を測定するものです。コードベースのどの部分がテストでカバーされているか、されていないか、部分的にカバーされているかを明確にし、それによってテストカバレッジの向上が必要な潜在的な領域についてのインサイトを提供します。
低いコードカバレッジは、バグや脆弱性が未検出のまま潜んでいる可能性のある領域を示し、本番環境で潜在的なリスクをもたらします。
通常、コードカバレッジのメトリクスには以下が含まれます:
- 全体的なカバレッジ: テストによって実行されたコード全体の割合。
- 行カバレッジ: テストによって実行されたコード行の割合。
- 分岐カバレッジ: テストによって実行された制御フローの分岐(if文、ループなど)の割合。
SonarQube Serverでのコー ドカバレッジの設定
SonarQube Serverは、一般的なコードカバレッジツールとシームレスに連携する中央ハブとして機能します。静的コード解析結果と共にカバレッジレポートを収集・表示し、コードが品質基準を満たしていることを保証するための明確な合格/不合格のメトリクスを提供します。
サードパーティ製のツールでレポートを生成するように設定したら、SonarScannerにレポートの場所を伝える設定を行うだけで、SonarScannerがそれを取得し、SonarQube Serverに送信できます。
さまざまな一般的なテストツールや言語に固有のフォーマットでカバレッジデータをインポートすることをサポートしています。
直接サポートされていないツールについては、SonarQube Serverは汎用フォーマットを提供しています。
SonarQube Serverは、Java、C/C++、JavaScript、Python、.NET、PHPなど、多くのプログラミング言語をサポートしています。カバレッジレポートを有効にするには、以下の手順を実行する必要があります:
- カバレッジツールの実行: ビルドパイプラインの一部として、SonarScannerの分析前にカバレッジツールが実行されるように設定します。
- レポートフォーマットの整合: カバレッジツールの出力フォーマットをSonarScannerが期待するものと一致するように設定します。例えば、MavenベースのJavaプロジェクトでは、JaCoCoプラグインを使用してカバレッジレポートを生成できます。
- SonarScannerパラメータの設定: 生成されたレポートファイルをインポートするために、カバレッジレポートの保存場所を指定して、SonarScanner解析のテストカバレッジ用パラメータを設定します。
各ビルド中に、カバレッジツールはカバレッジデータを収集し、結果を1つ以上のファイル(通常、テストカバレッジ用に個別のファイル)に出力します。
その後、SonarScannerは分析プロセスの一部としてそれらのファイルをインポートし、結果をSonarQube Serverに送信します。
SonarQube Serverは、様々なツールや言語からのカバレッジデータをシームレスにインポートします。また、汎用フォーマットをサポートしており、カスタム変換が可能であるため、非対応ツールとの互換性も確保されています。
以下の言語の詳細なガイドが利用可能です:
- Java テストカバレッジ
- JavaScript/TypeScript テストカバレッジ
- .NET テストカバレッジ
- Python テストカバレッジ
- PHP テストカバレッジ
- C/C++/Objective-C テストカバレッジ
SonarQube Serverでのコードカバレッジの分析
設定が完了し、SonarQube Serverの分析が実行されると、SonarQube Serverでコードカバレッジの結果を表示できます。確認すべき主要な領域は次のとおりです:
- プロジェクト概要: ダッシュボードは、行、分岐、メソッドのカバレッジ率を含む、全体的なコードカバレッジのハイレベルなビューを提供します。

- カバレッジのドリルダウン: 特定のモジュール、パッケージ、クラスにドリルダウンして、詳細なカバレッジメトリクスを確認できます。これにより、追加のテストが必要な可能性のある未テストのコードセクションを特定するのに役立ちます。カバレッジメトリクスは、新規コードとコード全体の両方で利用可能です。

また、ファイルコンテキスト内のカバレッジのアノテーションで、コードがユニットテストによってカバーされているか、部分的にカバーされているか、またはカバーされていないかを確認することもできます。

- カバレッジの推移: SonarQube Serverはカバレッジを経時的に追跡し、異なるバージョンやコミットにわたるテストカバレッジの改善やリグレッション(悪化)を監視できます。

コードカバレッジメトリクスの解釈
コードカバレッジは重要なメトリクスですが、100%のカバレッジを目指すことは、ある時点から費用対効果が悪くなる可能性があります。以下に解釈のためのガイドラインをいくつか示します:
- 高いカバレッジ ≠ 高品質: 高いコードカバレッジは、高品質なテストを保証するものではありません。テストがエッジケースや潜在的な障害点をカバーしていることを確認してください。
- 意味のあるカバレッジを目指す: 単に高い割合を達成することに集中するのではなく、コードの振る舞いに自信を持たせてくれるようなカバレッジを目指しましょう。
- 他のメトリクスとのバランスを取る: コードカバレッジは、コードの臭い、バグ、セキュリティ脆弱性など、SonarQube Serverが提供する他の品質メトリクスと合わせて考慮すべきです。