/** * @see sfTask */ protected function execute($arguments = array(), $options = array()) { // Call realpath() before constructing PHP_CodeSniffer because the // constructor changes our current working directory. An argument handler // which sanitized user input would be nice: // http://trac.symfony-project.com/ticket/3486 $arguments['path'] = realpath($arguments['path']); $phpcs = new PHP_CodeSniffer(); $finder = new SvnFinder(); foreach ($finder->in($arguments['path']) as $path) { $config = $this->getConfigForPath($path); if (!isset($config['code']['standard']) && !isset($config['preamble']) && !isset($config['props'])) { continue; } // HACK: It is not easy to modify a file's token listeners after it is // constructed, so construct a populated file if the code standard is // defined, and an empty file otherwise if (isset($config['code']['standard'])) { // HACK: PHP_CodeSniffer_File now expects an array of // PHP_CodeSniffer_Sniff instances, which // PHP_CodeSniffer::getTokenListeners() does not return $processPhpcs = new PHP_CodeSniffer(); $processPhpcs->process(array(), $config['code']['standard']); $listeners = $processPhpcs->getTokenSniffs(); $phpcsFile = new PHP_CodeSniffer_File($path, $listeners['file'], $phpcs->allowedFileExtensions); $phpcsFile->start(); } else { $phpcsFile = new PHP_CodeSniffer_File($path, array(), $phpcs->allowedFileExtensions); } if (isset($config['preamble'])) { } if (isset($config['props'])) { $props = $this->getPropsFromPath($path); foreach ($props + $config['props'] as $key => $value) { if (isset($props[$key]) && !isset($config['props'][$key])) { $phpcsFile->addError('SVN property "' . $key . '" = "' . $props[$key] . '" found but not expected', 0); continue; } if (!isset($props[$key]) && isset($config['props'][$key])) { $phpcsFile->addError('SVN property "' . $key . '" = "' . $config['props'][$key] . '" expected but not found', 0); continue; } if ($props[$key] != $config['props'][$key]) { $phpcsFile->addError('SVN property "' . $key . '" = "' . $props[$key] . '" expected to match "' . $config['props'][$key] . '"', 0); } } } $phpcs->addFile($phpcsFile); } $phpcs->printErrorReport(); }