本文整理汇总了PHP中Symfony\Component\Stopwatch\Stopwatch::getEvent方法的典型用法代码示例。如果您正苦于以下问题:PHP Stopwatch::getEvent方法的具体用法?PHP Stopwatch::getEvent怎么用?PHP Stopwatch::getEvent使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Symfony\Component\Stopwatch\Stopwatch
的用法示例。
在下文中一共展示了Stopwatch::getEvent方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: push
/**
* @param string|array $data
* @param string $routeName
* @param array[] $routeParameters
*/
public function push($data, $routeName, array $routeParameters = array(), array $context = [])
{
$eventName = 'push.' . $this->getName();
$this->stopwatch->start($eventName, 'websocket');
$this->pusher->push($data, $routeName, $routeParameters, $context);
$this->stopwatch->stop($eventName);
$this->dataCollector->collectData($this->stopwatch->getEvent($eventName), $this->getName());
}
示例2: stop
/**
* Stop and assign values to contao debug bar.
*
* @return void
*
* @SuppressWarnings(PHPMD.Superglobals)
*/
public function stop()
{
$rulesEvent = $this->watch->getEvent('dom_manipulator_rules');
$manipulationEvent = $this->watch->stop('dom_manipulator_manipulation');
$totalEvent = $this->watch->stop('dom_manipulator');
$GLOBALS['TL_DEBUG']['dom_manipulator_total'] = $this->formatDuration('total', $totalEvent);
$GLOBALS['TL_DEBUG']['dom_manipulator_rules'] = $this->formatDuration('rule creation', $rulesEvent);
$GLOBALS['TL_DEBUG']['dom_manipulator_dom'] = $this->formatDuration('manipulation', $manipulationEvent);
}
示例3: getFile
/**
* Locks and gets a file handler.
*
* @return resource The file handler.
* @throws LockingException
*/
private function getFile()
{
$init = false;
if (!file_exists($this->file)) {
$init = true;
touch($this->file);
}
$fHandler = fopen($this->file, 'r+');
$block = false;
$stopWatch = new Stopwatch();
$stopWatch->start('querker.filelock.getfile');
$locked = false;
do {
if (!flock($fHandler, LOCK_EX | LOCK_NB, $block)) {
if ($block) {
if ($stopWatch->getEvent('querker.filelock.getfile')->getDuration() <= self::MAX_WAIT_TIME * 1000) {
sleep(0.1);
} else {
throw new LockingException("Unable to get exclusive lock on file (" . $this->file . ").");
}
}
} else {
$locked = true;
}
} while (!$locked);
if ($init) {
fwrite($fHandler, serialize(new PriorityQueue()));
}
$stopWatch->stop('querker.filelock.getfile');
return $fHandler;
}
示例4:
function it_stops(Stopwatch $stopwatch, StopwatchEvent $event)
{
$stopwatch->getEvent('dom_manipulator_rules')->shouldBeCalled()->willReturn($event);
$stopwatch->stop('dom_manipulator')->shouldBeCalled()->willReturn($event);
$stopwatch->stop('dom_manipulator_manipulation')->shouldBeCalled()->willReturn($event);
$this->stop();
}
示例5: execute
/**
* @see Command
*/
protected function execute(InputInterface $input, OutputInterface $output)
{
$verbosity = $output->getVerbosity();
$resolver = new ConfigurationResolver();
$resolver->setCwd(getcwd())->setDefaultConfig($this->defaultConfig)->setOptions(array('allow-risky' => $input->getOption('allow-risky'), 'config' => $input->getOption('config'), 'dry-run' => $input->getOption('dry-run'), 'rules' => $input->getOption('rules'), 'path' => $input->getArgument('path'), 'path-mode' => $input->getOption('path-mode'), 'progress' => OutputInterface::VERBOSITY_VERBOSE <= $verbosity && 'txt' === $input->getOption('format'), 'using-cache' => $input->getOption('using-cache'), 'cache-file' => $input->getOption('cache-file'), 'format' => $input->getOption('format')))->resolve();
$reporter = ReporterFactory::create()->registerBuiltInReporters()->getReporter($resolver->getFormat());
$stdErr = $output instanceof ConsoleOutputInterface ? $output->getErrorOutput() : ('txt' === $reporter->getFormat() ? $output : null);
if (null !== $stdErr && extension_loaded('xdebug')) {
$stdErr->writeln(sprintf($stdErr->isDecorated() ? '<bg=yellow;fg=black;>%s</>' : '%s', 'You are running php-cs-fixer with xdebug enabled. This has a major impact on runtime performance.'));
}
$config = $resolver->getConfig();
$configFile = $resolver->getConfigFile();
if (null !== $stdErr && $configFile) {
$stdErr->writeln(sprintf('Loaded config from "%s".', $configFile));
}
$linter = new NullLinter();
if ($config->usingLinter()) {
try {
$linter = new Linter($config->getPhpExecutable());
} catch (UnavailableLinterException $e) {
if (null !== $stdErr && $configFile) {
$stdErr->writeln('Unable to use linter, can not find PHP executable.');
}
}
}
if (null !== $stdErr && $config->usingCache()) {
$cacheFile = $config->getCacheFile();
if (is_file($cacheFile)) {
$stdErr->writeln(sprintf('Using cache file "%s".', $cacheFile));
}
}
$showProgress = $resolver->getProgress();
$runner = new Runner($config, $input->getOption('diff') ? new SebastianBergmannDiffer() : new NullDiffer(), $showProgress ? $this->eventDispatcher : null, $this->errorsManager, $linter, $resolver->isDryRun());
$progressOutput = $showProgress && $stdErr ? new ProcessOutput($stdErr, $this->eventDispatcher) : new NullOutput();
$this->stopwatch->start('fixFiles');
$changed = $runner->fix();
$this->stopwatch->stop('fixFiles');
$progressOutput->printLegend();
$fixEvent = $this->stopwatch->getEvent('fixFiles');
$reportSummary = ReportSummary::create()->setChanged($changed)->setAddAppliedFixers(OutputInterface::VERBOSITY_VERBOSE <= $output->getVerbosity())->setIsDecoratedOutput($output->isDecorated())->setIsDryRun($resolver->isDryRun())->setMemory($fixEvent->getMemory())->setTime($fixEvent->getDuration());
$output->write($reporter->generate($reportSummary));
$invalidErrors = $this->errorsManager->getInvalidErrors();
$exceptionErrors = $this->errorsManager->getExceptionErrors();
$lintErrors = $this->errorsManager->getLintErrors();
if (null !== $stdErr) {
if (count($invalidErrors) > 0) {
$this->listErrors($stdErr, 'linting before fixing', $invalidErrors);
}
if (count($exceptionErrors) > 0) {
$this->listErrors($stdErr, 'fixing', $exceptionErrors);
}
if (count($lintErrors) > 0) {
$this->listErrors($stdErr, 'linting after fixing', $lintErrors);
}
}
return $this->calculateExitStatus($resolver->isDryRun(), count($changed) > 0, count($invalidErrors) > 0, count($exceptionErrors) > 0);
}
示例6: execute
protected function execute(InputInterface $input, OutputInterface $output)
{
$this->questionHelper = $this->getHelperSet()->get('question');
$this->entityManager = $this->getHelperSet()->get('em')->getEntityManager();
$this->solr = $this->getHelperSet()->get('solr')->getSolr();
$text = "";
if (null !== $this->solr) {
if (true === $this->getHelperSet()->get('solr')->ready()) {
if ($input->getOption('reset')) {
$confirmation = new ConfirmationQuestion('<question>Are you sure to reset Solr index?</question>', false);
if ($this->questionHelper->ask($input, $output, $confirmation)) {
$update = $this->solr->createUpdate();
$update->addDeleteQuery('*:*');
$update->addCommit();
$this->solr->update($update);
$text = '<info>Solr index resetted…</info>' . PHP_EOL;
}
} elseif ($input->getOption('reindex')) {
$confirmation = new ConfirmationQuestion('<question>Are you sure to reindex your Node database?</question>', false);
if ($this->questionHelper->ask($input, $output, $confirmation)) {
$stopwatch = new Stopwatch();
$stopwatch->start('global');
$this->reindexNodeSources($this->solr, $output);
$stopwatch->stop('global');
$duration = $stopwatch->getEvent('global')->getDuration();
$text = PHP_EOL . sprintf('<info>Node database has been re-indexed in %.2d ms.</info>', $duration) . PHP_EOL;
}
} else {
$text .= '<info>Solr search engine server is running…</info>' . PHP_EOL;
}
} else {
$text .= '<error>Solr search engine server does not respond…</error>' . PHP_EOL;
$text .= 'See your config.yml file to correct your Solr connexion settings.' . PHP_EOL;
}
} else {
$text .= '<error>No Solr search engine server has been configured…</error>' . PHP_EOL;
$text .= 'Personnalize your config.yml file to enable Solr (sample):' . PHP_EOL;
$text .= '
solr:
endpoint:
localhost:
host:"localhost"
port:"8983"
path:"/solr"
core:"mycore"
timeout:3
username:""
password:""
';
}
$output->writeln($text);
}
示例7: execute
/**
* @see Command
*/
protected function execute(InputInterface $input, OutputInterface $output)
{
$verbosity = $output->getVerbosity();
$resolver = new ConfigurationResolver($this->defaultConfig, array('allow-risky' => $input->getOption('allow-risky'), 'config' => $input->getOption('config'), 'dry-run' => $input->getOption('dry-run'), 'rules' => $input->getOption('rules'), 'path' => $input->getArgument('path'), 'path-mode' => $input->getOption('path-mode'), 'progress' => OutputInterface::VERBOSITY_VERBOSE <= $verbosity && 'txt' === $input->getOption('format'), 'using-cache' => $input->getOption('using-cache'), 'cache-file' => $input->getOption('cache-file'), 'format' => $input->getOption('format'), 'diff' => $input->getOption('diff')), getcwd());
$reporter = $resolver->getReporter();
$stdErr = $output instanceof ConsoleOutputInterface ? $output->getErrorOutput() : ('txt' === $reporter->getFormat() ? $output : null);
if (null !== $stdErr && extension_loaded('xdebug')) {
$stdErr->writeln(sprintf($stdErr->isDecorated() ? '<bg=yellow;fg=black;>%s</>' : '%s', 'You are running php-cs-fixer with xdebug enabled. This has a major impact on runtime performance.'));
}
$configFile = $resolver->getConfigFile();
if (null !== $stdErr) {
$stdErr->writeln(sprintf('Loaded config <comment>%s</comment>%s.', $resolver->getConfig()->getName(), null === $configFile ? '' : ' from "' . $configFile . '"'));
}
if (null !== $stdErr && $resolver->getUsingCache()) {
$cacheFile = $resolver->getCacheFile();
if (is_file($cacheFile)) {
$stdErr->writeln(sprintf('Using cache file "%s".', $cacheFile));
}
}
$showProgress = $resolver->getProgress();
$runner = new Runner($resolver->getFinder(), $resolver->getFixers(), $input->getOption('diff') ? new SebastianBergmannDiffer() : new NullDiffer(), $showProgress ? $this->eventDispatcher : null, $this->errorsManager, $resolver->getLinter(), $resolver->isDryRun(), $resolver->getCacheManager());
$progressOutput = $showProgress && $stdErr ? new ProcessOutput($stdErr, $this->eventDispatcher) : new NullOutput();
$this->stopwatch->start('fixFiles');
$changed = $runner->fix();
$this->stopwatch->stop('fixFiles');
$progressOutput->printLegend();
$fixEvent = $this->stopwatch->getEvent('fixFiles');
$reportSummary = new ReportSummary($changed, $fixEvent->getDuration(), $fixEvent->getMemory(), OutputInterface::VERBOSITY_VERBOSE <= $output->getVerbosity(), $resolver->isDryRun(), $output->isDecorated());
if ($output->isDecorated()) {
$output->write($reporter->generate($reportSummary));
} else {
$output->write($reporter->generate($reportSummary), false, OutputInterface::OUTPUT_RAW);
}
$invalidErrors = $this->errorsManager->getInvalidErrors();
$exceptionErrors = $this->errorsManager->getExceptionErrors();
$lintErrors = $this->errorsManager->getLintErrors();
if (null !== $stdErr) {
if (count($invalidErrors) > 0) {
$this->listErrors($stdErr, 'linting before fixing', $invalidErrors);
}
if (count($exceptionErrors) > 0) {
$this->listErrors($stdErr, 'fixing', $exceptionErrors);
}
if (count($lintErrors) > 0) {
$this->listErrors($stdErr, 'linting after fixing', $lintErrors);
}
}
return $this->calculateExitStatus($resolver->isDryRun(), count($changed) > 0, count($invalidErrors) > 0, count($exceptionErrors) > 0);
}
示例8: outputPerformance
/**
* @param Stopwatch $stopwatch
* @param OutputInterface $output
*/
protected function outputPerformance(Stopwatch $stopwatch, OutputInterface $output)
{
if (OutputInterface::VERBOSITY_DEBUG <= $this->verbosity) {
$output->writeln('Fixing time per file:');
foreach ($stopwatch->getSectionEvents('fixFile') as $file => $event) {
if ('__section__' === $file) {
continue;
}
$output->writeln(sprintf('[%.3f s] %s', $event->getDuration() / 1000, $file));
}
$output->writeln('');
}
$fixEvent = $stopwatch->getEvent('fixFiles');
$output->writeln(sprintf('Fixed all files in %.3f seconds, %.3f MB memory used', $fixEvent->getDuration() / 1000, $fixEvent->getMemory() / 1024 / 1024));
}
示例9: benchmark
/**
* @param string $testName
* @param callable $function
*
* @return int The duration (in milliseconds)
*/
protected static function benchmark($testName, $function)
{
if (!self::ENABLE_TESTS) {
return 0;
}
if (false !== ($pos = strpos($testName, '::'))) {
$testName = substr($testName, $pos + 2);
}
self::$stopwatch->start($testName);
for ($i = 0; $i < self::NUMBER_OF_ITERATION; $i++) {
call_user_func($function);
}
self::$stopwatch->stop($testName);
return self::$stopwatch->getEvent($testName)->getDuration();
}
示例10: testLogger
public function testLogger()
{
$stopWatch = new Stopwatch();
$logger = new MemcachedLogger(null, $stopWatch);
$logger->startMethod('testLogger');
$event = $stopWatch->getEvent('memcached');
$this->assertTrue($event->isStarted());
$logger->stopMethod();
$this->assertSame($stopWatch, $logger->getStopwatch());
$event = $stopWatch->getEvent('memcached');
$this->assertCount(1, $event->getPeriods());
if (method_exists($stopWatch, 'getSections')) {
$sections = $stopWatch->getSections();
$this->assertCount(1, $sections);
} else {
$this->markTestSkipped('Requires symfony/stopwatch 2.6 or higher.');
}
}
示例11: execute
protected function execute(InputInterface $input, OutputInterface $output)
{
$errorsManager = new ErrorsManager();
$stopwatch = new Stopwatch();
$this->fixer = new Fixer($this->getFinder($input->getArgument('path')), $errorsManager, $stopwatch);
$this->fixer->registerBuiltInFixers();
if (!$input->getOption('no-use-reorder')) {
$this->fixer->addFixer(new OrderedUseFixer());
}
$stopwatch->start('fixFiles');
$changed = $this->fixer->fix($input->getOption('dry-run'));
$stopwatch->stop('fixFiles');
$verbosity = $output->getVerbosity();
$i = 1;
foreach ($changed as $file => $fixResult) {
$output->write(sprintf('%4d) %s', $i++, $file));
if (OutputInterface::VERBOSITY_VERBOSE <= $verbosity) {
$output->write(sprintf(' (<comment>%s</comment>)', implode(', ', $fixResult)));
}
$output->writeln('');
}
if (OutputInterface::VERBOSITY_DEBUG <= $verbosity) {
$output->writeln('Fixing time per file:');
foreach ($stopwatch->getSectionEvents('fixFile') as $file => $event) {
if ('__section__' === $file) {
continue;
}
$output->writeln(sprintf('[%.3f s] %s', $event->getDuration() / 1000, $file));
}
$output->writeln('');
}
$fixEvent = $stopwatch->getEvent('fixFiles');
$output->writeln(sprintf('Fixed all files in %.3f seconds, %.3f MB memory used', $fixEvent->getDuration() / 1000, $fixEvent->getMemory() / 1024 / 1024));
if (!$errorsManager->isEmpty()) {
$output->writeLn('');
$output->writeLn('Files that were not fixed due to internal error:');
foreach ($errorsManager->getErrors() as $i => $error) {
$output->writeLn(sprintf('%4d) %s', $i + 1, $error['filepath']));
}
}
return empty($changed) ? 0 : 1;
}
示例12: execute
//.........这里部分代码省略.........
$output->write(sprintf('%4d) %s', $i++, $file));
if ($fixerDetailLine) {
$output->write(sprintf($fixerDetailLine, implode(', ', $fixResult['appliedFixers'])));
}
if ($isDiff) {
$output->writeln('');
$output->writeln('<comment> ---------- begin diff ----------</comment>');
if ($output->isDecorated()) {
$diff = implode(PHP_EOL, array_map(function ($string) {
$string = preg_replace('/^(\\+){3}/', '<info>+++</info>', $string);
$string = preg_replace('/^(\\+){1}/', '<info>+</info>', $string);
$string = preg_replace('/^(\\-){3}/', '<error>---</error>', $string);
$string = preg_replace('/^(\\-){1}/', '<error>-</error>', $string);
$string = str_repeat(' ', 6) . $string;
return $string;
}, explode(PHP_EOL, OutputFormatter::escape($fixResult['diff']))));
$output->writeln($diff);
} else {
$output->writeln($fixResult['diff'], OutputInterface::OUTPUT_RAW);
}
$output->writeln('<comment> ---------- end diff ----------</comment>');
}
$output->writeln('');
}
if (OutputInterface::VERBOSITY_DEBUG <= $verbosity) {
$output->writeln('Fixing time per file:');
foreach ($this->stopwatch->getSectionEvents('fixFile') as $file => $event) {
if ('__section__' === $file) {
continue;
}
$output->writeln(sprintf('[%.3f s] %s', $event->getDuration() / 1000, $file));
}
$output->writeln('');
}
$fixEvent = $this->stopwatch->getEvent('fixFiles');
$output->writeln(sprintf('%s all files in %.3f seconds, %.3f MB memory used', $input->getOption('dry-run') ? 'Checked' : 'Fixed', $fixEvent->getDuration() / 1000, $fixEvent->getMemory() / 1024 / 1024));
break;
case 'xml':
$dom = new \DOMDocument('1.0', 'UTF-8');
$filesXML = $dom->createElement('files');
$dom->appendChild($filesXML);
foreach ($changed as $file => $fixResult) {
$fileXML = $dom->createElement('file');
$fileXML->setAttribute('id', $i++);
$fileXML->setAttribute('name', $file);
$filesXML->appendChild($fileXML);
if (OutputInterface::VERBOSITY_VERBOSE <= $verbosity) {
$appliedFixersXML = $dom->createElement('applied_fixers');
$fileXML->appendChild($appliedFixersXML);
foreach ($fixResult['appliedFixers'] as $appliedFixer) {
$appliedFixerXML = $dom->createElement('applied_fixer');
$appliedFixerXML->setAttribute('name', $appliedFixer);
$appliedFixersXML->appendChild($appliedFixerXML);
}
}
if ($isDiff) {
$diffXML = $dom->createElement('diff');
$diffXML->appendChild($dom->createCDATASection($fixResult['diff']));
$fileXML->appendChild($diffXML);
}
}
$dom->formatOutput = true;
$output->write($dom->saveXML(), false, OutputInterface::OUTPUT_RAW);
break;
case 'json':
$jFiles = array();
foreach ($changed as $file => $fixResult) {
$jfile = array('name' => $file);
if (OutputInterface::VERBOSITY_VERBOSE <= $verbosity) {
$jfile['appliedFixers'] = $fixResult['appliedFixers'];
}
if ($isDiff) {
$jfile['diff'] = $fixResult['diff'];
}
$jFiles[] = $jfile;
}
$fixEvent = $this->stopwatch->getEvent('fixFiles');
$json = array('files' => $jFiles, 'memory' => round($fixEvent->getMemory() / 1024 / 1024, 3), 'time' => array('total' => round($fixEvent->getDuration() / 1000, 3)));
if (OutputInterface::VERBOSITY_DEBUG <= $verbosity) {
$jFileTime = array();
foreach ($this->stopwatch->getSectionEvents('fixFile') as $file => $event) {
if ('__section__' === $file) {
continue;
}
$jFileTime[$file] = round($event->getDuration() / 1000, 3);
}
$json['time']['files'] = $jFileTime;
}
$output->write(json_encode($json), false, OutputInterface::OUTPUT_RAW);
break;
}
if (null !== $stdErr && !$this->errorsManager->isEmpty()) {
$stdErr->writeln('');
$stdErr->writeln('Files that were not fixed due to internal error:');
foreach ($this->errorsManager->getErrors() as $i => $error) {
$stdErr->writeln(sprintf('%4d) %s', $i + 1, $error['filepath']));
}
}
return 0 === count($changed) ? 0 : 1;
}
示例13: execute
//.........这里部分代码省略.........
if ($status['symbol'] && $status['description']) {
$legend[] = $status['symbol'] . '-' . $status['description'];
}
}
$output->writeln('Legend: ' . implode(', ', array_unique($legend)));
}
$verbosity = $output->getVerbosity();
$i = 1;
switch ($input->getOption('format')) {
case 'txt':
foreach ($changed as $file => $fixResult) {
$output->write(sprintf('%4d) %s', $i++, $file));
if (OutputInterface::VERBOSITY_VERBOSE <= $verbosity) {
$output->write(sprintf(' (<comment>%s</comment>)', implode(', ', $fixResult['appliedFixers'])));
}
if ($input->getOption('diff')) {
$output->writeln('');
$output->writeln('<comment> ---------- begin diff ----------</comment>');
$output->writeln($fixResult['diff']);
$output->writeln('<comment> ---------- end diff ----------</comment>');
}
$output->writeln('');
}
if (OutputInterface::VERBOSITY_DEBUG <= $verbosity) {
$output->writeln('Fixing time per file:');
foreach ($this->stopwatch->getSectionEvents('fixFile') as $file => $event) {
if ('__section__' === $file) {
continue;
}
$output->writeln(sprintf('[%.3f s] %s', $event->getDuration() / 1000, $file));
}
$output->writeln('');
}
$fixEvent = $this->stopwatch->getEvent('fixFiles');
$output->writeln(sprintf('Fixed all files in %.3f seconds, %.3f MB memory used', $fixEvent->getDuration() / 1000, $fixEvent->getMemory() / 1024 / 1024));
break;
case 'xml':
$dom = new \DOMDocument('1.0', 'UTF-8');
$filesXML = $dom->createElement('files');
$dom->appendChild($filesXML);
foreach ($changed as $file => $fixResult) {
$fileXML = $dom->createElement('file');
$fileXML->setAttribute('id', $i++);
$fileXML->setAttribute('name', $file);
$filesXML->appendChild($fileXML);
if (OutputInterface::VERBOSITY_VERBOSE <= $verbosity) {
$appliedFixersXML = $dom->createElement('applied_fixers');
$fileXML->appendChild($appliedFixersXML);
foreach ($fixResult['appliedFixers'] as $appliedFixer) {
$appliedFixerXML = $dom->createElement('applied_fixer');
$appliedFixerXML->setAttribute('name', $appliedFixer);
$appliedFixersXML->appendChild($appliedFixerXML);
}
}
if ($input->getOption('diff')) {
$diffXML = $dom->createElement('diff');
$diffXML->appendChild($dom->createCDATASection($fixResult['diff']));
$fileXML->appendChild($diffXML);
}
}
$fixEvent = $this->stopwatch->getEvent('fixFiles');
$timeXML = $dom->createElement('time');
$memoryXML = $dom->createElement('memory');
$dom->appendChild($timeXML);
$dom->appendChild($memoryXML);
$memoryXML->setAttribute('value', round($fixEvent->getMemory() / 1024 / 1024, 3));
示例14: execute
/**
* @see Command
*/
protected function execute(InputInterface $input, OutputInterface $output)
{
$verbosity = $output->getVerbosity();
$resolver = new ConfigurationResolver();
$resolver->setCwd(getcwd())->setDefaultConfig($this->defaultConfig)->setFixer($this->fixer)->setOptions(array('allow-risky' => $input->getOption('allow-risky'), 'config' => $input->getOption('config'), 'config-file' => $input->getOption('config-file'), 'dry-run' => $input->getOption('dry-run'), 'rules' => $input->getOption('rules'), 'path' => $input->getArgument('path'), 'progress' => OutputInterface::VERBOSITY_VERBOSE <= $verbosity && 'txt' === $input->getOption('format'), 'using-cache' => $input->getOption('using-cache'), 'cache-file' => $input->getOption('cache-file')))->resolve();
$config = $resolver->getConfig();
$configFile = $resolver->getConfigFile();
if ($configFile && 'txt' === $input->getOption('format')) {
$output->writeln(sprintf('Loaded config from "%s"', $configFile));
}
if ($config->usingLinter()) {
try {
$this->fixer->setLinter(new Linter($config->getPhpExecutable()));
} catch (UnavailableLinterException $e) {
if ($configFile && 'txt' === $input->getOption('format')) {
$output->writeln('Unable to use linter, can not find PHP executable');
}
}
}
$showProgress = $resolver->getProgress();
if ($showProgress) {
$this->fixer->setEventDispatcher($this->eventDispatcher);
$progressOutput = new ProcessOutput($this->eventDispatcher);
}
$this->stopwatch->start('fixFiles');
$changed = $this->fixer->fix($config, $resolver->isDryRun(), $input->getOption('diff'));
$this->stopwatch->stop('fixFiles');
if ($showProgress) {
$progressOutput->printLegend();
$this->fixer->setEventDispatcher(null);
}
$translator = new Translator('en');
$translator->addResource('yml', __DIR__ . '/../../Resources/translations/messages.en.yml', 'en');
$translator->addLoader('yml', new YamlFileLoader());
switch ($input->getOption('format')) {
case 'txt':
$helper = new FixResultTxtOutputHelper($output, $translator, $verbosity, $input->getOption('diff'));
$helper->write($changed, $this->stopwatch);
break;
case 'xml':
$i = 1;
$dom = new \DOMDocument('1.0', 'UTF-8');
// new nodes should be added to this or existing children
$root = $dom->createElement('report');
$dom->appendChild($root);
$filesXML = $dom->createElement('files');
$root->appendChild($filesXML);
foreach ($changed as $file => $fixResult) {
$fileXML = $dom->createElement('file');
$fileXML->setAttribute('id', $i++);
$fileXML->setAttribute('name', $file);
$filesXML->appendChild($fileXML);
if (OutputInterface::VERBOSITY_VERBOSE <= $verbosity) {
$appliedFixersXML = $dom->createElement('applied_fixers');
$fileXML->appendChild($appliedFixersXML);
foreach ($fixResult['appliedFixers'] as $appliedFixer) {
$appliedFixerXML = $dom->createElement('applied_fixer');
$appliedFixerXML->setAttribute('name', $appliedFixer);
$appliedFixersXML->appendChild($appliedFixerXML);
}
}
if ($input->getOption('diff')) {
$diffXML = $dom->createElement('diff');
$diffXML->appendChild($dom->createCDATASection($fixResult['diff']));
$fileXML->appendChild($diffXML);
}
}
$fixEvent = $this->stopwatch->getEvent('fixFiles');
$timeXML = $dom->createElement('time');
$memoryXML = $dom->createElement('memory');
$root->appendChild($timeXML);
$root->appendChild($memoryXML);
$memoryXML->setAttribute('value', round($fixEvent->getMemory() / 1024 / 1024, 3));
$memoryXML->setAttribute('unit', 'MB');
$timeXML->setAttribute('unit', 's');
$timeTotalXML = $dom->createElement('total');
$timeTotalXML->setAttribute('value', round($fixEvent->getDuration() / 1000, 3));
$timeXML->appendChild($timeTotalXML);
if (OutputInterface::VERBOSITY_DEBUG <= $verbosity) {
$timeFilesXML = $dom->createElement('files');
$timeXML->appendChild($timeFilesXML);
$eventCounter = 1;
foreach ($this->stopwatch->getSectionEvents('fixFile') as $file => $event) {
if ('__section__' === $file) {
continue;
}
$timeFileXML = $dom->createElement('file');
$timeFilesXML->appendChild($timeFileXML);
$timeFileXML->setAttribute('id', $eventCounter++);
$timeFileXML->setAttribute('name', $file);
$timeFileXML->setAttribute('value', round($event->getDuration() / 1000, 3));
}
}
$dom->formatOutput = true;
$output->write($dom->saveXML());
break;
case 'json':
//.........这里部分代码省略.........
示例15: testUnknownEvent
/**
* @expectedException \LogicException
*/
public function testUnknownEvent()
{
$stopwatch = new Stopwatch();
$stopwatch->getEvent('foo');
}