Skip to content

Commit b2b5acc

Browse files
authored
Merge pull request #1 from KelvinJardin/StrictTypeFix
Added auto-fix for missing strict_types declaration
2 parents a08ddd4 + 3584937 commit b2b5acc

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

DatacodeStandard/Sniffs/PHP/RequireStrictTypesSniff.php

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,20 @@ public function process(File $phpcsFile, $stackPtr) {
2727
$startPos = $phpcsFile->findNext([ T_DECLARE ], $stackPtr + 1);
2828

2929
if ($startPos === false) {
30-
$phpcsFile->addError('declare statement not found in file', $stackPtr, 'NoDeclare');
30+
$phpcsFile->addFixableError('declare statement not found in file', $stackPtr, 'NoDeclare');
31+
$phpcsFile->fixer->addContent($stackPtr, 'declare(strict_types=1);');
3132
} else {
3233
$endPos = $tokens[$startPos]['parenthesis_closer'];
3334
$text = $phpcsFile->getTokensAsString($startPos, ($endPos - $startPos + 1));
3435

35-
if ($text !== 'declare(strict_types=1)') {
36-
$phpcsFile->addError('declare strict_types statement not found in file', $stackPtr, 'NoDeclareStrictTypes');
36+
if ($text === 'declare(strict_types=0)') {
37+
$phpcsFile->addFixableError('declare strict_types is set to false', $stackPtr, 'NoDeclareStrictTypes');
38+
39+
$numberPos = $phpcsFile->findNext([T_LNUMBER], $startPos);
40+
$phpcsFile->fixer->replaceToken($numberPos, '1');
41+
} else if ($text !== 'declare(strict_types=1)') {
42+
$phpcsFile->addFixableError('declare strict_types statement not found in file', $stackPtr, 'NoDeclareStrictTypes');
43+
$phpcsFile->fixer->addContentBefore($startPos, 'declare(strict_types=1);');
3744
}
3845
}
3946

0 commit comments

Comments
 (0)