ブログ記事

コードカバレッジのためのSonarQube Serverの活用と理解

Manish Kapur photo

Manish Kapur

製品・ソリューション担当シニアディレクター

Date

  • Clean Code
  • Clean as You Code
  • SonarQube Server

目次

  • Chevron right iconはじめに
  • Chevron right iconコードカバレッジとは何か?
  • Chevron right iconSonarQubeサーバーでのコードカバレッジの設定
  • Chevron right iconSonarQubeサーバーにおけるコードカバレッジの分析
  • Chevron right iconコードカバレッジ指標の解釈
  • Chevron right iconSonarQube Serverを使用したコードカバレッジ分析の利点
  • Chevron right iconSonarQube とコードカバレッジ
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は、様々なツールや言語からのカバレッジデータをシームレスにインポートします。また、汎用フォーマットをサポートしており、カスタム変換が可能であるため、非対応ツールとの互換性も確保されています。

以下の言語の詳細なガイドが利用可能です:


SonarQube Serverでのコードカバレッジの分析

設定が完了し、SonarQube Serverの分析が実行されると、SonarQube Serverでコードカバレッジの結果を表示できます。確認すべき主要な領域は次のとおりです:

  • プロジェクト概要: ダッシュボードは、行、分岐、メソッドのカバレッジ率を含む、全体的なコードカバレッジのハイレベルなビューを提供します。



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




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



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



コードカバレッジメトリクスの解釈

コードカバレッジは重要なメトリクスですが、100%のカバレッジを目指すことは、ある時点から費用対効果が悪くなる可能性があります。以下に解釈のためのガイドラインをいくつか示します:


  • 高いカバレッジ ≠ 高品質: 高いコードカバレッジは、高品質なテストを保証するものではありません。テストがエッジケースや潜在的な障害点をカバーしていることを確認してください。
  • 意味のあるカバレッジを目指す: 単に高い割合を達成することに集中するのではなく、コードの振る舞いに自信を持たせてくれるようなカバレッジを目指しましょう。
  • 他のメトリクスとのバランスを取る: コードカバレッジは、コードの臭い、バグ、セキュリティ脆弱性など、SonarQube Serverが提供する他の品質メトリクスと合わせて考慮すべきです。


コードカバレッジ分析にSonarQube Serverを使用するメリット

  1. 信頼性と保守性の向上: コードカバレッジが高いほど、テストによってより多くのコードパスが実行されていることを示し、開発ライフサイクルの早い段階でバグを特定・修正できます。
  2. 開発者の自信向上: コードカバレッジの大きな利点は、変更を加える際の自信です。コードカバレッジがあれば、変更の影響を即座に確認できます。意図しない副作用があれば、テストが直ちに失敗します。この即時フィードバックにより問題を早期に発見でき、コードベースの安定性が確保されます。コードカバレッジの高い十分にテストされたコードベースは開発者に自信を与え、本番環境で新たなバグを導入する懸念を軽減します。
  3. 詳細なレポート:SonarQube Serverは、コードの未テスト部分を特定する詳細なコードカバレッジレポートを提供します。これらのレポートは行単位およびファイル単位でカバレッジを分析し、テストの取り組み状況を明確に可視化します。コードカバレッジレポートは、ステークホルダーや潜在顧客に対して、テストプロセスの品質と徹底性を示すのに役立ちます。
  4. 実用的なインサイト:SonarQube Serverは、単純なカバレッジ率の報告にとどまらず、コードベースの文脈に基づいた実用的なインサイトを提供します。カバレッジの低い領域を強調表示し、カバレッジされていない行や条件などのメトリクスを提供します。SonarQube Serverがテストカバレッジについて報告するすべてのメトリクスについては、ドキュメントを参照してください。


Sonarとコードカバレッジ


SonarQube Serverは、開発者が包括的なコードカバレッジを達成できるよう支援し、未テスト領域を明確に可視化するとともに、コンテキストに基づいた実用的な洞察を提供します。


テスト効果の定量的な測定値を提供することで開発者を支援します。


このデータにより、チームはテスト目標への進捗状況を追跡し、テスト活動のためのリソース配分について情報に基づいた意思決定を行うことができます。


カバレッジ分析を開発ワークフローに統合することで、コードベースが十分にテストされ、高い品質基準を維持していることを保証できます。


コードカバレッジは重要ですが、継続的なコード品質向上のためのより広範な戦略の一部であるべきだということを忘れないでください。


コードカバレッジ分析に SonarQube Server を活用する準備はできていますか? ぜひDeveloper Editionをお試しください。




より良いコーディング方法を試してみよう

オープンソースから始めるすべてのエディションを見る
  • Follow SonarSource on Twitter
  • Follow SonarSource on Linkedin
language switcher
日本語 (Japanese)
  • 法的文書
  • トラスト センター

© 2008-2024 SonarSource SA.無断複写·転載を禁じます。SONAR、SONARSOURCE、SONARLINT、SONARQUBE、およびCLEAN AS YOU CODEは、SonarSource SAの商標です。