ソースを参照

CTest: Handle non-coverage lines in gcov files

This implements a TODO in gcov file handling.
Tobias Ellinghaus 5 年 前
コミット
ed6d20ddcb
1 ファイル変更8 行追加2 行削除
  1. 8 2
      Source/CTest/cmCTestCoverageHandler.cxx

+ 8 - 2
Source/CTest/cmCTestCoverageHandler.cxx

@@ -1215,8 +1215,6 @@ int cmCTestCoverageHandler::HandleGCovCoverage(
           while (cmSystemTools::GetLineFromStream(ifile, nl)) {
             cnt++;
 
-            // TODO: Handle gcov 3.0 non-coverage lines
-
             // Skip empty lines
             if (nl.empty()) {
               continue;
@@ -1227,6 +1225,14 @@ int cmCTestCoverageHandler::HandleGCovCoverage(
               continue;
             }
 
+            // Handle gcov 3.0 non-coverage lines
+            // non-coverage lines seem to always start with something not
+            // a space and don't have a ':' in the 9th position
+            // TODO: Verify that this is actually a robust metric
+            if (nl[0] != ' ' && nl[9] != ':') {
+              continue;
+            }
+
             // Read the coverage count from the beginning of the gcov output
             // line
             std::string prefix = nl.substr(0, 12);