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

Breadcrumb

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

class DuplicateAssignmentToVariableSniff

Hierarchy

  • class \SlevomatCodingStandard\Sniffs\Variables\DuplicateAssignmentToVariableSniff implements \PHP_CodeSniffer\Sniffs\Sniff

Expanded class hierarchy of DuplicateAssignmentToVariableSniff

File

vendor/slevomat/coding-standard/SlevomatCodingStandard/Sniffs/Variables/DuplicateAssignmentToVariableSniff.php, line 15

Namespace

SlevomatCodingStandard\Sniffs\Variables
View source
class DuplicateAssignmentToVariableSniff implements Sniff {
    public const CODE_DUPLICATE_ASSIGNMENT = 'DuplicateAssignment';
    
    /**
     * @return array<int, (int|string)>
     */
    public function register() : array {
        return [
            T_EQUAL,
        ];
    }
    
    /**
     * @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
     * @param int $assignmentPointer
     */
    public function process(File $phpcsFile, $assignmentPointer) : void {
        $tokens = $phpcsFile->getTokens();
        $variablePointer = TokenHelper::findPreviousEffective($phpcsFile, $assignmentPointer - 1);
        if ($tokens[$variablePointer]['code'] !== T_VARIABLE) {
            return;
        }
        $pointerBeforeVariable = TokenHelper::findPreviousEffective($phpcsFile, $variablePointer - 1);
        if (in_array($tokens[$pointerBeforeVariable]['code'], [
            T_OBJECT_OPERATOR,
            T_DOUBLE_COLON,
        ], true)) {
            return;
        }
        
        /** @var int $secondVariablePointer */
        $secondVariablePointer = TokenHelper::findNextEffective($phpcsFile, $assignmentPointer + 1);
        if ($tokens[$secondVariablePointer]['code'] !== T_VARIABLE) {
            return;
        }
        if ($tokens[$variablePointer]['content'] !== $tokens[$secondVariablePointer]['content']) {
            return;
        }
        $pointerAfterSecondVariable = TokenHelper::findNextEffective($phpcsFile, $secondVariablePointer + 1);
        if ($tokens[$pointerAfterSecondVariable]['code'] !== T_EQUAL) {
            return;
        }
        $phpcsFile->addError(sprintf('Duplicate assignment to variable %s.', $tokens[$secondVariablePointer]['content']), $secondVariablePointer, self::CODE_DUPLICATE_ASSIGNMENT);
    }

}

Members

Title Sort descending Modifiers Object type Summary Overriden Title
DuplicateAssignmentToVariableSniff::CODE_DUPLICATE_ASSIGNMENT public constant
DuplicateAssignmentToVariableSniff::process public function * @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
*
Overrides Sniff::process
DuplicateAssignmentToVariableSniff::register public function * Overrides Sniff::register
RSS feed
Powered by Drupal