Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. Runner.php

function Runner::runPHPCS

Run the PHPCS script.

Return value

int

File

vendor/squizlabs/php_codesniffer/src/Runner.php, line 58

Class

Runner

Namespace

PHP_CodeSniffer

Code

public function runPHPCS() {
    $this->registerOutOfMemoryShutdownMessage('phpcs');
    try {
        Timing::startTiming();
        Runner::checkRequirements();
        if (defined('PHP_CODESNIFFER_CBF') === false) {
            define('PHP_CODESNIFFER_CBF', false);
        }
        // Creating the Config object populates it with all required settings
        // based on the CLI arguments provided to the script and any config
        // values the user has set.
        $this->config = new Config();
        // Init the run and load the rulesets to set additional config vars.
        $this->init();
        // Print a list of sniffs in each of the supplied standards.
        // We fudge the config here so that each standard is explained in isolation.
        if ($this->config->explain === true) {
            $standards = $this->config->standards;
            foreach ($standards as $standard) {
                $this->config->standards = [
                    $standard,
                ];
                $ruleset = new Ruleset($this->config);
                $ruleset->explain();
            }
            return 0;
        }
        // Generate documentation for each of the supplied standards.
        if ($this->config->generator !== null) {
            $standards = $this->config->standards;
            foreach ($standards as $standard) {
                $this->config->standards = [
                    $standard,
                ];
                $ruleset = new Ruleset($this->config);
                $class = 'PHP_CodeSniffer\\Generators\\' . $this->config->generator;
                $generator = new $class($ruleset);
                $generator->generate();
            }
            return 0;
        }
        // Other report formats don't really make sense in interactive mode
        // so we hard-code the full report here and when outputting.
        // We also ensure parallel processing is off because we need to do one file at a time.
        if ($this->config->interactive === true) {
            $this->config->reports = [
                'full' => null,
            ];
            $this->config->parallel = 1;
            $this->config->showProgress = false;
        }
        // Disable caching if we are processing STDIN as we can't be 100%
        // sure where the file came from or if it will change in the future.
        if ($this->config->stdin === true) {
            $this->config->cache = false;
        }
        $numErrors = $this->run();
        // Print all the reports for this run.
        $toScreen = $this->reporter
            ->printReports();
        // Only print timer output if no reports were
        // printed to the screen so we don't put additional output
        // in something like an XML report. If we are printing to screen,
        // the report types would have already worked out who should
        // print the timer info.
        if ($this->config->interactive === false && ($toScreen === false || $this->reporter->totalErrors + $this->reporter->totalWarnings === 0 && $this->config->showProgress === true)) {
            Timing::printRunTime();
        }
    } catch (DeepExitException $e) {
        echo $e->getMessage();
        return $e->getCode();
    }
    
    //end try
    if ($numErrors === 0) {
        // No errors found.
        return 0;
    }
    else {
        if ($this->reporter->totalFixable === 0) {
            // Errors found, but none of them can be fixed by PHPCBF.
            return 1;
        }
        else {
            // Errors found, and some can be fixed by PHPCBF.
            return 2;
        }
    }
}
RSS feed
Powered by Drupal