web-dev-qa-db-ja.com

SonarQubeで、「カバーする線」と「カバーされていない線」のメトリックの意味の違いは何ですか?

SonarQubeで分析されたC++プロジェクトの[メジャー]タブ内のカバレッジレポートを見ています。そのページの私の要約情報は次のとおりです。

SonarQube Coverage Overview

「カバーするライン」メトリックと「カバーされないライン」メトリックの違いは何ですか?

私は sonarqube Webサイトのメトリック定義ページ を調べましたが、そこにある2つのエントリは役に立ちません。

カバーする行数-ユニットテストでカバーできるコードの行数(たとえば、空白行またはコメント行全体は、カバー)。

Uncovered lines-ユニットテストでカバーされていないコードの行数。

読み方では、カバーされていない行は、カバーする行数よりも高い数になると予想します。前者には空白行が含まれる可能性があるためです。 sonarqubeがコードをある程度理解している場合は、「ユニットテストでカバーできる」数から例外処理も除外される可能性があります。

与えられた数字は明らかにその逆なので、意味を正しく理解してはいけません。


いくつかの単体テストをCIシステムの一部として実行しており、コードカバレッジはlcovとgcovの両方を使用してコンパイルされています。 lcovデータはgenhtmlを介して渡され、現在一部のケースでデータを提供する個別のカバレッジレポートが作成されるため、部分的な設定ミスの問題が発生する可能性があります。

8
TafT

「カバーする行」は、いわゆる「完全な」世界でテストする必要がある「プロダクション」コードの合計行数です。これは、ソースコードファイルのすべての行であり、コメント、空白、または同様の非コード行ではありません。

現実の世界では、テストはこれらの一部のみをカバーします。逃した線は「カバーされていない線」です。

つまり、「カバレッジ」は次のように表現できます。

"Coverage" = 100% - 100 * "Uncovered Lines" / "Lines to Cover"
7
Mureinik