Преглед изворни кода

BUG: Do not produce empty coverage log files

This moves the filtering of source files to before the production of
coverage log files in order to avoid producing a CoverageLog-*.xml file
for 100 filtered-out files.  The change greatly reduces the number of
submitted coverage files when using label filters.
Brad King пре 16 година
родитељ
комит
589b4265a6
1 измењених фајлова са 21 додато и 20 уклоњено
  1. 21 20
      Source/CTest/cmCTestCoverageHandler.cxx

+ 21 - 20
Source/CTest/cmCTestCoverageHandler.cxx

@@ -464,18 +464,20 @@ int cmCTestCoverageHandler::ProcessHandler()
         << cont.TotalCoverage.size() << std::endl);
       cmCTestLog(this->CTest, HANDLER_OUTPUT, "    ");
       }
-    if ( cnt % 100 == 0 )
+
+    const std::string fullFileName = fileIterator->first;
+    bool shouldIDoCoverage
+      = this->ShouldIDoCoverage(fullFileName.c_str(),
+        sourceDir.c_str(), binaryDir.c_str());
+    if ( !shouldIDoCoverage )
       {
-      this->EndCoverageLogFile(covLogFile, logFileCount);
-      logFileCount ++;
-      if ( !this->StartCoverageLogFile(covLogFile, logFileCount) )
-        {
-        return -1;
-        }
+      cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT,
+        ".NoDartCoverage found, so skip coverage check for: "
+        << fullFileName.c_str()
+        << std::endl);
+      continue;
       }
-    const std::string fullFileName = fileIterator->first;
-    const std::string fileName
-      = cmSystemTools::GetFilenameName(fullFileName.c_str());
+
     cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT,
       "Process file: " << fullFileName << std::endl);
 
@@ -486,18 +488,18 @@ int cmCTestCoverageHandler::ProcessHandler()
       continue;
       }
 
-    bool shouldIDoCoverage
-      = this->ShouldIDoCoverage(fullFileName.c_str(),
-        sourceDir.c_str(), binaryDir.c_str());
-    if ( !shouldIDoCoverage )
+    if ( ++cnt % 100 == 0 )
       {
-      cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT,
-        ".NoDartCoverage found, so skip coverage check for: "
-        << fullFileName.c_str()
-        << std::endl);
-      continue;
+      this->EndCoverageLogFile(covLogFile, logFileCount);
+      logFileCount ++;
+      if ( !this->StartCoverageLogFile(covLogFile, logFileCount) )
+        {
+        return -1;
+        }
       }
 
+    const std::string fileName
+      = cmSystemTools::GetFilenameName(fullFileName.c_str());
     std::string shortFileName =
       this->CTest->GetShortPathToFile(fullFileName.c_str());
     const cmCTestCoverageHandlerContainer::SingleFileCoverageVector& fcov
@@ -582,7 +584,6 @@ int cmCTestCoverageHandler::ProcessHandler()
     covSumFile << (cmet) << "</CoverageMetric>\n";
     this->WriteXMLLabels(covSumFile, shortFileName);
     covSumFile << "\t</File>" << std::endl;
-    cnt ++;
     }
   this->EndCoverageLogFile(covLogFile, logFileCount);