示例#1
0
 protected function execute(Console\Input\InputInterface $input, Console\Output\OutputInterface $output)
 {
     $configFile = $input->getArgument('config');
     if (!$configFile) {
         throw new \Exception('Config argument needed');
     }
     $filesystem = new FilesystemAccess(null);
     $config = new Config($filesystem);
     $config->loadConfig($configFile);
     $config = $config->getConfig();
     $config->folders->root = realpath($config->folders->root);
     $filesystem->setRoot($config->folders->root);
     $directoryScanner = new DirectoryScanner($filesystem, $config->folders->root);
     foreach ($config->folders->include as $include) {
         $directoryScanner->includeDirectory($include);
     }
     foreach ($config->folders->exclude as $exclude) {
         $directoryScanner->excludeDirectory($exclude);
     }
     foreach ($config->filetypes->include as $include) {
         $directoryScanner->includeFiletype($include);
     }
     foreach ($config->filetypes->exclude as $exclude) {
         $directoryScanner->excludeFiletype($exclude);
     }
     $files = $directoryScanner->getFiles();
     $outputClass = new ChainedOutput($output);
     foreach ($config->output as $outputConfiguration) {
         $outputClass->addOutputClass($outputConfiguration->class, $outputConfiguration->parameter);
     }
     $classScanner = new ClassScanner($filesystem, $config->folders->root, $config->vendor, $outputClass);
     $classModifier = new NamespaceDependencyChecker($filesystem, $classScanner, $config->vendor, $config->folders->root, $outputClass);
     $classModifier->analyze($files);
     $outputClass->printAll();
     $outputClass->writeln(\PHP_Timer::resourceUsage());
     if ($classScanner->foundError || $classModifier->foundError) {
         return 1;
     } else {
         return 0;
     }
 }