PHP_CodeSniffer_CLI::process PHP Method

process() public method

Runs PHP_CodeSniffer over files and directories.
See also: getCommandLineValues()
public process ( array $values = [] ) : integer
$values array An array of values determined from CLI args.
return integer The number of error and warning messages shown.
    public function process($values = array())
    {
        if (empty($values) === true) {
            $values = $this->getCommandLineValues();
        } else {
            $values = array_merge($this->getDefaults(), $values);
            $this->values = $values;
        }
        if ($values['generator'] !== '') {
            $phpcs = new PHP_CodeSniffer($values['verbosity']);
            if ($values['standard'] === null) {
                $values['standard'] = $this->validateStandard(null);
            }
            foreach ($values['standard'] as $standard) {
                $phpcs->generateDocs($standard, $values['sniffs'], $values['generator']);
            }
            exit(0);
        }
        // If no standard is supplied, get the default.
        $values['standard'] = $this->validateStandard($values['standard']);
        foreach ($values['standard'] as $standard) {
            if (PHP_CodeSniffer::isInstalledStandard($standard) === false) {
                // They didn't select a valid coding standard, so help them
                // out by letting them know which standards are installed.
                echo 'ERROR: the "' . $standard . '" coding standard is not installed. ';
                $this->printInstalledStandards();
                exit(2);
            }
        }
        if ($values['explain'] === true) {
            foreach ($values['standard'] as $standard) {
                $this->explainStandard($standard);
            }
            exit(0);
        }
        $phpcs = new PHP_CodeSniffer($values['verbosity'], null, null, null);
        $phpcs->setCli($this);
        $phpcs->initStandard($values['standard'], $values['sniffs'], $values['exclude']);
        $values = $this->values;
        $phpcs->setTabWidth($values['tabWidth']);
        $phpcs->setEncoding($values['encoding']);
        $phpcs->setInteractive($values['interactive']);
        // Set file extensions if they were specified. Otherwise,
        // let PHP_CodeSniffer decide on the defaults.
        if (empty($values['extensions']) === false) {
            $phpcs->setAllowedFileExtensions($values['extensions']);
        }
        // Set ignore patterns if they were specified.
        if (empty($values['ignored']) === false) {
            $ignorePatterns = array_merge($phpcs->getIgnorePatterns(), $values['ignored']);
            $phpcs->setIgnorePatterns($ignorePatterns);
        }
        // Set some convenience member vars.
        if ($values['errorSeverity'] === null) {
            $this->errorSeverity = PHPCS_DEFAULT_ERROR_SEV;
        } else {
            $this->errorSeverity = $values['errorSeverity'];
        }
        if ($values['warningSeverity'] === null) {
            $this->warningSeverity = PHPCS_DEFAULT_WARN_SEV;
        } else {
            $this->warningSeverity = $values['warningSeverity'];
        }
        if (empty($values['reports']) === true) {
            $values['reports']['full'] = $values['reportFile'];
            $this->values['reports'] = $values['reports'];
        }
        // Include bootstrap files.
        foreach ($values['bootstrap'] as $bootstrap) {
            include $bootstrap;
        }
        $phpcs->processFiles($values['files'], $values['local']);
        if (empty($values['files']) === true || $values['stdin'] !== null) {
            $fileContents = $values['stdin'];
            if ($fileContents === null) {
                // Check if they are passing in the file contents.
                $handle = fopen('php://stdin', 'r');
                stream_set_blocking($handle, true);
                $fileContents = stream_get_contents($handle);
                fclose($handle);
            }
            if ($fileContents === '') {
                // No files and no content passed in.
                echo 'ERROR: You must supply at least one file or directory to process.' . PHP_EOL . PHP_EOL;
                $this->printUsage();
                exit(2);
            } else {
                $phpcs->processFile('STDIN', $fileContents);
            }
        }
        // Interactive runs don't require a final report and it doesn't really
        // matter what the retun value is because we know it isn't being read
        // by a script.
        if ($values['interactive'] === true) {
            return 0;
        }
        return $this->printErrorReport($phpcs, $values['reports'], $values['showSources'], $values['reportFile'], $values['reportWidth']);
    }

Usage Example

Example #1
0
 /**
  * @return Result
  */
 public function run()
 {
     $this->startTimer();
     if (!isset($this->standard)) {
         $this->standard[] = $this->getJoomlaCodingSniffers();
     }
     $this->printTaskInfo('Initialising CodeSniffer Checks...');
     // Build the options for the sniffer
     $options = array('files' => $this->files, 'standard' => $this->standard, 'ignored' => $this->ignored, 'showProgress' => true, 'verbosity' => false, 'ignore_errors_on_exit' => $this->ignore_errors_on_exit);
     // Instantiate the sniffer
     $phpcs = new \PHP_CodeSniffer_CLI();
     // Ensure PHPCS can run, will exit if requirements aren't met
     $phpcs->checkRequirements();
     // Run the sniffs
     $numErrors = $phpcs->process($options);
     $this->stopTimer();
     $message = 'There were no code style issues detected.';
     $exitCode = 0;
     if ($numErrors) {
         $message = "There were {$numErrors} issues detected.";
         $exitCode = 1;
     }
     if ($this->ignore_errors_on_exit) {
         $exitCode = 0;
     }
     return new Result($this, $exitCode, $message, ['time' => $this->getExecutionTime()]);
 }
All Usage Examples Of PHP_CodeSniffer_CLI::process