Server : nginx/1.18.0 System : Linux localhost 6.14.3-x86_64-linode168 #1 SMP PREEMPT_DYNAMIC Mon Apr 21 19:47:55 EDT 2025 x86_64 User : www-data ( 33) PHP Version : 8.0.16 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /var/www/ecommerce/vendor/friendsofphp/php-cs-fixer/src/Linter/ |
<?php
declare(strict_types=1);
/*
* This file is part of PHP CS Fixer.
*
* (c) Fabien Potencier <fabien@symfony.com>
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace PhpCsFixer\Linter;
use Symfony\Component\Process\Process;
/**
* @author Dariusz Rumiński <dariusz.ruminski@gmail.com>
*
* @internal
*/
final class ProcessLintingResult implements LintingResultInterface
{
/**
* @var bool
*/
private $isSuccessful;
/**
* @var Process
*/
private $process;
/**
* @var null|string
*/
private $path;
public function __construct(Process $process, ?string $path = null)
{
$this->process = $process;
$this->path = $path;
}
/**
* {@inheritdoc}
*/
public function check(): void
{
if (!$this->isSuccessful()) {
// on some systems stderr is used, but on others, it's not
throw new LintingException($this->getProcessErrorMessage(), $this->process->getExitCode());
}
}
private function getProcessErrorMessage(): string
{
$output = strtok(ltrim($this->process->getErrorOutput() ?: $this->process->getOutput()), "\n");
if (false === $output) {
return 'Fatal error: Unable to lint file.';
}
if (null !== $this->path) {
$needle = sprintf('in %s ', $this->path);
$pos = strrpos($output, $needle);
if (false !== $pos) {
$output = sprintf('%s%s', substr($output, 0, $pos), substr($output, $pos + \strlen($needle)));
}
}
$prefix = substr($output, 0, 18);
if ('PHP Parse error: ' === $prefix) {
return sprintf('Parse error: %s.', substr($output, 18));
}
if ('PHP Fatal error: ' === $prefix) {
return sprintf('Fatal error: %s.', substr($output, 18));
}
return sprintf('%s.', $output);
}
private function isSuccessful(): bool
{
if (null === $this->isSuccessful) {
$this->process->wait();
$this->isSuccessful = $this->process->isSuccessful();
}
return $this->isSuccessful;
}
}