/** * Execute lint and return errors. * * @param Linter $linter * @param OutputInterface $output * @param int $fileCount * @param bool $cache */ protected function executeLint($linter, $output, $fileCount, $cache = true) { $maxColumns = floor($this->getScreenColumns() / 2); $verbosity = $output->getVerbosity(); $linter->setProcessCallback(function ($status, $filename) use($output, $verbosity, $fileCount, $maxColumns) { static $i = 0; if ($i && $i % $maxColumns === 0) { $percent = floor($i / $fileCount * 100); $output->writeln(str_pad(" {$i} / {$fileCount} ({$percent}%)", 18, ' ', STR_PAD_LEFT)); } ++$i; if ($verbosity >= OutputInterface::VERBOSITY_VERBOSE) { $output->writeln('Linting: ' . $filename . "\t" . ($status === 'ok' ? '<info>OK</info>' : '<error>Error</error>')); } else { $output->write($status === 'ok' ? '<info>.</info>' : '<error>E</error>'); } }); return $linter->lint([], $cache); }