Skip to content

Commit 95dcf46

Browse files
authored
Merge pull request #209 from magento-commerce/imported-fredden-magento-coding-standard-438
[Imported] Auto-fix `Magento2.PHP.ShortEchoSyntax.ShortEchoTag`
2 parents 6eb1af6 + 4612aa3 commit 95dcf46

File tree

4 files changed

+30
-1
lines changed

4 files changed

+30
-1
lines changed

Magento2/Sniffs/PHP/ShortEchoSyntaxSniff.php

+20-1
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,30 @@ public function process(File $phpcsFile, $stackPtr)
3737

3838
$nextToken = $phpcsFile->findNext(Tokens::$emptyTokens, ($stackPtr + 1), null, true);
3939
if ($tokens[$nextToken]['code'] == T_ECHO) {
40-
$phpcsFile->addWarning(
40+
$fix = $phpcsFile->addFixableWarning(
4141
'Short echo tag syntax must be used; expected "<?=" but found "<?php echo"',
4242
$stackPtr,
4343
'ShortEchoTag'
4444
);
45+
46+
if ($fix) {
47+
$phpcsFile->fixer->beginChangeset();
48+
49+
if (($nextToken - $stackPtr) === 1) {
50+
$phpcsFile->fixer->replaceToken($stackPtr, '<?=');
51+
} else {
52+
$phpcsFile->fixer->replaceToken($stackPtr, '<?= ');
53+
}
54+
55+
for ($i = $stackPtr + 1; $i < $nextToken; $i++) {
56+
if ($tokens[$i]['code'] === T_WHITESPACE) {
57+
$phpcsFile->fixer->replaceToken($i, '');
58+
}
59+
}
60+
61+
$phpcsFile->fixer->replaceToken($nextToken, '');
62+
$phpcsFile->fixer->endChangeset();
63+
}
4564
}
4665
}
4766
}

Magento2/Tests/PHP/ShortEchoSyntaxUnitTest.inc

+2
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,5 @@
33
<?php $foo = bar; ?>
44

55
<?php echo "foo" ?>
6+
7+
<?php /* @noEscape */ echo 'baz'; ?>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?= "foo" ?>
2+
3+
<?php $foo = bar; ?>
4+
5+
<?= "foo" ?>
6+
7+
<?= /* @noEscape */ 'baz'; ?>

Magento2/Tests/PHP/ShortEchoSyntaxUnitTest.php

+1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ public function getWarningList()
2424
{
2525
return [
2626
5 => 1,
27+
7 => 1,
2728
];
2829
}
2930
}

0 commit comments

Comments
 (0)