Skip to content

Commit e470c10

Browse files
committed
UselessVariableSniff: Disable fixer for some codes
1 parent bd0ee02 commit e470c10

File tree

4 files changed

+37
-2
lines changed

4 files changed

+37
-2
lines changed

SlevomatCodingStandard/Sniffs/Variables/UselessVariableSniff.php

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
use const T_MINUS_EQUAL;
1414
use const T_MOD_EQUAL;
1515
use const T_MUL_EQUAL;
16+
use const T_OPEN_CURLY_BRACKET;
1617
use const T_OR_EQUAL;
1718
use const T_PLUS_EQUAL;
1819
use const T_POW_EQUAL;
@@ -93,7 +94,19 @@ public function process(File $phpcsFile, $returnPointer): void
9394
return;
9495
}
9596

96-
$fix = $phpcsFile->addFixableError(sprintf('Useless variable %s.', $variableName), $previousVariablePointer, self::CODE_USELESS_VARIABLE);
97+
$errorParameters = [
98+
sprintf('Useless variable %s.', $variableName),
99+
$previousVariablePointer,
100+
self::CODE_USELESS_VARIABLE,
101+
];
102+
103+
$pointerBeforePreviousVariable = TokenHelper::findPreviousEffective($phpcsFile, $previousVariablePointer - 1);
104+
if (!in_array($tokens[$pointerBeforePreviousVariable]['code'], [T_SEMICOLON, T_OPEN_CURLY_BRACKET], true)) {
105+
$phpcsFile->addError(...$errorParameters);
106+
return;
107+
}
108+
109+
$fix = $phpcsFile->addFixableError(...$errorParameters);
97110

98111
if (!$fix) {
99112
return;

tests/Sniffs/Variables/UselessVariableSniffTest.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public function testErrors(): void
1717
{
1818
$report = self::checkFile(__DIR__ . '/data/uselessVariableErrors.php');
1919

20-
self::assertSame(15, $report->getErrorCount());
20+
self::assertSame(17, $report->getErrorCount());
2121

2222
self::assertSniffError($report, 4, UselessVariableSniff::CODE_USELESS_VARIABLE, 'Useless variable $a.');
2323
self::assertSniffError($report, 9, UselessVariableSniff::CODE_USELESS_VARIABLE, 'Useless variable $b.');
@@ -34,6 +34,8 @@ public function testErrors(): void
3434
self::assertSniffError($report, 64, UselessVariableSniff::CODE_USELESS_VARIABLE, 'Useless variable $m.');
3535
self::assertSniffError($report, 69, UselessVariableSniff::CODE_USELESS_VARIABLE, 'Useless variable $n.');
3636
self::assertSniffError($report, 78, UselessVariableSniff::CODE_USELESS_VARIABLE, 'Useless variable $o.');
37+
self::assertSniffError($report, 84, UselessVariableSniff::CODE_USELESS_VARIABLE, 'Useless variable $p.');
38+
self::assertSniffError($report, 89, UselessVariableSniff::CODE_USELESS_VARIABLE, 'Useless variable $q.');
3739

3840
self::assertAllFixedInFile($report);
3941
}

tests/Sniffs/Variables/data/uselessVariableErrors.fixed.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,3 +62,13 @@ function moreVariableOneWithoutAssigment() {
6262
$o++;
6363
return 10;
6464
}
65+
66+
function assigmentAsFunctionParametr() {
67+
doSomething($p = 0);
68+
return $p;
69+
}
70+
71+
function assigmentAfterAssignment() {
72+
doSomething($qq = $q = 0);
73+
return $q;
74+
}

tests/Sniffs/Variables/data/uselessVariableErrors.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,3 +79,13 @@ function moreVariableOneWithoutAssigment() {
7979

8080
return $o;
8181
}
82+
83+
function assigmentAsFunctionParametr() {
84+
doSomething($p = 0);
85+
return $p;
86+
}
87+
88+
function assigmentAfterAssignment() {
89+
doSomething($qq = $q = 0);
90+
return $q;
91+
}

0 commit comments

Comments
 (0)