/**
  * @param AnalyzerResult $result
  */
 public function generate(AnalyzerResult $result)
 {
     $tree = new ResultDirectory();
     $files = $result->getPerFile();
     foreach ($files as $fileResult) {
         $relativePath = PathNormalizer::makeRelativeTo($fileResult->getFile(), $this->sourceDir);
         $tree->addFileResult($relativePath, $fileResult);
     }
     $this->renderDirectoryRecursively($tree);
 }
 /**
  * @param $filePath
  * @param AnalyzerFileResult $fileResult
  */
 public function addFileResult($filePath, AnalyzerFileResult $fileResult)
 {
     $firstSlash = strpos($filePath, '/');
     if ($firstSlash === false) {
         $this->files[$filePath] = $fileResult;
         return;
     }
     $dirName = substr($filePath, 0, $firstSlash);
     if (isset($this->directories[$dirName])) {
         $directory = $this->directories[$dirName];
     } else {
         $directory = new ResultDirectory(array_merge($this->path, array($dirName)));
         $this->directories[$dirName] = $directory;
     }
     $subPath = substr($filePath, $firstSlash + 1);
     $directory->addFileResult($subPath, $fileResult);
 }