/** * Prints the error report. * * @param PHP_CodeSniffer $phpcs The PHP_CodeSniffer object containing * the errors. * @param string $report The type of report to print. * @param bool $showWarnings TRUE if warnings should also be printed. * @param bool $showSources TRUE if the report should show error sources * (not used by all reports). * @param string $reportFile A file to log the report out to. * * @return int The number of error and warning messages shown. */ public function printErrorReport($phpcs, $report, $showWarnings, $showSources, $reportFile = '') { if ($reportFile !== '') { ob_start(); } switch ($report) { case 'xml': $numErrors = $phpcs->printXMLErrorReport($showWarnings); break; case 'checkstyle': $numErrors = $phpcs->printCheckstyleErrorReport($showWarnings); break; case 'csv': $numErrors = $phpcs->printCSVErrorReport($showWarnings); break; case 'emacs': $numErrors = $phpcs->printEmacsErrorReport($showWarnings); break; case 'summary': $numErrors = $phpcs->printErrorReportSummary($showWarnings, $showSources); break; case 'source': $numErrors = $phpcs->printSourceReport($showWarnings, $showSources); break; default: $numErrors = $phpcs->printErrorReport($showWarnings, $showSources); break; } if ($reportFile !== '') { $report = ob_get_contents(); ob_end_flush(); $report = trim($report); file_put_contents($reportFile, "{$report}\n"); } return $numErrors; }
/** * @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(); }
/** * Prints the error report. * * @param PHP_CodeSniffer $phpcs The PHP_CodeSniffer object containing * the errors. * @param string $report The type of report to print. * @param bool $showWarnings TRUE if warnings should also be printed. * * @return int The number of error and warning messages shown. */ public function printErrorReport($phpcs, $report, $showWarnings) { switch ($report) { case 'xml': $numErrors = $phpcs->printXMLErrorReport($showWarnings); break; case 'checkstyle': $numErrors = $phpcs->printCheckstyleErrorReport($showWarnings); break; case 'csv': $numErrors = $phpcs->printCSVErrorReport($showWarnings); break; case 'summary': $numErrors = $phpcs->printErrorReportSummary($showWarnings); break; default: $numErrors = $phpcs->printErrorReport($showWarnings); break; } return $numErrors; }
/** * Check code by CodeSniffer. * @return boolean */ public function checkcode() { // if (!$this->ProjectDirectory->loadSetting($this->ProjectInfo, 0)) { return; } $oldcwd = getcwd(); $verbose = false; $files = $this->ProjectDirectory->getSrcPath(); $standard = 'PEAR'; $report = ''; $showWarnings = false; $handler = PEAR_PackageProjector::singleton()->getMessageHandler(); /* * execute code sniffer */ $handler->buildMessage(5, "*** Checks source in CodeSniffer. ***", true); // ob_start(); $phpcs = new PHP_CodeSniffer($verbose); $phpcs->process($files, $standard); if ($report === 'summary') { $phpcs->printErrorReportSummary($showWarnings); } else { $phpcs->printErrorReport($showWarnings); } $buff = ob_get_contents(); ob_end_clean(); $handler->buildMessage(5, $buff, true); chdir($oldcwd); $handler->buildMessage(5, "*** Finished checked source in CodeSniffer. ***", true); return 0 == strlen($buff); }