Beispiel #1
0
 /**
  * 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();
 }
Beispiel #3
0
 /**
  * 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;
 }
Beispiel #4
0
 /**
  * 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);
 }