← Back
Editing: LintProcess.php
<?php namespace JakubOnderka\PhpParallelLint\Process; use JakubOnderka\PhpParallelLint\RunTimeException; class LintProcess extends PhpProcess { const FATAL_ERROR = 'Fatal error'; const PARSE_ERROR = 'Parse error'; const DEPRECATED_ERROR = 'Deprecated:'; /** * @var bool */ private $showDeprecatedErrors; /** * @param PhpExecutable $phpExecutable * @param string $fileToCheck Path to file to check * @param bool $aspTags * @param bool $shortTag * @param bool $deprecated * @throws RunTimeException */ public function __construct(PhpExecutable $phpExecutable, $fileToCheck, $aspTags = false, $shortTag = false, $deprecated = false) { if (empty($fileToCheck)) { throw new \InvalidArgumentException("File to check must be set."); } $parameters = array( '-d asp_tags=' . ($aspTags ? 'On' : 'Off'), '-d short_open_tag=' . ($shortTag ? 'On' : 'Off'), '-d error_reporting=E_ALL', '-n', '-l', $fileToCheck, ); $this->showDeprecatedErrors = $deprecated; parent::__construct($phpExecutable, $parameters); } /** * @return bool * @throws */ public function containsError() { return $this->containsParserError($this->getOutput()) || $this->containsFatalError($this->getOutput()) || $this->containsDeprecatedError($this->getOutput()); } /** * @return string * @throws RunTimeException */ public function getSyntaxError() { if ($this->containsError()) { // Look for fatal errors first foreach (explode("\n", $this->getOutput()) as $line) { if ($this->containsFatalError($line)) { return $line; } } // Look for parser errors second foreach (explode("\n", $this->getOutput()) as $line) { if ($this->containsParserError($line)) { return $line; } } // Look for deprecated errors third foreach (explode("\n", $this->getOutput()) as $line) { if ($this->containsDeprecatedError($line)) { return $line; } } throw new RunTimeException("The output '{$this->getOutput()}' does not contain Parse or Syntax errors"); } return false; } /** * @return bool * @throws RunTimeException */ public function isFail() { return defined('PHP_WINDOWS_VERSION_MAJOR') ? $this->getStatusCode() === 1 : parent::isFail(); } /** * @return bool * @throws RunTimeException */ public function isSuccess() { return $this->getStatusCode() === 0; } /** * @param string $string * @return bool */ private function containsParserError($string) { return strpos($string, self::PARSE_ERROR) !== false; } /** * @param string $string * @return bool */ private function containsFatalError($string) { return strpos($string, self::FATAL_ERROR) !== false; } /** * @param string $string * @return bool */ private function containsDeprecatedError($string) { if ($this->showDeprecatedErrors === false) { return false; } return strpos($string, self::DEPRECATED_ERROR) !== false; } }
Save File
Cancel