/**
  * Collect coverage from XML object.
  *
  * @param SimpleXMLElement $xml     Clover XML object.
  * @param string           $rootDir Path to src directory.
  *
  * @return \Satooshi\Bundle\CoverallsV1Bundle\Entity\JsonFile
  */
 public function collect(\SimpleXMLElement $xml, $rootDir)
 {
     $root = rtrim($rootDir, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR;
     if (!isset($this->jsonFile)) {
         $this->jsonFile = new JsonFile();
     }
     // overwrite if run_at has already been set
     $runAt = $this->collectRunAt($xml);
     $this->jsonFile->setRunAt($runAt);
     $xpaths = array('/coverage/project/file', '/coverage/project/package/file');
     foreach ($xpaths as $xpath) {
         foreach ($xml->xpath($xpath) as $file) {
             $srcFile = $this->collectFileCoverage($file, $root);
             if ($srcFile !== null) {
                 $this->jsonFile->addSourceFile($srcFile);
             }
         }
     }
     return $this->jsonFile;
 }
 protected function createJsonFile()
 {
     $jsonFile = new JsonFile();
     $repositoryTestDir = $this->srcDir . '/RepositoryTest';
     $sourceFiles = array(0 => new SourceFile($repositoryTestDir . '/Coverage0.php', 'Coverage0.php'), 10 => new SourceFile($repositoryTestDir . '/Coverage10.php', 'Coverage10.php'), 70 => new SourceFile($repositoryTestDir . '/Coverage70.php', 'Coverage70.php'), 80 => new SourceFile($repositoryTestDir . '/Coverage80.php', 'Coverage80.php'), 90 => new SourceFile($repositoryTestDir . '/Coverage90.php', 'Coverage90.php'), 100 => new SourceFile($repositoryTestDir . '/Coverage100.php', 'Coverage100.php'));
     foreach ($sourceFiles as $percent => $sourceFile) {
         $sourceFile->getMetrics()->merge(new Metrics($this->createCoverage($percent)));
         $jsonFile->addSourceFile($sourceFile);
     }
     return $jsonFile;
 }