/**
  * Analyzes the given project descriptor and populates this object's properties.
  *
  * @param ProjectDescriptor $projectDescriptor
  *
  * @return void
  */
 public function analyze(ProjectDescriptor $projectDescriptor)
 {
     $this->unresolvedParentClassesCount = 0;
     $elementCounter = array();
     foreach ($projectDescriptor->getIndexes()->elements as $element) {
         if (!isset($elementCounter[get_class($element)])) {
             $elementCounter[get_class($element)] = 0;
         }
         $elementCounter[get_class($element)]++;
         if ($element instanceof ClassDescriptor) {
             if (is_string($element->getParent())) {
                 $this->unresolvedParentClassesCount++;
             }
         }
     }
     $this->descriptorCountByType = $elementCounter;
     $this->fileCount = count($projectDescriptor->getFiles());
     $this->topLevelNamespaceCount = count($projectDescriptor->getNamespace()->getChildren());
 }
 /**
  * Returns all elements from the project descriptor.
  *
  * @param ProjectDescriptor $projectDescriptor
  *
  * @return DescriptorAbstract[]
  */
 protected function findAllElements(ProjectDescriptor $projectDescriptor)
 {
     return $projectDescriptor->getIndexes()->get('elements', new Collection());
 }