protected function execute(InputInterface $input, OutputInterface $output)
{
ini_set('memory_limit', -1);
$this->printBanner($output);
$configurationLoader = new ConfigurationLoader($input->getArgument('depfile'));
if (!$configurationLoader->hasConfiguration()) {
$this->printConfigMissingError($output, $configurationLoader);
return 1;
}
$configuration = $configurationLoader->loadConfiguration();
new ConsoleFormatter($this->dispatcher, $output);
$parser = new NikicPhpParser();
$astMap = $this->astRunner->createAstMapByFiles($parser, $this->dispatcher, $this->collectFiles($configuration));
$dependencyResult = new DependencyResult();
/** @var $dependencyEmitters DependencyEmitterInterface[] */
$dependencyEmitters = [new InheritanceDependencyEmitter(), new BasicDependencyEmitter()];
foreach ($dependencyEmitters as $dependencyEmitter) {
$this->printEmitStart($output, $dependencyEmitter);
$dependencyEmitter->applyDependencies($parser, $astMap, $dependencyResult);
}
$this->printEmitEnd($output);
$this->printFlattenStart($output);
(new DependencyInheritanceFlatter())->flattenDependencies($astMap, $dependencyResult);
$this->printFlattenEnd($output);
$classNameLayerResolver = new ClassNameLayerResolverCacheDecorator(new ClassNameLayerResolver($configuration, $astMap, $this->collectorFactory, $parser));
$this->printCollectViolations($output);
/** @var $violations RulesetEngine\RulesetViolation[] */
$violations = $this->rulesetEngine->getViolations($dependencyResult, $classNameLayerResolver, $configuration->getRuleset());
$this->printFormattingStart($output);
foreach ($this->formatterFactory->getActiveFormatters($input) as $formatter) {
try {
$formatter->finish(new DependencyContext($astMap, $violations, $dependencyResult, $classNameLayerResolver), $output, $this->formatterFactory->getOutputFormatterInput($formatter, $input));
} catch (\Exception $ex) {
$this->printFormatterException($output, $formatter->getName(), $ex);
}
}
return count($violations) ? 1 : 0;
}