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

Breadcrumb

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

function UselessParameterDefaultValueSniff::process

* @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint *

Parameters

int $functionPointer:

Overrides Sniff::process

File

vendor/slevomat/coding-standard/SlevomatCodingStandard/Sniffs/Functions/UselessParameterDefaultValueSniff.php, line 31

Class

UselessParameterDefaultValueSniff

Namespace

SlevomatCodingStandard\Sniffs\Functions

Code

public function process(File $phpcsFile, $functionPointer) : void {
    $parameters = $phpcsFile->getMethodParameters($functionPointer);
    $parametersCount = count($parameters);
    if ($parametersCount === 0) {
        return;
    }
    for ($i = 0; $i < $parametersCount; $i++) {
        $parameter = $parameters[$i];
        if (!array_key_exists('default', $parameter)) {
            continue;
        }
        $defaultValue = strtolower($parameter['default']);
        if ($defaultValue === 'null' && !$parameter['nullable_type']) {
            continue;
        }
        for ($j = $i + 1; $j < $parametersCount; $j++) {
            $nextParameter = $parameters[$j];
            if (array_key_exists('default', $nextParameter)) {
                continue;
            }
            if ($nextParameter['variable_length']) {
                break;
            }
            $fix = $phpcsFile->addFixableError(sprintf('Useless default value of parameter %s.', $parameter['name']), $parameter['token'], self::CODE_USELESS_PARAMETER_DEFAULT_VALUE);
            if (!$fix) {
                continue;
            }
            $commaPointer = TokenHelper::findPrevious($phpcsFile, T_COMMA, $parameters[$i + 1]['token'] - 1);
            
            /** @var int $parameterPointer */
            $parameterPointer = $parameter['token'];
            $phpcsFile->fixer
                ->beginChangeset();
            for ($k = $parameterPointer + 1; $k < $commaPointer; $k++) {
                $phpcsFile->fixer
                    ->replaceToken($k, '');
            }
            $phpcsFile->fixer
                ->endChangeset();
            break;
        }
    }
}
RSS feed
Powered by Drupal