示例#1
0
 /**
  * Parse an individual uncovered source file.
  **/
 public function ParseUncoveredSourceFile($fileinfo, $path)
 {
     $coverageFileLog = new CoverageFileLog();
     $coverageFileLog->AggregateBuildId = $this->AggregateBuildId;
     $coverageFileLog->PreviousAggregateParentId = $this->PreviousAggregateParentId;
     $coverageFile = new CoverageFile();
     $coverageFile->FullPath = trim($path);
     $coverage = new Coverage();
     $coverage->CoverageFile = $coverageFile;
     // SplFileObject was giving me an erroneous extra line at the
     // end of the file, so instead we use good old file().
     $lines = file($fileinfo);
     $lineNumber = 0;
     foreach ($lines as $line) {
         $sourceLine = rtrim($line);
         $coverageFile->File .= $sourceLine;
         $coverageFile->File .= '<br>';
         $coverageFileLog->AddLine($lineNumber, 0);
         $lineNumber++;
     }
     // Save this source file to the database.
     $coverageFile->TrimLastNewline();
     $coverageFile->Update($this->Build->Id);
     // Check if this build already has coverage for this file.
     // If so, return early so we don't overwrite it with a blank entry.
     $coverage->BuildId = $this->Build->Id;
     if ($coverage->Exists()) {
         return false;
     }
     // Otherwise save the line-by-line coverage to the database.
     $coverageFileLog->BuildId = $this->Build->Id;
     $coverageFileLog->FileId = $coverageFile->Id;
     $coverageFileLog->Insert(true);
     $coverage->LocUntested = $lineNumber;
     $coverage->LocTested = 0;
     $coverage->Covered = 1;
     // Add any labels.
     if (array_key_exists($path, $this->Labels)) {
         foreach ($this->Labels[$path] as $labelText) {
             $label = new Label();
             $label->SetText($labelText);
             $coverage->AddLabel($label);
         }
     }
     // Add this Coverage to our summary.
     $this->CoverageSummary->AddCoverage($coverage);
 }