|
11 | 11 |
|
12 | 12 | use PHP_CodeSniffer\Sniffs\Sniff;
|
13 | 13 | use PHP_CodeSniffer\Files\File;
|
| 14 | +use PHP_CodeSniffer\Util\Tokens; |
14 | 15 |
|
15 | 16 | class ControlStructureSpacingSniff implements Sniff
|
16 | 17 | {
|
@@ -75,37 +76,42 @@ public function process(File $phpcsFile, $stackPtr)
|
75 | 76 | return;
|
76 | 77 | }
|
77 | 78 |
|
78 |
| - $parenOpener = $tokens[$stackPtr]['parenthesis_opener']; |
79 |
| - $parenCloser = $tokens[$stackPtr]['parenthesis_closer']; |
80 |
| - $spaceAfterOpen = 0; |
81 |
| - if ($tokens[($parenOpener + 1)]['code'] === T_WHITESPACE) { |
82 |
| - if (strpos($tokens[($parenOpener + 1)]['content'], $phpcsFile->eolChar) !== false) { |
83 |
| - $spaceAfterOpen = 'newline'; |
84 |
| - } else { |
85 |
| - $spaceAfterOpen = $tokens[($parenOpener + 1)]['length']; |
| 79 | + $parenOpener = $tokens[$stackPtr]['parenthesis_opener']; |
| 80 | + $parenCloser = $tokens[$stackPtr]['parenthesis_closer']; |
| 81 | + $nextContent = $phpcsFile->findNext(T_WHITESPACE, ($parenOpener + 1), null, true); |
| 82 | + if (false === in_array($tokens[$nextContent]['code'], Tokens::$commentTokens, true)) { |
| 83 | + $spaceAfterOpen = 0; |
| 84 | + if ($tokens[($parenOpener + 1)]['code'] === T_WHITESPACE) { |
| 85 | + if (strpos($tokens[($parenOpener + 1)]['content'], $phpcsFile->eolChar) !== false) { |
| 86 | + $spaceAfterOpen = 'newline'; |
| 87 | + } else { |
| 88 | + $spaceAfterOpen = $tokens[($parenOpener + 1)]['length']; |
| 89 | + } |
86 | 90 | }
|
87 |
| - } |
88 | 91 |
|
89 |
| - $phpcsFile->recordMetric($stackPtr, 'Spaces after control structure open parenthesis', $spaceAfterOpen); |
90 |
| - |
91 |
| - if ($spaceAfterOpen !== $this->requiredSpacesAfterOpen) { |
92 |
| - $error = 'Expected %s spaces after opening bracket; %s found'; |
93 |
| - $data = [ |
94 |
| - $this->requiredSpacesAfterOpen, |
95 |
| - $spaceAfterOpen, |
96 |
| - ]; |
97 |
| - $fix = $phpcsFile->addFixableError($error, ($parenOpener + 1), 'SpacingAfterOpenBrace', $data); |
98 |
| - if ($fix === true) { |
99 |
| - $padding = str_repeat(' ', $this->requiredSpacesAfterOpen); |
100 |
| - if ($spaceAfterOpen === 0) { |
101 |
| - $phpcsFile->fixer->addContent($parenOpener, $padding); |
102 |
| - } else if ($spaceAfterOpen === 'newline') { |
103 |
| - $phpcsFile->fixer->replaceToken(($parenOpener + 1), ''); |
104 |
| - } else { |
105 |
| - $phpcsFile->fixer->replaceToken(($parenOpener + 1), $padding); |
| 92 | + $phpcsFile->recordMetric($stackPtr, 'Spaces after control structure open parenthesis', $spaceAfterOpen); |
| 93 | + |
| 94 | + if ($spaceAfterOpen !== $this->requiredSpacesAfterOpen) { |
| 95 | + $error = 'Expected %s spaces after opening bracket; %s found'; |
| 96 | + $data = [ |
| 97 | + $this->requiredSpacesAfterOpen, |
| 98 | + $spaceAfterOpen, |
| 99 | + ]; |
| 100 | + $fix = $phpcsFile->addFixableError($error, ($parenOpener + 1), 'SpacingAfterOpenBrace', $data); |
| 101 | + if ($fix === true) { |
| 102 | + $padding = str_repeat(' ', $this->requiredSpacesAfterOpen); |
| 103 | + if ($spaceAfterOpen === 0) { |
| 104 | + $phpcsFile->fixer->addContent($parenOpener, $padding); |
| 105 | + } else { |
| 106 | + if ($spaceAfterOpen === 'newline') { |
| 107 | + $phpcsFile->fixer->replaceToken(($parenOpener + 1), ''); |
| 108 | + } else { |
| 109 | + $phpcsFile->fixer->replaceToken(($parenOpener + 1), $padding); |
| 110 | + } |
| 111 | + } |
106 | 112 | }
|
107 | 113 | }
|
108 |
| - } |
| 114 | + }//end if |
109 | 115 |
|
110 | 116 | if ($tokens[$parenOpener]['line'] === $tokens[$parenCloser]['line']) {
|
111 | 117 | $spaceBeforeClose = 0;
|
|
0 commit comments