SonarQubeで分析されたC++プロジェクトの[メジャー]タブ内のカバレッジレポートを見ています。そのページの私の要約情報は次のとおりです。
私は sonarqube Webサイトのメトリック定義ページ を調べましたが、そこにある2つのエントリは役に立ちません。
カバーする行数-ユニットテストでカバーできるコードの行数(たとえば、空白行またはコメント行全体は、カバー)。
Uncovered lines-ユニットテストでカバーされていないコードの行数。
読み方では、カバーされていない行は、カバーする行数よりも高い数になると予想します。前者には空白行が含まれる可能性があるためです。 sonarqubeがコードをある程度理解している場合は、「ユニットテストでカバーできる」数から例外処理も除外される可能性があります。
与えられた数字は明らかにその逆なので、意味を正しく理解してはいけません。
いくつかの単体テストをCIシステムの一部として実行しており、コードカバレッジはlcovとgcovの両方を使用してコンパイルされています。 lcovデータはgenhtmlを介して渡され、現在一部のケースでデータを提供する個別のカバレッジレポートが作成されるため、部分的な設定ミスの問題が発生する可能性があります。
「カバーする行」は、いわゆる「完全な」世界でテストする必要がある「プロダクション」コードの合計行数です。これは、ソースコードファイルのすべての行であり、コメント、空白、または同様の非コード行ではありません。
現実の世界では、テストはこれらの一部のみをカバーします。逃した線は「カバーされていない線」です。
つまり、「カバレッジ」は次のように表現できます。
"Coverage" = 100% - 100 * "Uncovered Lines" / "Lines to Cover"