Exemplo n.º 1
0
 /**
  * Run collection process on given directory tree
  *
  * @param CollectorConfig $config Configuration options
  *
  * @throws ApplicationException
  * @return void
  */
 public function runCollector(CollectorConfig $config)
 {
     $this->logger->log("Starting collector");
     $srcDir = $config->getSourceDirectory();
     if (!$srcDir->isDir()) {
         throw new ApplicationException(sprintf('Invalid src directory "%s" specified', $srcDir), ApplicationException::InvalidSrcDirectory);
     }
     $collector = $this->factory->getCollector($config);
     $scanner = $this->factory->getScanner($config->getIncludeMasks(), $config->getExcludeMasks());
     $project = $collector->run($scanner);
     if ($collector->hasParseErrors()) {
         $this->logger->log('The following file(s) had errors during processing and were excluded:');
         foreach ($collector->getParseErrors() as $file => $message) {
             $this->logger->log(' - ' . $file . ' (' . $message . ')');
         }
     }
     $this->logger->log(sprintf("Saving results to directory '%s'", $config->getWorkDirectory()));
     $vanished = $project->cleanVanishedFiles();
     if (count($vanished) > 0) {
         $this->logger->log(sprintf("Removed %d vanished file(s) from project:", count($vanished)));
         foreach ($vanished as $file) {
             $this->logger->log(' - ' . $file);
         }
     }
     $changed = $project->save();
     if ($config->doResolveInheritance()) {
         /** @var $resolver InheritanceResolver */
         $resolver = $this->factory->getInheritanceResolver();
         $resolver->resolve($changed, $project, $config->getInheritanceConfig());
         if ($resolver->hasUnresolved()) {
             $this->logger->log('The following unit(s) had missing dependencies during inheritance resolution:');
             foreach ($resolver->getUnresolved() as $class => $missing) {
                 if (is_array($missing)) {
                     $missing = join(', ', $missing);
                 }
                 $this->logger->log(' - ' . $class . ' (missing ' . $missing . ')');
             }
         }
     }
     $this->logger->log("Collector process completed\n");
 }
Exemplo n.º 2
0
 /**
  * @param CollectorConfig $config
  *
  * @return Collector
  */
 public function getCollector(CollectorConfig $config)
 {
     return new Collector($this->getLogger(), new Project($config->getSourceDirectory(), $config->getWorkDirectory()), $this->getBackendFactory()->getInstanceFor($config->getBackend()), $config->getFileEncoding());
 }