diff --git a/Magento2/Sniffs/Whitespace/MultipleEmptyLinesSniff.php b/Magento2/Sniffs/Whitespace/MultipleEmptyLinesSniff.php index 4d74a29e..3aaf0973 100644 --- a/Magento2/Sniffs/Whitespace/MultipleEmptyLinesSniff.php +++ b/Magento2/Sniffs/Whitespace/MultipleEmptyLinesSniff.php @@ -1,8 +1,10 @@ findNext(T_WHITESPACE, $stackPtr, null, true); $lines = $tokens[$next]['line'] - $tokens[$stackPtr]['line']; if ($lines > 1) { - $phpcsFile->addWarning( + $fix = $phpcsFile->addFixableWarning( $this->warningMessage, $stackPtr, $this->warningCode, [$lines] ); + + if ($fix) { + // $stackPtr + 1 to keep one empty line. + // $next - 1 to keep the indentation + for ($i = $stackPtr + 1; $i < $next - 1; $i++) { + $phpcsFile->fixer->replaceToken($i, ''); + } + + // Handle case where the next line isn't indented + if ($tokens[$next - 1]['content'] === PHP_EOL) { + $phpcsFile->fixer->replaceToken($next - 1, ''); + } + } } } } diff --git a/Magento2/Tests/Whitespace/MultipleEmptyLinesUnitTest.inc b/Magento2/Tests/Whitespace/MultipleEmptyLinesUnitTest.inc index 280a33cd..e591ebe0 100644 --- a/Magento2/Tests/Whitespace/MultipleEmptyLinesUnitTest.inc +++ b/Magento2/Tests/Whitespace/MultipleEmptyLinesUnitTest.inc @@ -11,6 +11,70 @@ class Foo $someValue = 1; + $someValue = 2; + + + + $someValue = 3; + + + + $someValue = 40; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $someValue = 'newlines and spaces and tabs'; + + + + + + + + + + + +$someValue = 'no indentation'; + + + return $someValue; } } diff --git a/Magento2/Tests/Whitespace/MultipleEmptyLinesUnitTest.inc.fixed b/Magento2/Tests/Whitespace/MultipleEmptyLinesUnitTest.inc.fixed new file mode 100644 index 00000000..837c8b69 --- /dev/null +++ b/Magento2/Tests/Whitespace/MultipleEmptyLinesUnitTest.inc.fixed @@ -0,0 +1,24 @@ + 1, 12 => 1, + 15 => 1, + 19 => 1, + 23 => 1, + 63 => 1, + 75 => 1, ]; } }