@@ -55,7 +55,7 @@ |
||
55 | 55 | * @param array $tokens The stack of tokens that make up |
56 | 56 | * the file. |
57 | 57 | * |
58 | - * @return void |
|
58 | + * @return boolean |
|
59 | 59 | */ |
60 | 60 | public function isMultiLineDeclaration(PHP_CodeSniffer_File $phpcsFile, $stackPtr, $openBracket, $tokens) |
61 | 61 | { |
@@ -13,8 +13,8 @@ discard block |
||
13 | 13 | */ |
14 | 14 | |
15 | 15 | if (class_exists('PEAR_Sniffs_Functions_FunctionDeclarationSniff', true) === false) { |
16 | - $error = 'Class PEAR_Sniffs_Functions_FunctionDeclarationSniff not found'; |
|
17 | - throw new PHP_CodeSniffer_Exception($error); |
|
16 | + $error = 'Class PEAR_Sniffs_Functions_FunctionDeclarationSniff not found'; |
|
17 | + throw new PHP_CodeSniffer_Exception($error); |
|
18 | 18 | } |
19 | 19 | |
20 | 20 | /** |
@@ -33,188 +33,188 @@ discard block |
||
33 | 33 | class Squiz_Sniffs_Functions_MultiLineFunctionDeclarationSniff extends PEAR_Sniffs_Functions_FunctionDeclarationSniff |
34 | 34 | { |
35 | 35 | |
36 | - /** |
|
37 | - * A list of tokenizers this sniff supports. |
|
38 | - * |
|
39 | - * @var array |
|
40 | - */ |
|
41 | - public $supportedTokenizers = array( |
|
42 | - 'PHP', |
|
43 | - 'JS', |
|
44 | - ); |
|
45 | - |
|
46 | - |
|
47 | - /** |
|
48 | - * Determine if this is a multi-line function declaration. |
|
49 | - * |
|
50 | - * @param PHP_CodeSniffer_File $phpcsFile The file being scanned. |
|
51 | - * @param int $stackPtr The position of the current token |
|
52 | - * in the stack passed in $tokens. |
|
53 | - * @param int $openBracket The position of the opening bracket |
|
54 | - * in the stack passed in $tokens. |
|
55 | - * @param array $tokens The stack of tokens that make up |
|
56 | - * the file. |
|
57 | - * |
|
58 | - * @return void |
|
59 | - */ |
|
60 | - public function isMultiLineDeclaration(PHP_CodeSniffer_File $phpcsFile, $stackPtr, $openBracket, $tokens) |
|
61 | - { |
|
62 | - $bracketsToCheck = array($stackPtr => $openBracket); |
|
63 | - |
|
64 | - // Closures may use the USE keyword and so be multi-line in this way. |
|
65 | - if ($tokens[$stackPtr]['code'] === T_CLOSURE) { |
|
66 | - $use = $phpcsFile->findNext(T_USE, ($tokens[$openBracket]['parenthesis_closer'] + 1), $tokens[$stackPtr]['scope_opener']); |
|
67 | - if ($use !== false) { |
|
68 | - $open = $phpcsFile->findNext(T_OPEN_PARENTHESIS, ($use + 1)); |
|
69 | - if ($open !== false) { |
|
70 | - $bracketsToCheck[$use] = $open; |
|
71 | - } |
|
72 | - } |
|
73 | - } |
|
74 | - |
|
75 | - foreach ($bracketsToCheck as $stackPtr => $openBracket) { |
|
76 | - // If the first argument is on a new line, this is a multi-line |
|
77 | - // function declaration, even if there is only one argument. |
|
78 | - $next = $phpcsFile->findNext(PHP_CodeSniffer_Tokens::$emptyTokens, ($openBracket + 1), null, true); |
|
79 | - if ($tokens[$next]['line'] !== $tokens[$stackPtr]['line']) { |
|
80 | - return true; |
|
81 | - } |
|
82 | - |
|
83 | - $closeBracket = $tokens[$openBracket]['parenthesis_closer']; |
|
84 | - |
|
85 | - $end = $phpcsFile->findEndOfStatement($openBracket + 1); |
|
86 | - while ($tokens[$end]['code'] === T_COMMA) { |
|
87 | - // If the next bit of code is not on the same line, this is a |
|
88 | - // multi-line function declaration. |
|
89 | - $next = $phpcsFile->findNext(PHP_CodeSniffer_Tokens::$emptyTokens, ($end + 1), $closeBracket, true); |
|
90 | - if ($next === false) { |
|
91 | - continue(2); |
|
92 | - } |
|
93 | - |
|
94 | - if ($tokens[$next]['line'] !== $tokens[$end]['line']) { |
|
95 | - return true; |
|
96 | - } |
|
97 | - |
|
98 | - $end = $phpcsFile->findEndOfStatement($next); |
|
99 | - } |
|
100 | - |
|
101 | - // We've reached the last argument, so see if the next content |
|
102 | - // (should be the close bracket) is also on the same line. |
|
103 | - $next = $phpcsFile->findNext(PHP_CodeSniffer_Tokens::$emptyTokens, ($end + 1), $closeBracket, true); |
|
104 | - if ($next !== false && $tokens[$next]['line'] !== $tokens[$end]['line']) { |
|
105 | - return true; |
|
106 | - } |
|
107 | - }//end foreach |
|
108 | - |
|
109 | - return false; |
|
110 | - |
|
111 | - }//end isMultiLineDeclaration() |
|
112 | - |
|
113 | - |
|
114 | - /** |
|
115 | - * Processes multi-line declarations. |
|
116 | - * |
|
117 | - * @param PHP_CodeSniffer_File $phpcsFile The file being scanned. |
|
118 | - * @param int $stackPtr The position of the current token |
|
119 | - * in the stack passed in $tokens. |
|
120 | - * @param array $tokens The stack of tokens that make up |
|
121 | - * the file. |
|
122 | - * |
|
123 | - * @return void |
|
124 | - */ |
|
125 | - public function processMultiLineDeclaration(PHP_CodeSniffer_File $phpcsFile, $stackPtr, $tokens) |
|
126 | - { |
|
127 | - // We do everything the parent sniff does, and a bit more. |
|
128 | - parent::processMultiLineDeclaration($phpcsFile, $stackPtr, $tokens); |
|
129 | - |
|
130 | - $openBracket = $tokens[$stackPtr]['parenthesis_opener']; |
|
131 | - $this->processBracket($phpcsFile, $openBracket, $tokens, 'function'); |
|
132 | - |
|
133 | - if ($tokens[$stackPtr]['code'] !== T_CLOSURE) { |
|
134 | - return; |
|
135 | - } |
|
136 | - |
|
137 | - $use = $phpcsFile->findNext(T_USE, ($tokens[$stackPtr]['parenthesis_closer'] + 1), $tokens[$stackPtr]['scope_opener']); |
|
138 | - if ($use === false) { |
|
139 | - return; |
|
140 | - } |
|
141 | - |
|
142 | - $openBracket = $phpcsFile->findNext(T_OPEN_PARENTHESIS, ($use + 1), null); |
|
143 | - $this->processBracket($phpcsFile, $openBracket, $tokens, 'use'); |
|
144 | - |
|
145 | - // Also check spacing. |
|
146 | - if ($tokens[($use - 1)]['code'] === T_WHITESPACE) { |
|
147 | - $gap = strlen($tokens[($use - 1)]['content']); |
|
148 | - } else { |
|
149 | - $gap = 0; |
|
150 | - } |
|
151 | - |
|
152 | - }//end processMultiLineDeclaration() |
|
153 | - |
|
154 | - |
|
155 | - /** |
|
156 | - * Processes the contents of a single set of brackets. |
|
157 | - * |
|
158 | - * @param PHP_CodeSniffer_File $phpcsFile The file being scanned. |
|
159 | - * @param int $openBracket The position of the open bracket |
|
160 | - * in the stack passed in $tokens. |
|
161 | - * @param array $tokens The stack of tokens that make up |
|
162 | - * the file. |
|
163 | - * @param string $type The type of the token the brackets |
|
164 | - * belong to (function or use). |
|
165 | - * |
|
166 | - * @return void |
|
167 | - */ |
|
168 | - public function processBracket(PHP_CodeSniffer_File $phpcsFile, $openBracket, $tokens, $type='function') |
|
169 | - { |
|
170 | - $errorPrefix = ''; |
|
171 | - if ($type === 'use') { |
|
172 | - $errorPrefix = 'Use'; |
|
173 | - } |
|
174 | - |
|
175 | - $closeBracket = $tokens[$openBracket]['parenthesis_closer']; |
|
176 | - |
|
177 | - // The open bracket should be the last thing on the line. |
|
178 | - if ($tokens[$openBracket]['line'] !== $tokens[$closeBracket]['line']) { |
|
179 | - $next = $phpcsFile->findNext(PHP_CodeSniffer_Tokens::$emptyTokens, ($openBracket + 1), null, true); |
|
180 | - if ($tokens[$next]['line'] !== ($tokens[$openBracket]['line'] + 1)) { |
|
181 | - $error = 'The first parameter of a multi-line '.$type.' declaration must be on the line after the opening bracket'; |
|
182 | - $fix = $phpcsFile->addFixableError($error, $next, $errorPrefix.'FirstParamSpacing'); |
|
183 | - if ($fix === true) { |
|
184 | - $phpcsFile->fixer->addNewline($openBracket); |
|
185 | - } |
|
186 | - } |
|
187 | - } |
|
188 | - |
|
189 | - // Each line between the brackets should contain a single parameter. |
|
190 | - $lastComma = null; |
|
191 | - for ($i = ($openBracket + 1); $i < $closeBracket; $i++) { |
|
192 | - // Skip brackets, like arrays, as they can contain commas. |
|
193 | - if (isset($tokens[$i]['bracket_opener']) === true) { |
|
194 | - $i = $tokens[$i]['bracket_closer']; |
|
195 | - continue; |
|
196 | - } |
|
197 | - |
|
198 | - if (isset($tokens[$i]['parenthesis_opener']) === true) { |
|
199 | - $i = $tokens[$i]['parenthesis_closer']; |
|
200 | - continue; |
|
201 | - } |
|
202 | - |
|
203 | - if ($tokens[$i]['code'] !== T_COMMA) { |
|
204 | - continue; |
|
205 | - } |
|
206 | - |
|
207 | - $next = $phpcsFile->findNext(T_WHITESPACE, ($i + 1), null, true); |
|
208 | - if ($tokens[$next]['line'] !== ($tokens[$i]['line'] + 1)) { |
|
209 | - $error = 'Multi-line '.$type.' declarations must define one parameter per line'; |
|
210 | - $fix = $phpcsFile->addFixableError($error, $next, $errorPrefix.'OneParamPerLine'); |
|
211 | - if ($fix === true) { |
|
212 | - $phpcsFile->fixer->addNewline($i); |
|
213 | - } |
|
214 | - } |
|
215 | - }//end for |
|
216 | - |
|
217 | - }//end processBracket() |
|
36 | + /** |
|
37 | + * A list of tokenizers this sniff supports. |
|
38 | + * |
|
39 | + * @var array |
|
40 | + */ |
|
41 | + public $supportedTokenizers = array( |
|
42 | + 'PHP', |
|
43 | + 'JS', |
|
44 | + ); |
|
45 | + |
|
46 | + |
|
47 | + /** |
|
48 | + * Determine if this is a multi-line function declaration. |
|
49 | + * |
|
50 | + * @param PHP_CodeSniffer_File $phpcsFile The file being scanned. |
|
51 | + * @param int $stackPtr The position of the current token |
|
52 | + * in the stack passed in $tokens. |
|
53 | + * @param int $openBracket The position of the opening bracket |
|
54 | + * in the stack passed in $tokens. |
|
55 | + * @param array $tokens The stack of tokens that make up |
|
56 | + * the file. |
|
57 | + * |
|
58 | + * @return void |
|
59 | + */ |
|
60 | + public function isMultiLineDeclaration(PHP_CodeSniffer_File $phpcsFile, $stackPtr, $openBracket, $tokens) |
|
61 | + { |
|
62 | + $bracketsToCheck = array($stackPtr => $openBracket); |
|
63 | + |
|
64 | + // Closures may use the USE keyword and so be multi-line in this way. |
|
65 | + if ($tokens[$stackPtr]['code'] === T_CLOSURE) { |
|
66 | + $use = $phpcsFile->findNext(T_USE, ($tokens[$openBracket]['parenthesis_closer'] + 1), $tokens[$stackPtr]['scope_opener']); |
|
67 | + if ($use !== false) { |
|
68 | + $open = $phpcsFile->findNext(T_OPEN_PARENTHESIS, ($use + 1)); |
|
69 | + if ($open !== false) { |
|
70 | + $bracketsToCheck[$use] = $open; |
|
71 | + } |
|
72 | + } |
|
73 | + } |
|
74 | + |
|
75 | + foreach ($bracketsToCheck as $stackPtr => $openBracket) { |
|
76 | + // If the first argument is on a new line, this is a multi-line |
|
77 | + // function declaration, even if there is only one argument. |
|
78 | + $next = $phpcsFile->findNext(PHP_CodeSniffer_Tokens::$emptyTokens, ($openBracket + 1), null, true); |
|
79 | + if ($tokens[$next]['line'] !== $tokens[$stackPtr]['line']) { |
|
80 | + return true; |
|
81 | + } |
|
82 | + |
|
83 | + $closeBracket = $tokens[$openBracket]['parenthesis_closer']; |
|
84 | + |
|
85 | + $end = $phpcsFile->findEndOfStatement($openBracket + 1); |
|
86 | + while ($tokens[$end]['code'] === T_COMMA) { |
|
87 | + // If the next bit of code is not on the same line, this is a |
|
88 | + // multi-line function declaration. |
|
89 | + $next = $phpcsFile->findNext(PHP_CodeSniffer_Tokens::$emptyTokens, ($end + 1), $closeBracket, true); |
|
90 | + if ($next === false) { |
|
91 | + continue(2); |
|
92 | + } |
|
93 | + |
|
94 | + if ($tokens[$next]['line'] !== $tokens[$end]['line']) { |
|
95 | + return true; |
|
96 | + } |
|
97 | + |
|
98 | + $end = $phpcsFile->findEndOfStatement($next); |
|
99 | + } |
|
100 | + |
|
101 | + // We've reached the last argument, so see if the next content |
|
102 | + // (should be the close bracket) is also on the same line. |
|
103 | + $next = $phpcsFile->findNext(PHP_CodeSniffer_Tokens::$emptyTokens, ($end + 1), $closeBracket, true); |
|
104 | + if ($next !== false && $tokens[$next]['line'] !== $tokens[$end]['line']) { |
|
105 | + return true; |
|
106 | + } |
|
107 | + }//end foreach |
|
108 | + |
|
109 | + return false; |
|
110 | + |
|
111 | + }//end isMultiLineDeclaration() |
|
112 | + |
|
113 | + |
|
114 | + /** |
|
115 | + * Processes multi-line declarations. |
|
116 | + * |
|
117 | + * @param PHP_CodeSniffer_File $phpcsFile The file being scanned. |
|
118 | + * @param int $stackPtr The position of the current token |
|
119 | + * in the stack passed in $tokens. |
|
120 | + * @param array $tokens The stack of tokens that make up |
|
121 | + * the file. |
|
122 | + * |
|
123 | + * @return void |
|
124 | + */ |
|
125 | + public function processMultiLineDeclaration(PHP_CodeSniffer_File $phpcsFile, $stackPtr, $tokens) |
|
126 | + { |
|
127 | + // We do everything the parent sniff does, and a bit more. |
|
128 | + parent::processMultiLineDeclaration($phpcsFile, $stackPtr, $tokens); |
|
129 | + |
|
130 | + $openBracket = $tokens[$stackPtr]['parenthesis_opener']; |
|
131 | + $this->processBracket($phpcsFile, $openBracket, $tokens, 'function'); |
|
132 | + |
|
133 | + if ($tokens[$stackPtr]['code'] !== T_CLOSURE) { |
|
134 | + return; |
|
135 | + } |
|
136 | + |
|
137 | + $use = $phpcsFile->findNext(T_USE, ($tokens[$stackPtr]['parenthesis_closer'] + 1), $tokens[$stackPtr]['scope_opener']); |
|
138 | + if ($use === false) { |
|
139 | + return; |
|
140 | + } |
|
141 | + |
|
142 | + $openBracket = $phpcsFile->findNext(T_OPEN_PARENTHESIS, ($use + 1), null); |
|
143 | + $this->processBracket($phpcsFile, $openBracket, $tokens, 'use'); |
|
144 | + |
|
145 | + // Also check spacing. |
|
146 | + if ($tokens[($use - 1)]['code'] === T_WHITESPACE) { |
|
147 | + $gap = strlen($tokens[($use - 1)]['content']); |
|
148 | + } else { |
|
149 | + $gap = 0; |
|
150 | + } |
|
151 | + |
|
152 | + }//end processMultiLineDeclaration() |
|
153 | + |
|
154 | + |
|
155 | + /** |
|
156 | + * Processes the contents of a single set of brackets. |
|
157 | + * |
|
158 | + * @param PHP_CodeSniffer_File $phpcsFile The file being scanned. |
|
159 | + * @param int $openBracket The position of the open bracket |
|
160 | + * in the stack passed in $tokens. |
|
161 | + * @param array $tokens The stack of tokens that make up |
|
162 | + * the file. |
|
163 | + * @param string $type The type of the token the brackets |
|
164 | + * belong to (function or use). |
|
165 | + * |
|
166 | + * @return void |
|
167 | + */ |
|
168 | + public function processBracket(PHP_CodeSniffer_File $phpcsFile, $openBracket, $tokens, $type='function') |
|
169 | + { |
|
170 | + $errorPrefix = ''; |
|
171 | + if ($type === 'use') { |
|
172 | + $errorPrefix = 'Use'; |
|
173 | + } |
|
174 | + |
|
175 | + $closeBracket = $tokens[$openBracket]['parenthesis_closer']; |
|
176 | + |
|
177 | + // The open bracket should be the last thing on the line. |
|
178 | + if ($tokens[$openBracket]['line'] !== $tokens[$closeBracket]['line']) { |
|
179 | + $next = $phpcsFile->findNext(PHP_CodeSniffer_Tokens::$emptyTokens, ($openBracket + 1), null, true); |
|
180 | + if ($tokens[$next]['line'] !== ($tokens[$openBracket]['line'] + 1)) { |
|
181 | + $error = 'The first parameter of a multi-line '.$type.' declaration must be on the line after the opening bracket'; |
|
182 | + $fix = $phpcsFile->addFixableError($error, $next, $errorPrefix.'FirstParamSpacing'); |
|
183 | + if ($fix === true) { |
|
184 | + $phpcsFile->fixer->addNewline($openBracket); |
|
185 | + } |
|
186 | + } |
|
187 | + } |
|
188 | + |
|
189 | + // Each line between the brackets should contain a single parameter. |
|
190 | + $lastComma = null; |
|
191 | + for ($i = ($openBracket + 1); $i < $closeBracket; $i++) { |
|
192 | + // Skip brackets, like arrays, as they can contain commas. |
|
193 | + if (isset($tokens[$i]['bracket_opener']) === true) { |
|
194 | + $i = $tokens[$i]['bracket_closer']; |
|
195 | + continue; |
|
196 | + } |
|
197 | + |
|
198 | + if (isset($tokens[$i]['parenthesis_opener']) === true) { |
|
199 | + $i = $tokens[$i]['parenthesis_closer']; |
|
200 | + continue; |
|
201 | + } |
|
202 | + |
|
203 | + if ($tokens[$i]['code'] !== T_COMMA) { |
|
204 | + continue; |
|
205 | + } |
|
206 | + |
|
207 | + $next = $phpcsFile->findNext(T_WHITESPACE, ($i + 1), null, true); |
|
208 | + if ($tokens[$next]['line'] !== ($tokens[$i]['line'] + 1)) { |
|
209 | + $error = 'Multi-line '.$type.' declarations must define one parameter per line'; |
|
210 | + $fix = $phpcsFile->addFixableError($error, $next, $errorPrefix.'OneParamPerLine'); |
|
211 | + if ($fix === true) { |
|
212 | + $phpcsFile->fixer->addNewline($i); |
|
213 | + } |
|
214 | + } |
|
215 | + }//end for |
|
216 | + |
|
217 | + }//end processBracket() |
|
218 | 218 | |
219 | 219 | |
220 | 220 | }//end class |
@@ -12,9 +12,9 @@ discard block |
||
12 | 12 | * @link http://pear.php.net/package/PHP_CodeSniffer |
13 | 13 | */ |
14 | 14 | |
15 | -if (class_exists('PEAR_Sniffs_Functions_FunctionDeclarationSniff', true) === false) { |
|
15 | +if ( class_exists( 'PEAR_Sniffs_Functions_FunctionDeclarationSniff', true ) === false ) { |
|
16 | 16 | $error = 'Class PEAR_Sniffs_Functions_FunctionDeclarationSniff not found'; |
17 | - throw new PHP_CodeSniffer_Exception($error); |
|
17 | + throw new PHP_CodeSniffer_Exception( $error ); |
|
18 | 18 | } |
19 | 19 | |
20 | 20 | /** |
@@ -57,51 +57,51 @@ discard block |
||
57 | 57 | * |
58 | 58 | * @return void |
59 | 59 | */ |
60 | - public function isMultiLineDeclaration(PHP_CodeSniffer_File $phpcsFile, $stackPtr, $openBracket, $tokens) |
|
60 | + public function isMultiLineDeclaration( PHP_CodeSniffer_File $phpcsFile, $stackPtr, $openBracket, $tokens ) |
|
61 | 61 | { |
62 | - $bracketsToCheck = array($stackPtr => $openBracket); |
|
62 | + $bracketsToCheck = array( $stackPtr => $openBracket ); |
|
63 | 63 | |
64 | 64 | // Closures may use the USE keyword and so be multi-line in this way. |
65 | - if ($tokens[$stackPtr]['code'] === T_CLOSURE) { |
|
66 | - $use = $phpcsFile->findNext(T_USE, ($tokens[$openBracket]['parenthesis_closer'] + 1), $tokens[$stackPtr]['scope_opener']); |
|
67 | - if ($use !== false) { |
|
68 | - $open = $phpcsFile->findNext(T_OPEN_PARENTHESIS, ($use + 1)); |
|
69 | - if ($open !== false) { |
|
70 | - $bracketsToCheck[$use] = $open; |
|
65 | + if ( $tokens[ $stackPtr ][ 'code' ] === T_CLOSURE ) { |
|
66 | + $use = $phpcsFile->findNext( T_USE, ( $tokens[ $openBracket ][ 'parenthesis_closer' ] + 1 ), $tokens[ $stackPtr ][ 'scope_opener' ] ); |
|
67 | + if ( $use !== false ) { |
|
68 | + $open = $phpcsFile->findNext( T_OPEN_PARENTHESIS, ( $use + 1 ) ); |
|
69 | + if ( $open !== false ) { |
|
70 | + $bracketsToCheck[ $use ] = $open; |
|
71 | 71 | } |
72 | 72 | } |
73 | 73 | } |
74 | 74 | |
75 | - foreach ($bracketsToCheck as $stackPtr => $openBracket) { |
|
75 | + foreach ( $bracketsToCheck as $stackPtr => $openBracket ) { |
|
76 | 76 | // If the first argument is on a new line, this is a multi-line |
77 | 77 | // function declaration, even if there is only one argument. |
78 | - $next = $phpcsFile->findNext(PHP_CodeSniffer_Tokens::$emptyTokens, ($openBracket + 1), null, true); |
|
79 | - if ($tokens[$next]['line'] !== $tokens[$stackPtr]['line']) { |
|
78 | + $next = $phpcsFile->findNext( PHP_CodeSniffer_Tokens::$emptyTokens, ( $openBracket + 1 ), null, true ); |
|
79 | + if ( $tokens[ $next ][ 'line' ] !== $tokens[ $stackPtr ][ 'line' ] ) { |
|
80 | 80 | return true; |
81 | 81 | } |
82 | 82 | |
83 | - $closeBracket = $tokens[$openBracket]['parenthesis_closer']; |
|
83 | + $closeBracket = $tokens[ $openBracket ][ 'parenthesis_closer' ]; |
|
84 | 84 | |
85 | - $end = $phpcsFile->findEndOfStatement($openBracket + 1); |
|
86 | - while ($tokens[$end]['code'] === T_COMMA) { |
|
85 | + $end = $phpcsFile->findEndOfStatement( $openBracket + 1 ); |
|
86 | + while ( $tokens[ $end ][ 'code' ] === T_COMMA ) { |
|
87 | 87 | // If the next bit of code is not on the same line, this is a |
88 | 88 | // multi-line function declaration. |
89 | - $next = $phpcsFile->findNext(PHP_CodeSniffer_Tokens::$emptyTokens, ($end + 1), $closeBracket, true); |
|
90 | - if ($next === false) { |
|
91 | - continue(2); |
|
89 | + $next = $phpcsFile->findNext( PHP_CodeSniffer_Tokens::$emptyTokens, ( $end + 1 ), $closeBracket, true ); |
|
90 | + if ( $next === false ) { |
|
91 | + continue( 2 ); |
|
92 | 92 | } |
93 | 93 | |
94 | - if ($tokens[$next]['line'] !== $tokens[$end]['line']) { |
|
94 | + if ( $tokens[ $next ][ 'line' ] !== $tokens[ $end ][ 'line' ] ) { |
|
95 | 95 | return true; |
96 | 96 | } |
97 | 97 | |
98 | - $end = $phpcsFile->findEndOfStatement($next); |
|
98 | + $end = $phpcsFile->findEndOfStatement( $next ); |
|
99 | 99 | } |
100 | 100 | |
101 | 101 | // We've reached the last argument, so see if the next content |
102 | 102 | // (should be the close bracket) is also on the same line. |
103 | - $next = $phpcsFile->findNext(PHP_CodeSniffer_Tokens::$emptyTokens, ($end + 1), $closeBracket, true); |
|
104 | - if ($next !== false && $tokens[$next]['line'] !== $tokens[$end]['line']) { |
|
103 | + $next = $phpcsFile->findNext( PHP_CodeSniffer_Tokens::$emptyTokens, ( $end + 1 ), $closeBracket, true ); |
|
104 | + if ( $next !== false && $tokens[ $next ][ 'line' ] !== $tokens[ $end ][ 'line' ] ) { |
|
105 | 105 | return true; |
106 | 106 | } |
107 | 107 | }//end foreach |
@@ -122,29 +122,29 @@ discard block |
||
122 | 122 | * |
123 | 123 | * @return void |
124 | 124 | */ |
125 | - public function processMultiLineDeclaration(PHP_CodeSniffer_File $phpcsFile, $stackPtr, $tokens) |
|
125 | + public function processMultiLineDeclaration( PHP_CodeSniffer_File $phpcsFile, $stackPtr, $tokens ) |
|
126 | 126 | { |
127 | 127 | // We do everything the parent sniff does, and a bit more. |
128 | - parent::processMultiLineDeclaration($phpcsFile, $stackPtr, $tokens); |
|
128 | + parent::processMultiLineDeclaration( $phpcsFile, $stackPtr, $tokens ); |
|
129 | 129 | |
130 | - $openBracket = $tokens[$stackPtr]['parenthesis_opener']; |
|
131 | - $this->processBracket($phpcsFile, $openBracket, $tokens, 'function'); |
|
130 | + $openBracket = $tokens[ $stackPtr ][ 'parenthesis_opener' ]; |
|
131 | + $this->processBracket( $phpcsFile, $openBracket, $tokens, 'function' ); |
|
132 | 132 | |
133 | - if ($tokens[$stackPtr]['code'] !== T_CLOSURE) { |
|
133 | + if ( $tokens[ $stackPtr ][ 'code' ] !== T_CLOSURE ) { |
|
134 | 134 | return; |
135 | 135 | } |
136 | 136 | |
137 | - $use = $phpcsFile->findNext(T_USE, ($tokens[$stackPtr]['parenthesis_closer'] + 1), $tokens[$stackPtr]['scope_opener']); |
|
138 | - if ($use === false) { |
|
137 | + $use = $phpcsFile->findNext( T_USE, ( $tokens[ $stackPtr ][ 'parenthesis_closer' ] + 1 ), $tokens[ $stackPtr ][ 'scope_opener' ] ); |
|
138 | + if ( $use === false ) { |
|
139 | 139 | return; |
140 | 140 | } |
141 | 141 | |
142 | - $openBracket = $phpcsFile->findNext(T_OPEN_PARENTHESIS, ($use + 1), null); |
|
143 | - $this->processBracket($phpcsFile, $openBracket, $tokens, 'use'); |
|
142 | + $openBracket = $phpcsFile->findNext( T_OPEN_PARENTHESIS, ( $use + 1 ), null ); |
|
143 | + $this->processBracket( $phpcsFile, $openBracket, $tokens, 'use' ); |
|
144 | 144 | |
145 | 145 | // Also check spacing. |
146 | - if ($tokens[($use - 1)]['code'] === T_WHITESPACE) { |
|
147 | - $gap = strlen($tokens[($use - 1)]['content']); |
|
146 | + if ( $tokens[ ( $use - 1 ) ][ 'code' ] === T_WHITESPACE ) { |
|
147 | + $gap = strlen( $tokens[ ( $use - 1 ) ][ 'content' ] ); |
|
148 | 148 | } else { |
149 | 149 | $gap = 0; |
150 | 150 | } |
@@ -165,51 +165,51 @@ discard block |
||
165 | 165 | * |
166 | 166 | * @return void |
167 | 167 | */ |
168 | - public function processBracket(PHP_CodeSniffer_File $phpcsFile, $openBracket, $tokens, $type='function') |
|
168 | + public function processBracket( PHP_CodeSniffer_File $phpcsFile, $openBracket, $tokens, $type = 'function' ) |
|
169 | 169 | { |
170 | 170 | $errorPrefix = ''; |
171 | - if ($type === 'use') { |
|
171 | + if ( $type === 'use' ) { |
|
172 | 172 | $errorPrefix = 'Use'; |
173 | 173 | } |
174 | 174 | |
175 | - $closeBracket = $tokens[$openBracket]['parenthesis_closer']; |
|
175 | + $closeBracket = $tokens[ $openBracket ][ 'parenthesis_closer' ]; |
|
176 | 176 | |
177 | 177 | // The open bracket should be the last thing on the line. |
178 | - if ($tokens[$openBracket]['line'] !== $tokens[$closeBracket]['line']) { |
|
179 | - $next = $phpcsFile->findNext(PHP_CodeSniffer_Tokens::$emptyTokens, ($openBracket + 1), null, true); |
|
180 | - if ($tokens[$next]['line'] !== ($tokens[$openBracket]['line'] + 1)) { |
|
181 | - $error = 'The first parameter of a multi-line '.$type.' declaration must be on the line after the opening bracket'; |
|
182 | - $fix = $phpcsFile->addFixableError($error, $next, $errorPrefix.'FirstParamSpacing'); |
|
183 | - if ($fix === true) { |
|
184 | - $phpcsFile->fixer->addNewline($openBracket); |
|
178 | + if ( $tokens[ $openBracket ][ 'line' ] !== $tokens[ $closeBracket ][ 'line' ] ) { |
|
179 | + $next = $phpcsFile->findNext( PHP_CodeSniffer_Tokens::$emptyTokens, ( $openBracket + 1 ), null, true ); |
|
180 | + if ( $tokens[ $next ][ 'line' ] !== ( $tokens[ $openBracket ][ 'line' ] + 1 ) ) { |
|
181 | + $error = 'The first parameter of a multi-line ' . $type . ' declaration must be on the line after the opening bracket'; |
|
182 | + $fix = $phpcsFile->addFixableError( $error, $next, $errorPrefix . 'FirstParamSpacing' ); |
|
183 | + if ( $fix === true ) { |
|
184 | + $phpcsFile->fixer->addNewline( $openBracket ); |
|
185 | 185 | } |
186 | 186 | } |
187 | 187 | } |
188 | 188 | |
189 | 189 | // Each line between the brackets should contain a single parameter. |
190 | 190 | $lastComma = null; |
191 | - for ($i = ($openBracket + 1); $i < $closeBracket; $i++) { |
|
191 | + for ( $i = ( $openBracket + 1 ); $i < $closeBracket; $i++ ) { |
|
192 | 192 | // Skip brackets, like arrays, as they can contain commas. |
193 | - if (isset($tokens[$i]['bracket_opener']) === true) { |
|
194 | - $i = $tokens[$i]['bracket_closer']; |
|
193 | + if ( isset( $tokens[ $i ][ 'bracket_opener' ] ) === true ) { |
|
194 | + $i = $tokens[ $i ][ 'bracket_closer' ]; |
|
195 | 195 | continue; |
196 | 196 | } |
197 | 197 | |
198 | - if (isset($tokens[$i]['parenthesis_opener']) === true) { |
|
199 | - $i = $tokens[$i]['parenthesis_closer']; |
|
198 | + if ( isset( $tokens[ $i ][ 'parenthesis_opener' ] ) === true ) { |
|
199 | + $i = $tokens[ $i ][ 'parenthesis_closer' ]; |
|
200 | 200 | continue; |
201 | 201 | } |
202 | 202 | |
203 | - if ($tokens[$i]['code'] !== T_COMMA) { |
|
203 | + if ( $tokens[ $i ][ 'code' ] !== T_COMMA ) { |
|
204 | 204 | continue; |
205 | 205 | } |
206 | 206 | |
207 | - $next = $phpcsFile->findNext(T_WHITESPACE, ($i + 1), null, true); |
|
208 | - if ($tokens[$next]['line'] !== ($tokens[$i]['line'] + 1)) { |
|
209 | - $error = 'Multi-line '.$type.' declarations must define one parameter per line'; |
|
210 | - $fix = $phpcsFile->addFixableError($error, $next, $errorPrefix.'OneParamPerLine'); |
|
211 | - if ($fix === true) { |
|
212 | - $phpcsFile->fixer->addNewline($i); |
|
207 | + $next = $phpcsFile->findNext( T_WHITESPACE, ( $i + 1 ), null, true ); |
|
208 | + if ( $tokens[ $next ][ 'line' ] !== ( $tokens[ $i ][ 'line' ] + 1 ) ) { |
|
209 | + $error = 'Multi-line ' . $type . ' declarations must define one parameter per line'; |
|
210 | + $fix = $phpcsFile->addFixableError( $error, $next, $errorPrefix . 'OneParamPerLine' ); |
|
211 | + if ( $fix === true ) { |
|
212 | + $phpcsFile->fixer->addNewline( $i ); |
|
213 | 213 | } |
214 | 214 | } |
215 | 215 | }//end for |
@@ -30,8 +30,7 @@ discard block |
||
30 | 30 | * @version Release: @package_version@ |
31 | 31 | * @link http://pear.php.net/package/PHP_CodeSniffer |
32 | 32 | */ |
33 | -class Squiz_Sniffs_Functions_MultiLineFunctionDeclarationSniff extends PEAR_Sniffs_Functions_FunctionDeclarationSniff |
|
34 | -{ |
|
33 | +class Squiz_Sniffs_Functions_MultiLineFunctionDeclarationSniff extends PEAR_Sniffs_Functions_FunctionDeclarationSniff { |
|
35 | 34 | |
36 | 35 | /** |
37 | 36 | * A list of tokenizers this sniff supports. |
@@ -57,8 +56,7 @@ discard block |
||
57 | 56 | * |
58 | 57 | * @return void |
59 | 58 | */ |
60 | - public function isMultiLineDeclaration(PHP_CodeSniffer_File $phpcsFile, $stackPtr, $openBracket, $tokens) |
|
61 | - { |
|
59 | + public function isMultiLineDeclaration(PHP_CodeSniffer_File $phpcsFile, $stackPtr, $openBracket, $tokens) { |
|
62 | 60 | $bracketsToCheck = array($stackPtr => $openBracket); |
63 | 61 | |
64 | 62 | // Closures may use the USE keyword and so be multi-line in this way. |
@@ -122,8 +120,7 @@ discard block |
||
122 | 120 | * |
123 | 121 | * @return void |
124 | 122 | */ |
125 | - public function processMultiLineDeclaration(PHP_CodeSniffer_File $phpcsFile, $stackPtr, $tokens) |
|
126 | - { |
|
123 | + public function processMultiLineDeclaration(PHP_CodeSniffer_File $phpcsFile, $stackPtr, $tokens) { |
|
127 | 124 | // We do everything the parent sniff does, and a bit more. |
128 | 125 | parent::processMultiLineDeclaration($phpcsFile, $stackPtr, $tokens); |
129 | 126 | |
@@ -165,8 +162,7 @@ discard block |
||
165 | 162 | * |
166 | 163 | * @return void |
167 | 164 | */ |
168 | - public function processBracket(PHP_CodeSniffer_File $phpcsFile, $openBracket, $tokens, $type='function') |
|
169 | - { |
|
165 | + public function processBracket(PHP_CodeSniffer_File $phpcsFile, $openBracket, $tokens, $type='function') { |
|
170 | 166 | $errorPrefix = ''; |
171 | 167 | if ($type === 'use') { |
172 | 168 | $errorPrefix = 'Use'; |
@@ -37,7 +37,7 @@ |
||
37 | 37 | /** |
38 | 38 | * Returns an array of tokens this test wants to listen for. |
39 | 39 | * |
40 | - * @return array |
|
40 | + * @return string[] |
|
41 | 41 | */ |
42 | 42 | public function register() |
43 | 43 | { |
@@ -26,71 +26,71 @@ |
||
26 | 26 | class Squiz_Sniffs_Objects_DisallowObjectStringIndexSniff implements PHP_CodeSniffer_Sniff |
27 | 27 | { |
28 | 28 | |
29 | - /** |
|
30 | - * A list of tokenizers this sniff supports. |
|
31 | - * |
|
32 | - * @var array |
|
33 | - */ |
|
34 | - public $supportedTokenizers = array('JS'); |
|
29 | + /** |
|
30 | + * A list of tokenizers this sniff supports. |
|
31 | + * |
|
32 | + * @var array |
|
33 | + */ |
|
34 | + public $supportedTokenizers = array('JS'); |
|
35 | 35 | |
36 | 36 | |
37 | - /** |
|
38 | - * Returns an array of tokens this test wants to listen for. |
|
39 | - * |
|
40 | - * @return array |
|
41 | - */ |
|
42 | - public function register() |
|
43 | - { |
|
44 | - return array(T_OPEN_SQUARE_BRACKET); |
|
37 | + /** |
|
38 | + * Returns an array of tokens this test wants to listen for. |
|
39 | + * |
|
40 | + * @return array |
|
41 | + */ |
|
42 | + public function register() |
|
43 | + { |
|
44 | + return array(T_OPEN_SQUARE_BRACKET); |
|
45 | 45 | |
46 | - }//end register() |
|
46 | + }//end register() |
|
47 | 47 | |
48 | 48 | |
49 | - /** |
|
50 | - * Processes this test, when one of its tokens is encountered. |
|
51 | - * |
|
52 | - * @param PHP_CodeSniffer_File $phpcsFile The file being scanned. |
|
53 | - * @param int $stackPtr The position of the current token |
|
54 | - * in the stack passed in $tokens. |
|
55 | - * |
|
56 | - * @return void |
|
57 | - */ |
|
58 | - public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) |
|
59 | - { |
|
60 | - $tokens = $phpcsFile->getTokens(); |
|
49 | + /** |
|
50 | + * Processes this test, when one of its tokens is encountered. |
|
51 | + * |
|
52 | + * @param PHP_CodeSniffer_File $phpcsFile The file being scanned. |
|
53 | + * @param int $stackPtr The position of the current token |
|
54 | + * in the stack passed in $tokens. |
|
55 | + * |
|
56 | + * @return void |
|
57 | + */ |
|
58 | + public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) |
|
59 | + { |
|
60 | + $tokens = $phpcsFile->getTokens(); |
|
61 | 61 | |
62 | - // Check if the next non whitespace token is a string. |
|
63 | - $index = $phpcsFile->findNext(T_WHITESPACE, ($stackPtr + 1), null, true); |
|
64 | - if ($tokens[$index]['code'] !== T_CONSTANT_ENCAPSED_STRING) { |
|
65 | - return; |
|
66 | - } |
|
62 | + // Check if the next non whitespace token is a string. |
|
63 | + $index = $phpcsFile->findNext(T_WHITESPACE, ($stackPtr + 1), null, true); |
|
64 | + if ($tokens[$index]['code'] !== T_CONSTANT_ENCAPSED_STRING) { |
|
65 | + return; |
|
66 | + } |
|
67 | 67 | |
68 | - // Make sure it is the only thing in the square brackets. |
|
69 | - $next = $phpcsFile->findNext(T_WHITESPACE, ($index + 1), null, true); |
|
70 | - if ($tokens[$next]['code'] !== T_CLOSE_SQUARE_BRACKET) { |
|
71 | - return; |
|
72 | - } |
|
68 | + // Make sure it is the only thing in the square brackets. |
|
69 | + $next = $phpcsFile->findNext(T_WHITESPACE, ($index + 1), null, true); |
|
70 | + if ($tokens[$next]['code'] !== T_CLOSE_SQUARE_BRACKET) { |
|
71 | + return; |
|
72 | + } |
|
73 | 73 | |
74 | - // Allow indexes that have dots in them because we can't write |
|
75 | - // them in dot notation. |
|
76 | - $content = trim($tokens[$index]['content'], '"\' '); |
|
77 | - if (strpos($content, '.') !== false) { |
|
78 | - return; |
|
79 | - } |
|
74 | + // Allow indexes that have dots in them because we can't write |
|
75 | + // them in dot notation. |
|
76 | + $content = trim($tokens[$index]['content'], '"\' '); |
|
77 | + if (strpos($content, '.') !== false) { |
|
78 | + return; |
|
79 | + } |
|
80 | 80 | |
81 | - // Also ignore reserved words. |
|
82 | - if ($content === 'super') { |
|
83 | - return; |
|
84 | - } |
|
81 | + // Also ignore reserved words. |
|
82 | + if ($content === 'super') { |
|
83 | + return; |
|
84 | + } |
|
85 | 85 | |
86 | - // Token before the opening square bracket cannot be a var name. |
|
87 | - $prev = $phpcsFile->findPrevious(T_WHITESPACE, ($stackPtr - 1), null, true); |
|
88 | - if ($tokens[$prev]['code'] === T_STRING) { |
|
89 | - $error = 'Object indexes must be written in dot notation'; |
|
90 | - $phpcsFile->addError($error, $prev, 'Found'); |
|
91 | - } |
|
86 | + // Token before the opening square bracket cannot be a var name. |
|
87 | + $prev = $phpcsFile->findPrevious(T_WHITESPACE, ($stackPtr - 1), null, true); |
|
88 | + if ($tokens[$prev]['code'] === T_STRING) { |
|
89 | + $error = 'Object indexes must be written in dot notation'; |
|
90 | + $phpcsFile->addError($error, $prev, 'Found'); |
|
91 | + } |
|
92 | 92 | |
93 | - }//end process() |
|
93 | + }//end process() |
|
94 | 94 | |
95 | 95 | |
96 | 96 | }//end class |
@@ -31,7 +31,7 @@ discard block |
||
31 | 31 | * |
32 | 32 | * @var array |
33 | 33 | */ |
34 | - public $supportedTokenizers = array('JS'); |
|
34 | + public $supportedTokenizers = array( 'JS' ); |
|
35 | 35 | |
36 | 36 | |
37 | 37 | /** |
@@ -41,7 +41,7 @@ discard block |
||
41 | 41 | */ |
42 | 42 | public function register() |
43 | 43 | { |
44 | - return array(T_OPEN_SQUARE_BRACKET); |
|
44 | + return array( T_OPEN_SQUARE_BRACKET ); |
|
45 | 45 | |
46 | 46 | }//end register() |
47 | 47 | |
@@ -55,39 +55,39 @@ discard block |
||
55 | 55 | * |
56 | 56 | * @return void |
57 | 57 | */ |
58 | - public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) |
|
58 | + public function process( PHP_CodeSniffer_File $phpcsFile, $stackPtr ) |
|
59 | 59 | { |
60 | 60 | $tokens = $phpcsFile->getTokens(); |
61 | 61 | |
62 | 62 | // Check if the next non whitespace token is a string. |
63 | - $index = $phpcsFile->findNext(T_WHITESPACE, ($stackPtr + 1), null, true); |
|
64 | - if ($tokens[$index]['code'] !== T_CONSTANT_ENCAPSED_STRING) { |
|
63 | + $index = $phpcsFile->findNext( T_WHITESPACE, ( $stackPtr + 1 ), null, true ); |
|
64 | + if ( $tokens[ $index ][ 'code' ] !== T_CONSTANT_ENCAPSED_STRING ) { |
|
65 | 65 | return; |
66 | 66 | } |
67 | 67 | |
68 | 68 | // Make sure it is the only thing in the square brackets. |
69 | - $next = $phpcsFile->findNext(T_WHITESPACE, ($index + 1), null, true); |
|
70 | - if ($tokens[$next]['code'] !== T_CLOSE_SQUARE_BRACKET) { |
|
69 | + $next = $phpcsFile->findNext( T_WHITESPACE, ( $index + 1 ), null, true ); |
|
70 | + if ( $tokens[ $next ][ 'code' ] !== T_CLOSE_SQUARE_BRACKET ) { |
|
71 | 71 | return; |
72 | 72 | } |
73 | 73 | |
74 | 74 | // Allow indexes that have dots in them because we can't write |
75 | 75 | // them in dot notation. |
76 | - $content = trim($tokens[$index]['content'], '"\' '); |
|
77 | - if (strpos($content, '.') !== false) { |
|
76 | + $content = trim( $tokens[ $index ][ 'content' ], '"\' ' ); |
|
77 | + if ( strpos( $content, '.' ) !== false ) { |
|
78 | 78 | return; |
79 | 79 | } |
80 | 80 | |
81 | 81 | // Also ignore reserved words. |
82 | - if ($content === 'super') { |
|
82 | + if ( $content === 'super' ) { |
|
83 | 83 | return; |
84 | 84 | } |
85 | 85 | |
86 | 86 | // Token before the opening square bracket cannot be a var name. |
87 | - $prev = $phpcsFile->findPrevious(T_WHITESPACE, ($stackPtr - 1), null, true); |
|
88 | - if ($tokens[$prev]['code'] === T_STRING) { |
|
87 | + $prev = $phpcsFile->findPrevious( T_WHITESPACE, ( $stackPtr - 1 ), null, true ); |
|
88 | + if ( $tokens[ $prev ][ 'code' ] === T_STRING ) { |
|
89 | 89 | $error = 'Object indexes must be written in dot notation'; |
90 | - $phpcsFile->addError($error, $prev, 'Found'); |
|
90 | + $phpcsFile->addError( $error, $prev, 'Found' ); |
|
91 | 91 | } |
92 | 92 | |
93 | 93 | }//end process() |
@@ -23,8 +23,7 @@ discard block |
||
23 | 23 | * @version Release: @package_version@ |
24 | 24 | * @link http://pear.php.net/package/PHP_CodeSniffer |
25 | 25 | */ |
26 | -class Squiz_Sniffs_Objects_DisallowObjectStringIndexSniff implements PHP_CodeSniffer_Sniff |
|
27 | -{ |
|
26 | +class Squiz_Sniffs_Objects_DisallowObjectStringIndexSniff implements PHP_CodeSniffer_Sniff { |
|
28 | 27 | |
29 | 28 | /** |
30 | 29 | * A list of tokenizers this sniff supports. |
@@ -39,8 +38,7 @@ discard block |
||
39 | 38 | * |
40 | 39 | * @return array |
41 | 40 | */ |
42 | - public function register() |
|
43 | - { |
|
41 | + public function register() { |
|
44 | 42 | return array(T_OPEN_SQUARE_BRACKET); |
45 | 43 | |
46 | 44 | }//end register() |
@@ -55,8 +53,7 @@ discard block |
||
55 | 53 | * |
56 | 54 | * @return void |
57 | 55 | */ |
58 | - public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) |
|
59 | - { |
|
56 | + public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) { |
|
60 | 57 | $tokens = $phpcsFile->getTokens(); |
61 | 58 | |
62 | 59 | // Check if the next non whitespace token is a string. |
@@ -39,7 +39,7 @@ |
||
39 | 39 | /** |
40 | 40 | * Registers the token types that this sniff wishes to listen to. |
41 | 41 | * |
42 | - * @return array |
|
42 | + * @return string[] |
|
43 | 43 | */ |
44 | 44 | public function register() |
45 | 45 | { |
@@ -28,49 +28,49 @@ |
||
28 | 28 | class Squiz_Sniffs_Objects_ObjectMemberCommaSniff implements PHP_CodeSniffer_Sniff |
29 | 29 | { |
30 | 30 | |
31 | - /** |
|
32 | - * A list of tokenizers this sniff supports. |
|
33 | - * |
|
34 | - * @var array |
|
35 | - */ |
|
36 | - public $supportedTokenizers = array('JS'); |
|
31 | + /** |
|
32 | + * A list of tokenizers this sniff supports. |
|
33 | + * |
|
34 | + * @var array |
|
35 | + */ |
|
36 | + public $supportedTokenizers = array('JS'); |
|
37 | 37 | |
38 | 38 | |
39 | - /** |
|
40 | - * Registers the token types that this sniff wishes to listen to. |
|
41 | - * |
|
42 | - * @return array |
|
43 | - */ |
|
44 | - public function register() |
|
45 | - { |
|
46 | - return array(T_CLOSE_OBJECT); |
|
39 | + /** |
|
40 | + * Registers the token types that this sniff wishes to listen to. |
|
41 | + * |
|
42 | + * @return array |
|
43 | + */ |
|
44 | + public function register() |
|
45 | + { |
|
46 | + return array(T_CLOSE_OBJECT); |
|
47 | 47 | |
48 | - }//end register() |
|
48 | + }//end register() |
|
49 | 49 | |
50 | 50 | |
51 | - /** |
|
52 | - * Process the tokens that this sniff is listening for. |
|
53 | - * |
|
54 | - * @param PHP_CodeSniffer_File $phpcsFile The file where the token was found. |
|
55 | - * @param int $stackPtr The position in the stack where |
|
56 | - * the token was found. |
|
57 | - * |
|
58 | - * @return void |
|
59 | - */ |
|
60 | - public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) |
|
61 | - { |
|
62 | - $tokens = $phpcsFile->getTokens(); |
|
51 | + /** |
|
52 | + * Process the tokens that this sniff is listening for. |
|
53 | + * |
|
54 | + * @param PHP_CodeSniffer_File $phpcsFile The file where the token was found. |
|
55 | + * @param int $stackPtr The position in the stack where |
|
56 | + * the token was found. |
|
57 | + * |
|
58 | + * @return void |
|
59 | + */ |
|
60 | + public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) |
|
61 | + { |
|
62 | + $tokens = $phpcsFile->getTokens(); |
|
63 | 63 | |
64 | - $prev = $phpcsFile->findPrevious(PHP_CodeSniffer_Tokens::$emptyTokens, ($stackPtr - 1), null, true); |
|
65 | - if ($tokens[$prev]['code'] === T_COMMA) { |
|
66 | - $error = 'Last member of object must not be followed by a comma'; |
|
67 | - $fix = $phpcsFile->addFixableError($error, $prev, 'Missing'); |
|
68 | - if ($fix === true) { |
|
69 | - $phpcsFile->fixer->replaceToken($prev, ''); |
|
70 | - } |
|
71 | - } |
|
64 | + $prev = $phpcsFile->findPrevious(PHP_CodeSniffer_Tokens::$emptyTokens, ($stackPtr - 1), null, true); |
|
65 | + if ($tokens[$prev]['code'] === T_COMMA) { |
|
66 | + $error = 'Last member of object must not be followed by a comma'; |
|
67 | + $fix = $phpcsFile->addFixableError($error, $prev, 'Missing'); |
|
68 | + if ($fix === true) { |
|
69 | + $phpcsFile->fixer->replaceToken($prev, ''); |
|
70 | + } |
|
71 | + } |
|
72 | 72 | |
73 | - }//end process() |
|
73 | + }//end process() |
|
74 | 74 | |
75 | 75 | |
76 | 76 | }//end class |
@@ -33,7 +33,7 @@ discard block |
||
33 | 33 | * |
34 | 34 | * @var array |
35 | 35 | */ |
36 | - public $supportedTokenizers = array('JS'); |
|
36 | + public $supportedTokenizers = array( 'JS' ); |
|
37 | 37 | |
38 | 38 | |
39 | 39 | /** |
@@ -43,7 +43,7 @@ discard block |
||
43 | 43 | */ |
44 | 44 | public function register() |
45 | 45 | { |
46 | - return array(T_CLOSE_OBJECT); |
|
46 | + return array( T_CLOSE_OBJECT ); |
|
47 | 47 | |
48 | 48 | }//end register() |
49 | 49 | |
@@ -57,16 +57,16 @@ discard block |
||
57 | 57 | * |
58 | 58 | * @return void |
59 | 59 | */ |
60 | - public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) |
|
60 | + public function process( PHP_CodeSniffer_File $phpcsFile, $stackPtr ) |
|
61 | 61 | { |
62 | 62 | $tokens = $phpcsFile->getTokens(); |
63 | 63 | |
64 | - $prev = $phpcsFile->findPrevious(PHP_CodeSniffer_Tokens::$emptyTokens, ($stackPtr - 1), null, true); |
|
65 | - if ($tokens[$prev]['code'] === T_COMMA) { |
|
64 | + $prev = $phpcsFile->findPrevious( PHP_CodeSniffer_Tokens::$emptyTokens, ( $stackPtr - 1 ), null, true ); |
|
65 | + if ( $tokens[ $prev ][ 'code' ] === T_COMMA ) { |
|
66 | 66 | $error = 'Last member of object must not be followed by a comma'; |
67 | - $fix = $phpcsFile->addFixableError($error, $prev, 'Missing'); |
|
68 | - if ($fix === true) { |
|
69 | - $phpcsFile->fixer->replaceToken($prev, ''); |
|
67 | + $fix = $phpcsFile->addFixableError( $error, $prev, 'Missing' ); |
|
68 | + if ( $fix === true ) { |
|
69 | + $phpcsFile->fixer->replaceToken( $prev, '' ); |
|
70 | 70 | } |
71 | 71 | } |
72 | 72 |
@@ -25,8 +25,7 @@ discard block |
||
25 | 25 | * @version Release: @package_version@ |
26 | 26 | * @link http://pear.php.net/package/PHP_CodeSniffer |
27 | 27 | */ |
28 | -class Squiz_Sniffs_Objects_ObjectMemberCommaSniff implements PHP_CodeSniffer_Sniff |
|
29 | -{ |
|
28 | +class Squiz_Sniffs_Objects_ObjectMemberCommaSniff implements PHP_CodeSniffer_Sniff { |
|
30 | 29 | |
31 | 30 | /** |
32 | 31 | * A list of tokenizers this sniff supports. |
@@ -41,8 +40,7 @@ discard block |
||
41 | 40 | * |
42 | 41 | * @return array |
43 | 42 | */ |
44 | - public function register() |
|
45 | - { |
|
43 | + public function register() { |
|
46 | 44 | return array(T_CLOSE_OBJECT); |
47 | 45 | |
48 | 46 | }//end register() |
@@ -57,8 +55,7 @@ discard block |
||
57 | 55 | * |
58 | 56 | * @return void |
59 | 57 | */ |
60 | - public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) |
|
61 | - { |
|
58 | + public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) { |
|
62 | 59 | $tokens = $phpcsFile->getTokens(); |
63 | 60 | |
64 | 61 | $prev = $phpcsFile->findPrevious(PHP_CodeSniffer_Tokens::$emptyTokens, ($stackPtr - 1), null, true); |
@@ -34,7 +34,7 @@ |
||
34 | 34 | /** |
35 | 35 | * Returns an array of tokens this test wants to listen for. |
36 | 36 | * |
37 | - * @return array |
|
37 | + * @return integer[] |
|
38 | 38 | */ |
39 | 39 | public function register() |
40 | 40 | { |
@@ -31,375 +31,375 @@ |
||
31 | 31 | { |
32 | 32 | |
33 | 33 | |
34 | - /** |
|
35 | - * Returns an array of tokens this test wants to listen for. |
|
36 | - * |
|
37 | - * @return array |
|
38 | - */ |
|
39 | - public function register() |
|
40 | - { |
|
41 | - return array(T_OPEN_TAG); |
|
42 | - |
|
43 | - }//end register() |
|
44 | - |
|
45 | - |
|
46 | - /** |
|
47 | - * Processes this test, when one of its tokens is encountered. |
|
48 | - * |
|
49 | - * @param PHP_CodeSniffer_File $phpcsFile The file being scanned. |
|
50 | - * @param int $stackPtr The position of the current token in the |
|
51 | - * stack passed in $tokens. |
|
52 | - * |
|
53 | - * @return void |
|
54 | - */ |
|
55 | - public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) |
|
56 | - { |
|
57 | - $tokens = $phpcsFile->getTokens(); |
|
58 | - |
|
59 | - // If the close php tag is on the same line as the opening |
|
60 | - // then we have an inline embedded PHP block. |
|
61 | - $closeTag = $phpcsFile->findNext(T_CLOSE_TAG, $stackPtr); |
|
62 | - if ($closeTag === false || $tokens[$stackPtr]['line'] !== $tokens[$closeTag]['line']) { |
|
63 | - $this->_validateMultilineEmbeddedPhp($phpcsFile, $stackPtr); |
|
64 | - } else { |
|
65 | - $this->_validateInlineEmbeddedPhp($phpcsFile, $stackPtr); |
|
66 | - } |
|
67 | - |
|
68 | - }//end process() |
|
69 | - |
|
70 | - |
|
71 | - /** |
|
72 | - * Validates embedded PHP that exists on multiple lines. |
|
73 | - * |
|
74 | - * @param PHP_CodeSniffer_File $phpcsFile The file being scanned. |
|
75 | - * @param int $stackPtr The position of the current token in the |
|
76 | - * stack passed in $tokens. |
|
77 | - * |
|
78 | - * @return void |
|
79 | - */ |
|
80 | - private function _validateMultilineEmbeddedPhp(PHP_CodeSniffer_File $phpcsFile, $stackPtr) |
|
81 | - { |
|
82 | - $tokens = $phpcsFile->getTokens(); |
|
83 | - |
|
84 | - $prevTag = $phpcsFile->findPrevious(T_OPEN_TAG, ($stackPtr - 1)); |
|
85 | - if ($prevTag === false) { |
|
86 | - // This is the first open tag. |
|
87 | - return; |
|
88 | - } |
|
89 | - |
|
90 | - $firstContent = $phpcsFile->findNext(T_WHITESPACE, ($stackPtr + 1), null, true); |
|
91 | - $closingTag = $phpcsFile->findNext(T_CLOSE_TAG, $stackPtr); |
|
92 | - if ($closingTag !== false) { |
|
93 | - $nextContent = $phpcsFile->findNext(T_WHITESPACE, ($closingTag + 1), $phpcsFile->numTokens, true); |
|
94 | - if ($nextContent === false) { |
|
95 | - // Final closing tag. It will be handled elsewhere. |
|
96 | - return; |
|
97 | - } |
|
98 | - |
|
99 | - // We have an opening and a closing tag, that lie within other content. |
|
100 | - if ($firstContent === $closingTag) { |
|
101 | - $error = 'Empty embedded PHP tag found'; |
|
102 | - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'Empty'); |
|
103 | - if ($fix === true) { |
|
104 | - $phpcsFile->fixer->beginChangeset(); |
|
105 | - for ($i = $stackPtr; $i <= $closingTag; $i++) { |
|
106 | - $phpcsFile->fixer->replaceToken($i, ''); |
|
107 | - } |
|
108 | - |
|
109 | - $phpcsFile->fixer->endChangeset(); |
|
110 | - } |
|
111 | - |
|
112 | - return; |
|
113 | - } |
|
114 | - }//end if |
|
115 | - |
|
116 | - if ($tokens[$firstContent]['line'] === $tokens[$stackPtr]['line']) { |
|
117 | - $error = 'Opening PHP tag must be on a line by itself'; |
|
118 | - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'ContentAfterOpen'); |
|
119 | - if ($fix === true) { |
|
120 | - $first = $phpcsFile->findFirstOnLine(T_WHITESPACE, $stackPtr, true); |
|
121 | - $padding = (strlen($tokens[$first]['content']) - strlen(ltrim($tokens[$first]['content']))); |
|
122 | - $phpcsFile->fixer->beginChangeset(); |
|
123 | - $phpcsFile->fixer->addNewline($stackPtr); |
|
124 | - $phpcsFile->fixer->addContent($stackPtr, str_repeat(' ', $padding)); |
|
125 | - $phpcsFile->fixer->endChangeset(); |
|
126 | - } |
|
127 | - } else { |
|
128 | - // Check the indent of the first line, except if it is a scope closer. |
|
129 | - if (isset($tokens[$firstContent]['scope_closer']) === false |
|
130 | - || $tokens[$firstContent]['scope_closer'] !== $firstContent |
|
131 | - ) { |
|
132 | - // Check for a blank line at the top. |
|
133 | - if ($tokens[$firstContent]['line'] > ($tokens[$stackPtr]['line'] + 1)) { |
|
134 | - // Find a token on the blank line to throw the error on. |
|
135 | - $i = $stackPtr; |
|
136 | - do { |
|
137 | - $i++; |
|
138 | - } while ($tokens[$i]['line'] !== ($tokens[$stackPtr]['line'] + 1)); |
|
139 | - |
|
140 | - $error = 'Blank line found at start of embedded PHP content'; |
|
141 | - $fix = $phpcsFile->addFixableError($error, $i, 'SpacingBefore'); |
|
142 | - if ($fix === true) { |
|
143 | - $phpcsFile->fixer->beginChangeset(); |
|
144 | - for ($i = ($stackPtr + 1); $i < $firstContent; $i++) { |
|
145 | - if ($tokens[$i]['line'] === $tokens[$firstContent]['line'] |
|
146 | - || $tokens[$i]['line'] === $tokens[$stackPtr]['line'] |
|
147 | - ) { |
|
148 | - continue; |
|
149 | - } |
|
150 | - |
|
151 | - $phpcsFile->fixer->replaceToken($i, ''); |
|
152 | - } |
|
153 | - |
|
154 | - $phpcsFile->fixer->endChangeset(); |
|
155 | - } |
|
156 | - }//end if |
|
157 | - |
|
158 | - $first = $phpcsFile->findFirstOnLine(T_WHITESPACE, $stackPtr); |
|
159 | - if ($first === false) { |
|
160 | - $first = $phpcsFile->findFirstOnLine(T_INLINE_HTML, $stackPtr); |
|
161 | - $indent = (strlen($tokens[$first]['content']) - strlen(ltrim($tokens[$first]['content']))); |
|
162 | - } else { |
|
163 | - $indent = ($tokens[($first + 1)]['column'] - 1); |
|
164 | - } |
|
165 | - |
|
166 | - $contentColumn = ($tokens[$firstContent]['column'] - 1); |
|
167 | - if ($contentColumn !== $indent) { |
|
168 | - $error = 'First line of embedded PHP code must be indented %s spaces; %s found'; |
|
169 | - $data = array( |
|
170 | - $indent, |
|
171 | - $contentColumn, |
|
172 | - ); |
|
173 | - $fix = $phpcsFile->addFixableError($error, $firstContent, 'Indent', $data); |
|
174 | - if ($fix === true) { |
|
175 | - $padding = str_repeat(' ', $indent); |
|
176 | - if ($contentColumn === 0) { |
|
177 | - $phpcsFile->fixer->addContentBefore($firstContent, $padding); |
|
178 | - } else { |
|
179 | - $phpcsFile->fixer->replaceToken(($firstContent - 1), $padding); |
|
180 | - } |
|
181 | - } |
|
182 | - } |
|
183 | - }//end if |
|
184 | - }//end if |
|
185 | - |
|
186 | - $lastContent = $phpcsFile->findPrevious(T_WHITESPACE, ($stackPtr - 1), null, true); |
|
187 | - if ($tokens[$lastContent]['line'] === $tokens[$stackPtr]['line'] |
|
188 | - && trim($tokens[$lastContent]['content']) !== '' |
|
189 | - ) { |
|
190 | - $error = 'Opening PHP tag must be on a line by itself'; |
|
191 | - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'ContentBeforeOpen'); |
|
192 | - if ($fix === true) { |
|
193 | - $first = $phpcsFile->findFirstOnLine(T_WHITESPACE, $stackPtr); |
|
194 | - if ($first === false) { |
|
195 | - $first = $phpcsFile->findFirstOnLine(T_INLINE_HTML, $stackPtr); |
|
196 | - $padding = (strlen($tokens[$first]['content']) - strlen(ltrim($tokens[$first]['content']))); |
|
197 | - } else { |
|
198 | - $padding = ($tokens[($first + 1)]['column'] - 1); |
|
199 | - } |
|
200 | - |
|
201 | - $phpcsFile->fixer->addContentBefore($stackPtr, $phpcsFile->eolChar.str_repeat(' ', $padding)); |
|
202 | - } |
|
203 | - } else { |
|
204 | - // Find the first token on the first non-empty line we find. |
|
205 | - for ($first = ($stackPtr - 1); $first > 0; $first--) { |
|
206 | - if ($tokens[$first]['line'] === $tokens[$stackPtr]['line']) { |
|
207 | - continue; |
|
208 | - } else if (trim($tokens[$first]['content']) !== '') { |
|
209 | - $first = $phpcsFile->findFirstOnLine(array(), $first, true); |
|
210 | - break; |
|
211 | - } |
|
212 | - } |
|
213 | - |
|
214 | - $expected = 0; |
|
215 | - if ($tokens[$first]['code'] === T_INLINE_HTML |
|
216 | - && trim($tokens[$first]['content']) !== '' |
|
217 | - ) { |
|
218 | - $expected = (strlen($tokens[$first]['content']) - strlen(ltrim($tokens[$first]['content']))); |
|
219 | - } else if ($tokens[$first]['code'] === T_WHITESPACE) { |
|
220 | - $expected = ($tokens[($first + 1)]['column'] - 1); |
|
221 | - } |
|
222 | - |
|
223 | - $expected += 4; |
|
224 | - $found = ($tokens[$stackPtr]['column'] - 1); |
|
225 | - if ($found > $expected) { |
|
226 | - $error = 'Opening PHP tag indent incorrect; expected no more than %s spaces but found %s'; |
|
227 | - $data = array( |
|
228 | - $expected, |
|
229 | - $found, |
|
230 | - ); |
|
231 | - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'OpenTagIndent', $data); |
|
232 | - if ($fix === true) { |
|
233 | - $phpcsFile->fixer->replaceToken(($stackPtr - 1), str_repeat(' ', $expected)); |
|
234 | - } |
|
235 | - } |
|
236 | - }//end if |
|
237 | - |
|
238 | - if ($closingTag === false) { |
|
239 | - return; |
|
240 | - } |
|
241 | - |
|
242 | - $lastContent = $phpcsFile->findPrevious(T_WHITESPACE, ($closingTag - 1), ($stackPtr + 1), true); |
|
243 | - $nextContent = $phpcsFile->findNext(T_WHITESPACE, ($closingTag + 1), null, true); |
|
244 | - |
|
245 | - if ($tokens[$lastContent]['line'] === $tokens[$closingTag]['line']) { |
|
246 | - $error = 'Closing PHP tag must be on a line by itself'; |
|
247 | - $fix = $phpcsFile->addFixableError($error, $closingTag, 'ContentBeforeEnd'); |
|
248 | - if ($fix === true) { |
|
249 | - $first = $phpcsFile->findFirstOnLine(T_WHITESPACE, $closingTag, true); |
|
250 | - $phpcsFile->fixer->beginChangeset(); |
|
251 | - $phpcsFile->fixer->addContentBefore($closingTag, str_repeat(' ', ($tokens[$first]['column'] - 1))); |
|
252 | - $phpcsFile->fixer->addNewlineBefore($closingTag); |
|
253 | - $phpcsFile->fixer->endChangeset(); |
|
254 | - } |
|
255 | - } else if ($tokens[$nextContent]['line'] === $tokens[$closingTag]['line']) { |
|
256 | - $error = 'Closing PHP tag must be on a line by itself'; |
|
257 | - $fix = $phpcsFile->addFixableError($error, $closingTag, 'ContentAfterEnd'); |
|
258 | - if ($fix === true) { |
|
259 | - $first = $phpcsFile->findFirstOnLine(T_WHITESPACE, $closingTag, true); |
|
260 | - $phpcsFile->fixer->beginChangeset(); |
|
261 | - $phpcsFile->fixer->addNewline($closingTag); |
|
262 | - $phpcsFile->fixer->addContent($closingTag, str_repeat(' ', ($tokens[$first]['column'] - 1))); |
|
263 | - $phpcsFile->fixer->endChangeset(); |
|
264 | - } |
|
265 | - }//end if |
|
266 | - |
|
267 | - $next = $phpcsFile->findNext(T_OPEN_TAG, ($closingTag + 1)); |
|
268 | - if ($next === false) { |
|
269 | - return; |
|
270 | - } |
|
271 | - |
|
272 | - // Check for a blank line at the bottom. |
|
273 | - if ((isset($tokens[$lastContent]['scope_closer']) === false |
|
274 | - || $tokens[$lastContent]['scope_closer'] !== $lastContent) |
|
275 | - && $tokens[$lastContent]['line'] < ($tokens[$closingTag]['line'] - 1) |
|
276 | - ) { |
|
277 | - // Find a token on the blank line to throw the error on. |
|
278 | - $i = $closingTag; |
|
279 | - do { |
|
280 | - $i--; |
|
281 | - } while ($tokens[$i]['line'] !== ($tokens[$closingTag]['line'] - 1)); |
|
282 | - |
|
283 | - $error = 'Blank line found at end of embedded PHP content'; |
|
284 | - $fix = $phpcsFile->addFixableError($error, $i, 'SpacingAfter'); |
|
285 | - if ($fix === true) { |
|
286 | - $phpcsFile->fixer->beginChangeset(); |
|
287 | - for ($i = ($lastContent + 1); $i < $closingTag; $i++) { |
|
288 | - if ($tokens[$i]['line'] === $tokens[$lastContent]['line'] |
|
289 | - || $tokens[$i]['line'] === $tokens[$closingTag]['line'] |
|
290 | - ) { |
|
291 | - continue; |
|
292 | - } |
|
293 | - |
|
294 | - $phpcsFile->fixer->replaceToken($i, ''); |
|
295 | - } |
|
296 | - |
|
297 | - $phpcsFile->fixer->endChangeset(); |
|
298 | - } |
|
299 | - }//end if |
|
300 | - |
|
301 | - }//end _validateMultilineEmbeddedPhp() |
|
302 | - |
|
303 | - |
|
304 | - /** |
|
305 | - * Validates embedded PHP that exists on one line. |
|
306 | - * |
|
307 | - * @param PHP_CodeSniffer_File $phpcsFile The file being scanned. |
|
308 | - * @param int $stackPtr The position of the current token in the |
|
309 | - * stack passed in $tokens. |
|
310 | - * |
|
311 | - * @return void |
|
312 | - */ |
|
313 | - private function _validateInlineEmbeddedPhp(PHP_CodeSniffer_File $phpcsFile, $stackPtr) |
|
314 | - { |
|
315 | - $tokens = $phpcsFile->getTokens(); |
|
316 | - |
|
317 | - // We only want one line PHP sections, so return if the closing tag is |
|
318 | - // on the next line. |
|
319 | - $closeTag = $phpcsFile->findNext(T_CLOSE_TAG, $stackPtr, null, false); |
|
320 | - if ($tokens[$stackPtr]['line'] !== $tokens[$closeTag]['line']) { |
|
321 | - return; |
|
322 | - } |
|
323 | - |
|
324 | - // Check that there is one, and only one space at the start of the statement. |
|
325 | - $firstContent = $phpcsFile->findNext(T_WHITESPACE, ($stackPtr + 1), ($closeTag - 1), true); |
|
326 | - |
|
327 | - if ($firstContent === false) { |
|
328 | - $error = 'Empty embedded PHP tag found'; |
|
329 | - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'Empty'); |
|
330 | - if ($fix === true) { |
|
331 | - $phpcsFile->fixer->beginChangeset(); |
|
332 | - for ($i = $stackPtr; $i <= $closeTag; $i++) { |
|
333 | - $phpcsFile->fixer->replaceToken($i, ''); |
|
334 | - } |
|
335 | - |
|
336 | - $phpcsFile->fixer->endChangeset(); |
|
337 | - } |
|
338 | - |
|
339 | - return; |
|
340 | - } |
|
341 | - |
|
342 | - // The open tag token always contains a single space after it. |
|
343 | - $leadingSpace = 1; |
|
344 | - if ($tokens[($stackPtr + 1)]['code'] === T_WHITESPACE) { |
|
345 | - $leadingSpace = (strlen($tokens[($stackPtr + 1)]['content']) + 1); |
|
346 | - } |
|
347 | - |
|
348 | - if ($leadingSpace !== 1) { |
|
349 | - $error = 'Expected 1 space after opening PHP tag; %s found'; |
|
350 | - $data = array($leadingSpace); |
|
351 | - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'SpacingAfterOpen', $data); |
|
352 | - if ($fix === true) { |
|
353 | - $phpcsFile->fixer->replaceToken(($stackPtr + 1), ''); |
|
354 | - } |
|
355 | - } |
|
356 | - |
|
357 | - $prev = $phpcsFile->findPrevious(PHP_CodeSniffer_Tokens::$emptyTokens, ($closeTag - 1), $stackPtr, true); |
|
358 | - if ((isset($tokens[$prev]['scope_opener']) === false |
|
359 | - || $tokens[$prev]['scope_opener'] !== $prev) |
|
360 | - && (isset($tokens[$prev]['scope_closer']) === false |
|
361 | - || $tokens[$prev]['scope_closer'] !== $prev) |
|
362 | - && $tokens[$prev]['code'] !== T_SEMICOLON |
|
363 | - ) { |
|
364 | - $error = 'Inline PHP statement must end with a semicolon'; |
|
365 | - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'NoSemicolon'); |
|
366 | - if ($fix === true) { |
|
367 | - $phpcsFile->fixer->addContent($prev, ';'); |
|
368 | - } |
|
369 | - } else if ($tokens[$prev]['code'] === T_SEMICOLON) { |
|
370 | - $statementCount = 1; |
|
371 | - for ($i = ($stackPtr + 1); $i < $prev; $i++) { |
|
372 | - if ($tokens[$i]['code'] === T_SEMICOLON) { |
|
373 | - $statementCount++; |
|
374 | - } |
|
375 | - } |
|
376 | - |
|
377 | - if ($statementCount > 1) { |
|
378 | - $error = 'Inline PHP statement must contain a single statement; %s found'; |
|
379 | - $data = array($statementCount); |
|
380 | - $phpcsFile->addError($error, $stackPtr, 'MultipleStatements', $data); |
|
381 | - } |
|
382 | - } |
|
383 | - |
|
384 | - $trailingSpace = 0; |
|
385 | - if ($tokens[($closeTag - 1)]['code'] === T_WHITESPACE) { |
|
386 | - $trailingSpace = strlen($tokens[($closeTag - 1)]['content']); |
|
387 | - } |
|
388 | - |
|
389 | - if ($trailingSpace !== 1) { |
|
390 | - $error = 'Expected 1 space before closing PHP tag; %s found'; |
|
391 | - $data = array($trailingSpace); |
|
392 | - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'SpacingBeforeClose', $data); |
|
393 | - if ($fix === true) { |
|
394 | - if ($trailingSpace === 0) { |
|
395 | - $phpcsFile->fixer->addContentBefore($closeTag, ' '); |
|
396 | - } else { |
|
397 | - $phpcsFile->fixer->replaceToken(($closeTag - 1), ' '); |
|
398 | - } |
|
399 | - } |
|
400 | - } |
|
401 | - |
|
402 | - }//end _validateInlineEmbeddedPhp() |
|
34 | + /** |
|
35 | + * Returns an array of tokens this test wants to listen for. |
|
36 | + * |
|
37 | + * @return array |
|
38 | + */ |
|
39 | + public function register() |
|
40 | + { |
|
41 | + return array(T_OPEN_TAG); |
|
42 | + |
|
43 | + }//end register() |
|
44 | + |
|
45 | + |
|
46 | + /** |
|
47 | + * Processes this test, when one of its tokens is encountered. |
|
48 | + * |
|
49 | + * @param PHP_CodeSniffer_File $phpcsFile The file being scanned. |
|
50 | + * @param int $stackPtr The position of the current token in the |
|
51 | + * stack passed in $tokens. |
|
52 | + * |
|
53 | + * @return void |
|
54 | + */ |
|
55 | + public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) |
|
56 | + { |
|
57 | + $tokens = $phpcsFile->getTokens(); |
|
58 | + |
|
59 | + // If the close php tag is on the same line as the opening |
|
60 | + // then we have an inline embedded PHP block. |
|
61 | + $closeTag = $phpcsFile->findNext(T_CLOSE_TAG, $stackPtr); |
|
62 | + if ($closeTag === false || $tokens[$stackPtr]['line'] !== $tokens[$closeTag]['line']) { |
|
63 | + $this->_validateMultilineEmbeddedPhp($phpcsFile, $stackPtr); |
|
64 | + } else { |
|
65 | + $this->_validateInlineEmbeddedPhp($phpcsFile, $stackPtr); |
|
66 | + } |
|
67 | + |
|
68 | + }//end process() |
|
69 | + |
|
70 | + |
|
71 | + /** |
|
72 | + * Validates embedded PHP that exists on multiple lines. |
|
73 | + * |
|
74 | + * @param PHP_CodeSniffer_File $phpcsFile The file being scanned. |
|
75 | + * @param int $stackPtr The position of the current token in the |
|
76 | + * stack passed in $tokens. |
|
77 | + * |
|
78 | + * @return void |
|
79 | + */ |
|
80 | + private function _validateMultilineEmbeddedPhp(PHP_CodeSniffer_File $phpcsFile, $stackPtr) |
|
81 | + { |
|
82 | + $tokens = $phpcsFile->getTokens(); |
|
83 | + |
|
84 | + $prevTag = $phpcsFile->findPrevious(T_OPEN_TAG, ($stackPtr - 1)); |
|
85 | + if ($prevTag === false) { |
|
86 | + // This is the first open tag. |
|
87 | + return; |
|
88 | + } |
|
89 | + |
|
90 | + $firstContent = $phpcsFile->findNext(T_WHITESPACE, ($stackPtr + 1), null, true); |
|
91 | + $closingTag = $phpcsFile->findNext(T_CLOSE_TAG, $stackPtr); |
|
92 | + if ($closingTag !== false) { |
|
93 | + $nextContent = $phpcsFile->findNext(T_WHITESPACE, ($closingTag + 1), $phpcsFile->numTokens, true); |
|
94 | + if ($nextContent === false) { |
|
95 | + // Final closing tag. It will be handled elsewhere. |
|
96 | + return; |
|
97 | + } |
|
98 | + |
|
99 | + // We have an opening and a closing tag, that lie within other content. |
|
100 | + if ($firstContent === $closingTag) { |
|
101 | + $error = 'Empty embedded PHP tag found'; |
|
102 | + $fix = $phpcsFile->addFixableError($error, $stackPtr, 'Empty'); |
|
103 | + if ($fix === true) { |
|
104 | + $phpcsFile->fixer->beginChangeset(); |
|
105 | + for ($i = $stackPtr; $i <= $closingTag; $i++) { |
|
106 | + $phpcsFile->fixer->replaceToken($i, ''); |
|
107 | + } |
|
108 | + |
|
109 | + $phpcsFile->fixer->endChangeset(); |
|
110 | + } |
|
111 | + |
|
112 | + return; |
|
113 | + } |
|
114 | + }//end if |
|
115 | + |
|
116 | + if ($tokens[$firstContent]['line'] === $tokens[$stackPtr]['line']) { |
|
117 | + $error = 'Opening PHP tag must be on a line by itself'; |
|
118 | + $fix = $phpcsFile->addFixableError($error, $stackPtr, 'ContentAfterOpen'); |
|
119 | + if ($fix === true) { |
|
120 | + $first = $phpcsFile->findFirstOnLine(T_WHITESPACE, $stackPtr, true); |
|
121 | + $padding = (strlen($tokens[$first]['content']) - strlen(ltrim($tokens[$first]['content']))); |
|
122 | + $phpcsFile->fixer->beginChangeset(); |
|
123 | + $phpcsFile->fixer->addNewline($stackPtr); |
|
124 | + $phpcsFile->fixer->addContent($stackPtr, str_repeat(' ', $padding)); |
|
125 | + $phpcsFile->fixer->endChangeset(); |
|
126 | + } |
|
127 | + } else { |
|
128 | + // Check the indent of the first line, except if it is a scope closer. |
|
129 | + if (isset($tokens[$firstContent]['scope_closer']) === false |
|
130 | + || $tokens[$firstContent]['scope_closer'] !== $firstContent |
|
131 | + ) { |
|
132 | + // Check for a blank line at the top. |
|
133 | + if ($tokens[$firstContent]['line'] > ($tokens[$stackPtr]['line'] + 1)) { |
|
134 | + // Find a token on the blank line to throw the error on. |
|
135 | + $i = $stackPtr; |
|
136 | + do { |
|
137 | + $i++; |
|
138 | + } while ($tokens[$i]['line'] !== ($tokens[$stackPtr]['line'] + 1)); |
|
139 | + |
|
140 | + $error = 'Blank line found at start of embedded PHP content'; |
|
141 | + $fix = $phpcsFile->addFixableError($error, $i, 'SpacingBefore'); |
|
142 | + if ($fix === true) { |
|
143 | + $phpcsFile->fixer->beginChangeset(); |
|
144 | + for ($i = ($stackPtr + 1); $i < $firstContent; $i++) { |
|
145 | + if ($tokens[$i]['line'] === $tokens[$firstContent]['line'] |
|
146 | + || $tokens[$i]['line'] === $tokens[$stackPtr]['line'] |
|
147 | + ) { |
|
148 | + continue; |
|
149 | + } |
|
150 | + |
|
151 | + $phpcsFile->fixer->replaceToken($i, ''); |
|
152 | + } |
|
153 | + |
|
154 | + $phpcsFile->fixer->endChangeset(); |
|
155 | + } |
|
156 | + }//end if |
|
157 | + |
|
158 | + $first = $phpcsFile->findFirstOnLine(T_WHITESPACE, $stackPtr); |
|
159 | + if ($first === false) { |
|
160 | + $first = $phpcsFile->findFirstOnLine(T_INLINE_HTML, $stackPtr); |
|
161 | + $indent = (strlen($tokens[$first]['content']) - strlen(ltrim($tokens[$first]['content']))); |
|
162 | + } else { |
|
163 | + $indent = ($tokens[($first + 1)]['column'] - 1); |
|
164 | + } |
|
165 | + |
|
166 | + $contentColumn = ($tokens[$firstContent]['column'] - 1); |
|
167 | + if ($contentColumn !== $indent) { |
|
168 | + $error = 'First line of embedded PHP code must be indented %s spaces; %s found'; |
|
169 | + $data = array( |
|
170 | + $indent, |
|
171 | + $contentColumn, |
|
172 | + ); |
|
173 | + $fix = $phpcsFile->addFixableError($error, $firstContent, 'Indent', $data); |
|
174 | + if ($fix === true) { |
|
175 | + $padding = str_repeat(' ', $indent); |
|
176 | + if ($contentColumn === 0) { |
|
177 | + $phpcsFile->fixer->addContentBefore($firstContent, $padding); |
|
178 | + } else { |
|
179 | + $phpcsFile->fixer->replaceToken(($firstContent - 1), $padding); |
|
180 | + } |
|
181 | + } |
|
182 | + } |
|
183 | + }//end if |
|
184 | + }//end if |
|
185 | + |
|
186 | + $lastContent = $phpcsFile->findPrevious(T_WHITESPACE, ($stackPtr - 1), null, true); |
|
187 | + if ($tokens[$lastContent]['line'] === $tokens[$stackPtr]['line'] |
|
188 | + && trim($tokens[$lastContent]['content']) !== '' |
|
189 | + ) { |
|
190 | + $error = 'Opening PHP tag must be on a line by itself'; |
|
191 | + $fix = $phpcsFile->addFixableError($error, $stackPtr, 'ContentBeforeOpen'); |
|
192 | + if ($fix === true) { |
|
193 | + $first = $phpcsFile->findFirstOnLine(T_WHITESPACE, $stackPtr); |
|
194 | + if ($first === false) { |
|
195 | + $first = $phpcsFile->findFirstOnLine(T_INLINE_HTML, $stackPtr); |
|
196 | + $padding = (strlen($tokens[$first]['content']) - strlen(ltrim($tokens[$first]['content']))); |
|
197 | + } else { |
|
198 | + $padding = ($tokens[($first + 1)]['column'] - 1); |
|
199 | + } |
|
200 | + |
|
201 | + $phpcsFile->fixer->addContentBefore($stackPtr, $phpcsFile->eolChar.str_repeat(' ', $padding)); |
|
202 | + } |
|
203 | + } else { |
|
204 | + // Find the first token on the first non-empty line we find. |
|
205 | + for ($first = ($stackPtr - 1); $first > 0; $first--) { |
|
206 | + if ($tokens[$first]['line'] === $tokens[$stackPtr]['line']) { |
|
207 | + continue; |
|
208 | + } else if (trim($tokens[$first]['content']) !== '') { |
|
209 | + $first = $phpcsFile->findFirstOnLine(array(), $first, true); |
|
210 | + break; |
|
211 | + } |
|
212 | + } |
|
213 | + |
|
214 | + $expected = 0; |
|
215 | + if ($tokens[$first]['code'] === T_INLINE_HTML |
|
216 | + && trim($tokens[$first]['content']) !== '' |
|
217 | + ) { |
|
218 | + $expected = (strlen($tokens[$first]['content']) - strlen(ltrim($tokens[$first]['content']))); |
|
219 | + } else if ($tokens[$first]['code'] === T_WHITESPACE) { |
|
220 | + $expected = ($tokens[($first + 1)]['column'] - 1); |
|
221 | + } |
|
222 | + |
|
223 | + $expected += 4; |
|
224 | + $found = ($tokens[$stackPtr]['column'] - 1); |
|
225 | + if ($found > $expected) { |
|
226 | + $error = 'Opening PHP tag indent incorrect; expected no more than %s spaces but found %s'; |
|
227 | + $data = array( |
|
228 | + $expected, |
|
229 | + $found, |
|
230 | + ); |
|
231 | + $fix = $phpcsFile->addFixableError($error, $stackPtr, 'OpenTagIndent', $data); |
|
232 | + if ($fix === true) { |
|
233 | + $phpcsFile->fixer->replaceToken(($stackPtr - 1), str_repeat(' ', $expected)); |
|
234 | + } |
|
235 | + } |
|
236 | + }//end if |
|
237 | + |
|
238 | + if ($closingTag === false) { |
|
239 | + return; |
|
240 | + } |
|
241 | + |
|
242 | + $lastContent = $phpcsFile->findPrevious(T_WHITESPACE, ($closingTag - 1), ($stackPtr + 1), true); |
|
243 | + $nextContent = $phpcsFile->findNext(T_WHITESPACE, ($closingTag + 1), null, true); |
|
244 | + |
|
245 | + if ($tokens[$lastContent]['line'] === $tokens[$closingTag]['line']) { |
|
246 | + $error = 'Closing PHP tag must be on a line by itself'; |
|
247 | + $fix = $phpcsFile->addFixableError($error, $closingTag, 'ContentBeforeEnd'); |
|
248 | + if ($fix === true) { |
|
249 | + $first = $phpcsFile->findFirstOnLine(T_WHITESPACE, $closingTag, true); |
|
250 | + $phpcsFile->fixer->beginChangeset(); |
|
251 | + $phpcsFile->fixer->addContentBefore($closingTag, str_repeat(' ', ($tokens[$first]['column'] - 1))); |
|
252 | + $phpcsFile->fixer->addNewlineBefore($closingTag); |
|
253 | + $phpcsFile->fixer->endChangeset(); |
|
254 | + } |
|
255 | + } else if ($tokens[$nextContent]['line'] === $tokens[$closingTag]['line']) { |
|
256 | + $error = 'Closing PHP tag must be on a line by itself'; |
|
257 | + $fix = $phpcsFile->addFixableError($error, $closingTag, 'ContentAfterEnd'); |
|
258 | + if ($fix === true) { |
|
259 | + $first = $phpcsFile->findFirstOnLine(T_WHITESPACE, $closingTag, true); |
|
260 | + $phpcsFile->fixer->beginChangeset(); |
|
261 | + $phpcsFile->fixer->addNewline($closingTag); |
|
262 | + $phpcsFile->fixer->addContent($closingTag, str_repeat(' ', ($tokens[$first]['column'] - 1))); |
|
263 | + $phpcsFile->fixer->endChangeset(); |
|
264 | + } |
|
265 | + }//end if |
|
266 | + |
|
267 | + $next = $phpcsFile->findNext(T_OPEN_TAG, ($closingTag + 1)); |
|
268 | + if ($next === false) { |
|
269 | + return; |
|
270 | + } |
|
271 | + |
|
272 | + // Check for a blank line at the bottom. |
|
273 | + if ((isset($tokens[$lastContent]['scope_closer']) === false |
|
274 | + || $tokens[$lastContent]['scope_closer'] !== $lastContent) |
|
275 | + && $tokens[$lastContent]['line'] < ($tokens[$closingTag]['line'] - 1) |
|
276 | + ) { |
|
277 | + // Find a token on the blank line to throw the error on. |
|
278 | + $i = $closingTag; |
|
279 | + do { |
|
280 | + $i--; |
|
281 | + } while ($tokens[$i]['line'] !== ($tokens[$closingTag]['line'] - 1)); |
|
282 | + |
|
283 | + $error = 'Blank line found at end of embedded PHP content'; |
|
284 | + $fix = $phpcsFile->addFixableError($error, $i, 'SpacingAfter'); |
|
285 | + if ($fix === true) { |
|
286 | + $phpcsFile->fixer->beginChangeset(); |
|
287 | + for ($i = ($lastContent + 1); $i < $closingTag; $i++) { |
|
288 | + if ($tokens[$i]['line'] === $tokens[$lastContent]['line'] |
|
289 | + || $tokens[$i]['line'] === $tokens[$closingTag]['line'] |
|
290 | + ) { |
|
291 | + continue; |
|
292 | + } |
|
293 | + |
|
294 | + $phpcsFile->fixer->replaceToken($i, ''); |
|
295 | + } |
|
296 | + |
|
297 | + $phpcsFile->fixer->endChangeset(); |
|
298 | + } |
|
299 | + }//end if |
|
300 | + |
|
301 | + }//end _validateMultilineEmbeddedPhp() |
|
302 | + |
|
303 | + |
|
304 | + /** |
|
305 | + * Validates embedded PHP that exists on one line. |
|
306 | + * |
|
307 | + * @param PHP_CodeSniffer_File $phpcsFile The file being scanned. |
|
308 | + * @param int $stackPtr The position of the current token in the |
|
309 | + * stack passed in $tokens. |
|
310 | + * |
|
311 | + * @return void |
|
312 | + */ |
|
313 | + private function _validateInlineEmbeddedPhp(PHP_CodeSniffer_File $phpcsFile, $stackPtr) |
|
314 | + { |
|
315 | + $tokens = $phpcsFile->getTokens(); |
|
316 | + |
|
317 | + // We only want one line PHP sections, so return if the closing tag is |
|
318 | + // on the next line. |
|
319 | + $closeTag = $phpcsFile->findNext(T_CLOSE_TAG, $stackPtr, null, false); |
|
320 | + if ($tokens[$stackPtr]['line'] !== $tokens[$closeTag]['line']) { |
|
321 | + return; |
|
322 | + } |
|
323 | + |
|
324 | + // Check that there is one, and only one space at the start of the statement. |
|
325 | + $firstContent = $phpcsFile->findNext(T_WHITESPACE, ($stackPtr + 1), ($closeTag - 1), true); |
|
326 | + |
|
327 | + if ($firstContent === false) { |
|
328 | + $error = 'Empty embedded PHP tag found'; |
|
329 | + $fix = $phpcsFile->addFixableError($error, $stackPtr, 'Empty'); |
|
330 | + if ($fix === true) { |
|
331 | + $phpcsFile->fixer->beginChangeset(); |
|
332 | + for ($i = $stackPtr; $i <= $closeTag; $i++) { |
|
333 | + $phpcsFile->fixer->replaceToken($i, ''); |
|
334 | + } |
|
335 | + |
|
336 | + $phpcsFile->fixer->endChangeset(); |
|
337 | + } |
|
338 | + |
|
339 | + return; |
|
340 | + } |
|
341 | + |
|
342 | + // The open tag token always contains a single space after it. |
|
343 | + $leadingSpace = 1; |
|
344 | + if ($tokens[($stackPtr + 1)]['code'] === T_WHITESPACE) { |
|
345 | + $leadingSpace = (strlen($tokens[($stackPtr + 1)]['content']) + 1); |
|
346 | + } |
|
347 | + |
|
348 | + if ($leadingSpace !== 1) { |
|
349 | + $error = 'Expected 1 space after opening PHP tag; %s found'; |
|
350 | + $data = array($leadingSpace); |
|
351 | + $fix = $phpcsFile->addFixableError($error, $stackPtr, 'SpacingAfterOpen', $data); |
|
352 | + if ($fix === true) { |
|
353 | + $phpcsFile->fixer->replaceToken(($stackPtr + 1), ''); |
|
354 | + } |
|
355 | + } |
|
356 | + |
|
357 | + $prev = $phpcsFile->findPrevious(PHP_CodeSniffer_Tokens::$emptyTokens, ($closeTag - 1), $stackPtr, true); |
|
358 | + if ((isset($tokens[$prev]['scope_opener']) === false |
|
359 | + || $tokens[$prev]['scope_opener'] !== $prev) |
|
360 | + && (isset($tokens[$prev]['scope_closer']) === false |
|
361 | + || $tokens[$prev]['scope_closer'] !== $prev) |
|
362 | + && $tokens[$prev]['code'] !== T_SEMICOLON |
|
363 | + ) { |
|
364 | + $error = 'Inline PHP statement must end with a semicolon'; |
|
365 | + $fix = $phpcsFile->addFixableError($error, $stackPtr, 'NoSemicolon'); |
|
366 | + if ($fix === true) { |
|
367 | + $phpcsFile->fixer->addContent($prev, ';'); |
|
368 | + } |
|
369 | + } else if ($tokens[$prev]['code'] === T_SEMICOLON) { |
|
370 | + $statementCount = 1; |
|
371 | + for ($i = ($stackPtr + 1); $i < $prev; $i++) { |
|
372 | + if ($tokens[$i]['code'] === T_SEMICOLON) { |
|
373 | + $statementCount++; |
|
374 | + } |
|
375 | + } |
|
376 | + |
|
377 | + if ($statementCount > 1) { |
|
378 | + $error = 'Inline PHP statement must contain a single statement; %s found'; |
|
379 | + $data = array($statementCount); |
|
380 | + $phpcsFile->addError($error, $stackPtr, 'MultipleStatements', $data); |
|
381 | + } |
|
382 | + } |
|
383 | + |
|
384 | + $trailingSpace = 0; |
|
385 | + if ($tokens[($closeTag - 1)]['code'] === T_WHITESPACE) { |
|
386 | + $trailingSpace = strlen($tokens[($closeTag - 1)]['content']); |
|
387 | + } |
|
388 | + |
|
389 | + if ($trailingSpace !== 1) { |
|
390 | + $error = 'Expected 1 space before closing PHP tag; %s found'; |
|
391 | + $data = array($trailingSpace); |
|
392 | + $fix = $phpcsFile->addFixableError($error, $stackPtr, 'SpacingBeforeClose', $data); |
|
393 | + if ($fix === true) { |
|
394 | + if ($trailingSpace === 0) { |
|
395 | + $phpcsFile->fixer->addContentBefore($closeTag, ' '); |
|
396 | + } else { |
|
397 | + $phpcsFile->fixer->replaceToken(($closeTag - 1), ' '); |
|
398 | + } |
|
399 | + } |
|
400 | + } |
|
401 | + |
|
402 | + }//end _validateInlineEmbeddedPhp() |
|
403 | 403 | |
404 | 404 | |
405 | 405 | }//end class |
@@ -38,7 +38,7 @@ discard block |
||
38 | 38 | */ |
39 | 39 | public function register() |
40 | 40 | { |
41 | - return array(T_OPEN_TAG); |
|
41 | + return array( T_OPEN_TAG ); |
|
42 | 42 | |
43 | 43 | }//end register() |
44 | 44 | |
@@ -52,17 +52,17 @@ discard block |
||
52 | 52 | * |
53 | 53 | * @return void |
54 | 54 | */ |
55 | - public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) |
|
55 | + public function process( PHP_CodeSniffer_File $phpcsFile, $stackPtr ) |
|
56 | 56 | { |
57 | 57 | $tokens = $phpcsFile->getTokens(); |
58 | 58 | |
59 | 59 | // If the close php tag is on the same line as the opening |
60 | 60 | // then we have an inline embedded PHP block. |
61 | - $closeTag = $phpcsFile->findNext(T_CLOSE_TAG, $stackPtr); |
|
62 | - if ($closeTag === false || $tokens[$stackPtr]['line'] !== $tokens[$closeTag]['line']) { |
|
63 | - $this->_validateMultilineEmbeddedPhp($phpcsFile, $stackPtr); |
|
61 | + $closeTag = $phpcsFile->findNext( T_CLOSE_TAG, $stackPtr ); |
|
62 | + if ( $closeTag === false || $tokens[ $stackPtr ][ 'line' ] !== $tokens[ $closeTag ][ 'line' ] ) { |
|
63 | + $this->_validateMultilineEmbeddedPhp( $phpcsFile, $stackPtr ); |
|
64 | 64 | } else { |
65 | - $this->_validateInlineEmbeddedPhp($phpcsFile, $stackPtr); |
|
65 | + $this->_validateInlineEmbeddedPhp( $phpcsFile, $stackPtr ); |
|
66 | 66 | } |
67 | 67 | |
68 | 68 | }//end process() |
@@ -77,33 +77,33 @@ discard block |
||
77 | 77 | * |
78 | 78 | * @return void |
79 | 79 | */ |
80 | - private function _validateMultilineEmbeddedPhp(PHP_CodeSniffer_File $phpcsFile, $stackPtr) |
|
80 | + private function _validateMultilineEmbeddedPhp( PHP_CodeSniffer_File $phpcsFile, $stackPtr ) |
|
81 | 81 | { |
82 | 82 | $tokens = $phpcsFile->getTokens(); |
83 | 83 | |
84 | - $prevTag = $phpcsFile->findPrevious(T_OPEN_TAG, ($stackPtr - 1)); |
|
85 | - if ($prevTag === false) { |
|
84 | + $prevTag = $phpcsFile->findPrevious( T_OPEN_TAG, ( $stackPtr - 1 ) ); |
|
85 | + if ( $prevTag === false ) { |
|
86 | 86 | // This is the first open tag. |
87 | 87 | return; |
88 | 88 | } |
89 | 89 | |
90 | - $firstContent = $phpcsFile->findNext(T_WHITESPACE, ($stackPtr + 1), null, true); |
|
91 | - $closingTag = $phpcsFile->findNext(T_CLOSE_TAG, $stackPtr); |
|
92 | - if ($closingTag !== false) { |
|
93 | - $nextContent = $phpcsFile->findNext(T_WHITESPACE, ($closingTag + 1), $phpcsFile->numTokens, true); |
|
94 | - if ($nextContent === false) { |
|
90 | + $firstContent = $phpcsFile->findNext( T_WHITESPACE, ( $stackPtr + 1 ), null, true ); |
|
91 | + $closingTag = $phpcsFile->findNext( T_CLOSE_TAG, $stackPtr ); |
|
92 | + if ( $closingTag !== false ) { |
|
93 | + $nextContent = $phpcsFile->findNext( T_WHITESPACE, ( $closingTag + 1 ), $phpcsFile->numTokens, true ); |
|
94 | + if ( $nextContent === false ) { |
|
95 | 95 | // Final closing tag. It will be handled elsewhere. |
96 | 96 | return; |
97 | 97 | } |
98 | 98 | |
99 | 99 | // We have an opening and a closing tag, that lie within other content. |
100 | - if ($firstContent === $closingTag) { |
|
100 | + if ( $firstContent === $closingTag ) { |
|
101 | 101 | $error = 'Empty embedded PHP tag found'; |
102 | - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'Empty'); |
|
103 | - if ($fix === true) { |
|
102 | + $fix = $phpcsFile->addFixableError( $error, $stackPtr, 'Empty' ); |
|
103 | + if ( $fix === true ) { |
|
104 | 104 | $phpcsFile->fixer->beginChangeset(); |
105 | - for ($i = $stackPtr; $i <= $closingTag; $i++) { |
|
106 | - $phpcsFile->fixer->replaceToken($i, ''); |
|
105 | + for ( $i = $stackPtr; $i <= $closingTag; $i++ ) { |
|
106 | + $phpcsFile->fixer->replaceToken( $i, '' ); |
|
107 | 107 | } |
108 | 108 | |
109 | 109 | $phpcsFile->fixer->endChangeset(); |
@@ -113,185 +113,185 @@ discard block |
||
113 | 113 | } |
114 | 114 | }//end if |
115 | 115 | |
116 | - if ($tokens[$firstContent]['line'] === $tokens[$stackPtr]['line']) { |
|
116 | + if ( $tokens[ $firstContent ][ 'line' ] === $tokens[ $stackPtr ][ 'line' ] ) { |
|
117 | 117 | $error = 'Opening PHP tag must be on a line by itself'; |
118 | - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'ContentAfterOpen'); |
|
119 | - if ($fix === true) { |
|
120 | - $first = $phpcsFile->findFirstOnLine(T_WHITESPACE, $stackPtr, true); |
|
121 | - $padding = (strlen($tokens[$first]['content']) - strlen(ltrim($tokens[$first]['content']))); |
|
118 | + $fix = $phpcsFile->addFixableError( $error, $stackPtr, 'ContentAfterOpen' ); |
|
119 | + if ( $fix === true ) { |
|
120 | + $first = $phpcsFile->findFirstOnLine( T_WHITESPACE, $stackPtr, true ); |
|
121 | + $padding = ( strlen( $tokens[ $first ][ 'content' ] ) - strlen( ltrim( $tokens[ $first ][ 'content' ] ) ) ); |
|
122 | 122 | $phpcsFile->fixer->beginChangeset(); |
123 | - $phpcsFile->fixer->addNewline($stackPtr); |
|
124 | - $phpcsFile->fixer->addContent($stackPtr, str_repeat(' ', $padding)); |
|
123 | + $phpcsFile->fixer->addNewline( $stackPtr ); |
|
124 | + $phpcsFile->fixer->addContent( $stackPtr, str_repeat( ' ', $padding ) ); |
|
125 | 125 | $phpcsFile->fixer->endChangeset(); |
126 | 126 | } |
127 | 127 | } else { |
128 | 128 | // Check the indent of the first line, except if it is a scope closer. |
129 | - if (isset($tokens[$firstContent]['scope_closer']) === false |
|
130 | - || $tokens[$firstContent]['scope_closer'] !== $firstContent |
|
129 | + if ( isset( $tokens[ $firstContent ][ 'scope_closer' ] ) === false |
|
130 | + || $tokens[ $firstContent ][ 'scope_closer' ] !== $firstContent |
|
131 | 131 | ) { |
132 | 132 | // Check for a blank line at the top. |
133 | - if ($tokens[$firstContent]['line'] > ($tokens[$stackPtr]['line'] + 1)) { |
|
133 | + if ( $tokens[ $firstContent ][ 'line' ] > ( $tokens[ $stackPtr ][ 'line' ] + 1 ) ) { |
|
134 | 134 | // Find a token on the blank line to throw the error on. |
135 | 135 | $i = $stackPtr; |
136 | 136 | do { |
137 | 137 | $i++; |
138 | - } while ($tokens[$i]['line'] !== ($tokens[$stackPtr]['line'] + 1)); |
|
138 | + } while ( $tokens[ $i ][ 'line' ] !== ( $tokens[ $stackPtr ][ 'line' ] + 1 ) ); |
|
139 | 139 | |
140 | 140 | $error = 'Blank line found at start of embedded PHP content'; |
141 | - $fix = $phpcsFile->addFixableError($error, $i, 'SpacingBefore'); |
|
142 | - if ($fix === true) { |
|
141 | + $fix = $phpcsFile->addFixableError( $error, $i, 'SpacingBefore' ); |
|
142 | + if ( $fix === true ) { |
|
143 | 143 | $phpcsFile->fixer->beginChangeset(); |
144 | - for ($i = ($stackPtr + 1); $i < $firstContent; $i++) { |
|
145 | - if ($tokens[$i]['line'] === $tokens[$firstContent]['line'] |
|
146 | - || $tokens[$i]['line'] === $tokens[$stackPtr]['line'] |
|
144 | + for ( $i = ( $stackPtr + 1 ); $i < $firstContent; $i++ ) { |
|
145 | + if ( $tokens[ $i ][ 'line' ] === $tokens[ $firstContent ][ 'line' ] |
|
146 | + || $tokens[ $i ][ 'line' ] === $tokens[ $stackPtr ][ 'line' ] |
|
147 | 147 | ) { |
148 | 148 | continue; |
149 | 149 | } |
150 | 150 | |
151 | - $phpcsFile->fixer->replaceToken($i, ''); |
|
151 | + $phpcsFile->fixer->replaceToken( $i, '' ); |
|
152 | 152 | } |
153 | 153 | |
154 | 154 | $phpcsFile->fixer->endChangeset(); |
155 | 155 | } |
156 | 156 | }//end if |
157 | 157 | |
158 | - $first = $phpcsFile->findFirstOnLine(T_WHITESPACE, $stackPtr); |
|
159 | - if ($first === false) { |
|
160 | - $first = $phpcsFile->findFirstOnLine(T_INLINE_HTML, $stackPtr); |
|
161 | - $indent = (strlen($tokens[$first]['content']) - strlen(ltrim($tokens[$first]['content']))); |
|
158 | + $first = $phpcsFile->findFirstOnLine( T_WHITESPACE, $stackPtr ); |
|
159 | + if ( $first === false ) { |
|
160 | + $first = $phpcsFile->findFirstOnLine( T_INLINE_HTML, $stackPtr ); |
|
161 | + $indent = ( strlen( $tokens[ $first ][ 'content' ] ) - strlen( ltrim( $tokens[ $first ][ 'content' ] ) ) ); |
|
162 | 162 | } else { |
163 | - $indent = ($tokens[($first + 1)]['column'] - 1); |
|
163 | + $indent = ( $tokens[ ( $first + 1 ) ][ 'column' ] - 1 ); |
|
164 | 164 | } |
165 | 165 | |
166 | - $contentColumn = ($tokens[$firstContent]['column'] - 1); |
|
167 | - if ($contentColumn !== $indent) { |
|
166 | + $contentColumn = ( $tokens[ $firstContent ][ 'column' ] - 1 ); |
|
167 | + if ( $contentColumn !== $indent ) { |
|
168 | 168 | $error = 'First line of embedded PHP code must be indented %s spaces; %s found'; |
169 | 169 | $data = array( |
170 | 170 | $indent, |
171 | 171 | $contentColumn, |
172 | 172 | ); |
173 | - $fix = $phpcsFile->addFixableError($error, $firstContent, 'Indent', $data); |
|
174 | - if ($fix === true) { |
|
175 | - $padding = str_repeat(' ', $indent); |
|
176 | - if ($contentColumn === 0) { |
|
177 | - $phpcsFile->fixer->addContentBefore($firstContent, $padding); |
|
173 | + $fix = $phpcsFile->addFixableError( $error, $firstContent, 'Indent', $data ); |
|
174 | + if ( $fix === true ) { |
|
175 | + $padding = str_repeat( ' ', $indent ); |
|
176 | + if ( $contentColumn === 0 ) { |
|
177 | + $phpcsFile->fixer->addContentBefore( $firstContent, $padding ); |
|
178 | 178 | } else { |
179 | - $phpcsFile->fixer->replaceToken(($firstContent - 1), $padding); |
|
179 | + $phpcsFile->fixer->replaceToken( ( $firstContent - 1 ), $padding ); |
|
180 | 180 | } |
181 | 181 | } |
182 | 182 | } |
183 | 183 | }//end if |
184 | 184 | }//end if |
185 | 185 | |
186 | - $lastContent = $phpcsFile->findPrevious(T_WHITESPACE, ($stackPtr - 1), null, true); |
|
187 | - if ($tokens[$lastContent]['line'] === $tokens[$stackPtr]['line'] |
|
188 | - && trim($tokens[$lastContent]['content']) !== '' |
|
186 | + $lastContent = $phpcsFile->findPrevious( T_WHITESPACE, ( $stackPtr - 1 ), null, true ); |
|
187 | + if ( $tokens[ $lastContent ][ 'line' ] === $tokens[ $stackPtr ][ 'line' ] |
|
188 | + && trim( $tokens[ $lastContent ][ 'content' ] ) !== '' |
|
189 | 189 | ) { |
190 | 190 | $error = 'Opening PHP tag must be on a line by itself'; |
191 | - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'ContentBeforeOpen'); |
|
192 | - if ($fix === true) { |
|
193 | - $first = $phpcsFile->findFirstOnLine(T_WHITESPACE, $stackPtr); |
|
194 | - if ($first === false) { |
|
195 | - $first = $phpcsFile->findFirstOnLine(T_INLINE_HTML, $stackPtr); |
|
196 | - $padding = (strlen($tokens[$first]['content']) - strlen(ltrim($tokens[$first]['content']))); |
|
191 | + $fix = $phpcsFile->addFixableError( $error, $stackPtr, 'ContentBeforeOpen' ); |
|
192 | + if ( $fix === true ) { |
|
193 | + $first = $phpcsFile->findFirstOnLine( T_WHITESPACE, $stackPtr ); |
|
194 | + if ( $first === false ) { |
|
195 | + $first = $phpcsFile->findFirstOnLine( T_INLINE_HTML, $stackPtr ); |
|
196 | + $padding = ( strlen( $tokens[ $first ][ 'content' ] ) - strlen( ltrim( $tokens[ $first ][ 'content' ] ) ) ); |
|
197 | 197 | } else { |
198 | - $padding = ($tokens[($first + 1)]['column'] - 1); |
|
198 | + $padding = ( $tokens[ ( $first + 1 ) ][ 'column' ] - 1 ); |
|
199 | 199 | } |
200 | 200 | |
201 | - $phpcsFile->fixer->addContentBefore($stackPtr, $phpcsFile->eolChar.str_repeat(' ', $padding)); |
|
201 | + $phpcsFile->fixer->addContentBefore( $stackPtr, $phpcsFile->eolChar . str_repeat( ' ', $padding ) ); |
|
202 | 202 | } |
203 | 203 | } else { |
204 | 204 | // Find the first token on the first non-empty line we find. |
205 | - for ($first = ($stackPtr - 1); $first > 0; $first--) { |
|
206 | - if ($tokens[$first]['line'] === $tokens[$stackPtr]['line']) { |
|
205 | + for ( $first = ( $stackPtr - 1 ); $first > 0; $first-- ) { |
|
206 | + if ( $tokens[ $first ][ 'line' ] === $tokens[ $stackPtr ][ 'line' ] ) { |
|
207 | 207 | continue; |
208 | - } else if (trim($tokens[$first]['content']) !== '') { |
|
209 | - $first = $phpcsFile->findFirstOnLine(array(), $first, true); |
|
208 | + } else if ( trim( $tokens[ $first ][ 'content' ] ) !== '' ) { |
|
209 | + $first = $phpcsFile->findFirstOnLine( array(), $first, true ); |
|
210 | 210 | break; |
211 | 211 | } |
212 | 212 | } |
213 | 213 | |
214 | 214 | $expected = 0; |
215 | - if ($tokens[$first]['code'] === T_INLINE_HTML |
|
216 | - && trim($tokens[$first]['content']) !== '' |
|
215 | + if ( $tokens[ $first ][ 'code' ] === T_INLINE_HTML |
|
216 | + && trim( $tokens[ $first ][ 'content' ] ) !== '' |
|
217 | 217 | ) { |
218 | - $expected = (strlen($tokens[$first]['content']) - strlen(ltrim($tokens[$first]['content']))); |
|
219 | - } else if ($tokens[$first]['code'] === T_WHITESPACE) { |
|
220 | - $expected = ($tokens[($first + 1)]['column'] - 1); |
|
218 | + $expected = ( strlen( $tokens[ $first ][ 'content' ] ) - strlen( ltrim( $tokens[ $first ][ 'content' ] ) ) ); |
|
219 | + } else if ( $tokens[ $first ][ 'code' ] === T_WHITESPACE ) { |
|
220 | + $expected = ( $tokens[ ( $first + 1 ) ][ 'column' ] - 1 ); |
|
221 | 221 | } |
222 | 222 | |
223 | 223 | $expected += 4; |
224 | - $found = ($tokens[$stackPtr]['column'] - 1); |
|
225 | - if ($found > $expected) { |
|
224 | + $found = ( $tokens[ $stackPtr ][ 'column' ] - 1 ); |
|
225 | + if ( $found > $expected ) { |
|
226 | 226 | $error = 'Opening PHP tag indent incorrect; expected no more than %s spaces but found %s'; |
227 | 227 | $data = array( |
228 | 228 | $expected, |
229 | 229 | $found, |
230 | 230 | ); |
231 | - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'OpenTagIndent', $data); |
|
232 | - if ($fix === true) { |
|
233 | - $phpcsFile->fixer->replaceToken(($stackPtr - 1), str_repeat(' ', $expected)); |
|
231 | + $fix = $phpcsFile->addFixableError( $error, $stackPtr, 'OpenTagIndent', $data ); |
|
232 | + if ( $fix === true ) { |
|
233 | + $phpcsFile->fixer->replaceToken( ( $stackPtr - 1 ), str_repeat( ' ', $expected ) ); |
|
234 | 234 | } |
235 | 235 | } |
236 | 236 | }//end if |
237 | 237 | |
238 | - if ($closingTag === false) { |
|
238 | + if ( $closingTag === false ) { |
|
239 | 239 | return; |
240 | 240 | } |
241 | 241 | |
242 | - $lastContent = $phpcsFile->findPrevious(T_WHITESPACE, ($closingTag - 1), ($stackPtr + 1), true); |
|
243 | - $nextContent = $phpcsFile->findNext(T_WHITESPACE, ($closingTag + 1), null, true); |
|
242 | + $lastContent = $phpcsFile->findPrevious( T_WHITESPACE, ( $closingTag - 1 ), ( $stackPtr + 1 ), true ); |
|
243 | + $nextContent = $phpcsFile->findNext( T_WHITESPACE, ( $closingTag + 1 ), null, true ); |
|
244 | 244 | |
245 | - if ($tokens[$lastContent]['line'] === $tokens[$closingTag]['line']) { |
|
245 | + if ( $tokens[ $lastContent ][ 'line' ] === $tokens[ $closingTag ][ 'line' ] ) { |
|
246 | 246 | $error = 'Closing PHP tag must be on a line by itself'; |
247 | - $fix = $phpcsFile->addFixableError($error, $closingTag, 'ContentBeforeEnd'); |
|
248 | - if ($fix === true) { |
|
249 | - $first = $phpcsFile->findFirstOnLine(T_WHITESPACE, $closingTag, true); |
|
247 | + $fix = $phpcsFile->addFixableError( $error, $closingTag, 'ContentBeforeEnd' ); |
|
248 | + if ( $fix === true ) { |
|
249 | + $first = $phpcsFile->findFirstOnLine( T_WHITESPACE, $closingTag, true ); |
|
250 | 250 | $phpcsFile->fixer->beginChangeset(); |
251 | - $phpcsFile->fixer->addContentBefore($closingTag, str_repeat(' ', ($tokens[$first]['column'] - 1))); |
|
252 | - $phpcsFile->fixer->addNewlineBefore($closingTag); |
|
251 | + $phpcsFile->fixer->addContentBefore( $closingTag, str_repeat( ' ', ( $tokens[ $first ][ 'column' ] - 1 ) ) ); |
|
252 | + $phpcsFile->fixer->addNewlineBefore( $closingTag ); |
|
253 | 253 | $phpcsFile->fixer->endChangeset(); |
254 | 254 | } |
255 | - } else if ($tokens[$nextContent]['line'] === $tokens[$closingTag]['line']) { |
|
255 | + } else if ( $tokens[ $nextContent ][ 'line' ] === $tokens[ $closingTag ][ 'line' ] ) { |
|
256 | 256 | $error = 'Closing PHP tag must be on a line by itself'; |
257 | - $fix = $phpcsFile->addFixableError($error, $closingTag, 'ContentAfterEnd'); |
|
258 | - if ($fix === true) { |
|
259 | - $first = $phpcsFile->findFirstOnLine(T_WHITESPACE, $closingTag, true); |
|
257 | + $fix = $phpcsFile->addFixableError( $error, $closingTag, 'ContentAfterEnd' ); |
|
258 | + if ( $fix === true ) { |
|
259 | + $first = $phpcsFile->findFirstOnLine( T_WHITESPACE, $closingTag, true ); |
|
260 | 260 | $phpcsFile->fixer->beginChangeset(); |
261 | - $phpcsFile->fixer->addNewline($closingTag); |
|
262 | - $phpcsFile->fixer->addContent($closingTag, str_repeat(' ', ($tokens[$first]['column'] - 1))); |
|
261 | + $phpcsFile->fixer->addNewline( $closingTag ); |
|
262 | + $phpcsFile->fixer->addContent( $closingTag, str_repeat( ' ', ( $tokens[ $first ][ 'column' ] - 1 ) ) ); |
|
263 | 263 | $phpcsFile->fixer->endChangeset(); |
264 | 264 | } |
265 | 265 | }//end if |
266 | 266 | |
267 | - $next = $phpcsFile->findNext(T_OPEN_TAG, ($closingTag + 1)); |
|
268 | - if ($next === false) { |
|
267 | + $next = $phpcsFile->findNext( T_OPEN_TAG, ( $closingTag + 1 ) ); |
|
268 | + if ( $next === false ) { |
|
269 | 269 | return; |
270 | 270 | } |
271 | 271 | |
272 | 272 | // Check for a blank line at the bottom. |
273 | - if ((isset($tokens[$lastContent]['scope_closer']) === false |
|
274 | - || $tokens[$lastContent]['scope_closer'] !== $lastContent) |
|
275 | - && $tokens[$lastContent]['line'] < ($tokens[$closingTag]['line'] - 1) |
|
273 | + if ( ( isset( $tokens[ $lastContent ][ 'scope_closer' ] ) === false |
|
274 | + || $tokens[ $lastContent ][ 'scope_closer' ] !== $lastContent ) |
|
275 | + && $tokens[ $lastContent ][ 'line' ] < ( $tokens[ $closingTag ][ 'line' ] - 1 ) |
|
276 | 276 | ) { |
277 | 277 | // Find a token on the blank line to throw the error on. |
278 | 278 | $i = $closingTag; |
279 | 279 | do { |
280 | 280 | $i--; |
281 | - } while ($tokens[$i]['line'] !== ($tokens[$closingTag]['line'] - 1)); |
|
281 | + } while ( $tokens[ $i ][ 'line' ] !== ( $tokens[ $closingTag ][ 'line' ] - 1 ) ); |
|
282 | 282 | |
283 | 283 | $error = 'Blank line found at end of embedded PHP content'; |
284 | - $fix = $phpcsFile->addFixableError($error, $i, 'SpacingAfter'); |
|
285 | - if ($fix === true) { |
|
284 | + $fix = $phpcsFile->addFixableError( $error, $i, 'SpacingAfter' ); |
|
285 | + if ( $fix === true ) { |
|
286 | 286 | $phpcsFile->fixer->beginChangeset(); |
287 | - for ($i = ($lastContent + 1); $i < $closingTag; $i++) { |
|
288 | - if ($tokens[$i]['line'] === $tokens[$lastContent]['line'] |
|
289 | - || $tokens[$i]['line'] === $tokens[$closingTag]['line'] |
|
287 | + for ( $i = ( $lastContent + 1 ); $i < $closingTag; $i++ ) { |
|
288 | + if ( $tokens[ $i ][ 'line' ] === $tokens[ $lastContent ][ 'line' ] |
|
289 | + || $tokens[ $i ][ 'line' ] === $tokens[ $closingTag ][ 'line' ] |
|
290 | 290 | ) { |
291 | 291 | continue; |
292 | 292 | } |
293 | 293 | |
294 | - $phpcsFile->fixer->replaceToken($i, ''); |
|
294 | + $phpcsFile->fixer->replaceToken( $i, '' ); |
|
295 | 295 | } |
296 | 296 | |
297 | 297 | $phpcsFile->fixer->endChangeset(); |
@@ -310,27 +310,27 @@ discard block |
||
310 | 310 | * |
311 | 311 | * @return void |
312 | 312 | */ |
313 | - private function _validateInlineEmbeddedPhp(PHP_CodeSniffer_File $phpcsFile, $stackPtr) |
|
313 | + private function _validateInlineEmbeddedPhp( PHP_CodeSniffer_File $phpcsFile, $stackPtr ) |
|
314 | 314 | { |
315 | 315 | $tokens = $phpcsFile->getTokens(); |
316 | 316 | |
317 | 317 | // We only want one line PHP sections, so return if the closing tag is |
318 | 318 | // on the next line. |
319 | - $closeTag = $phpcsFile->findNext(T_CLOSE_TAG, $stackPtr, null, false); |
|
320 | - if ($tokens[$stackPtr]['line'] !== $tokens[$closeTag]['line']) { |
|
319 | + $closeTag = $phpcsFile->findNext( T_CLOSE_TAG, $stackPtr, null, false ); |
|
320 | + if ( $tokens[ $stackPtr ][ 'line' ] !== $tokens[ $closeTag ][ 'line' ] ) { |
|
321 | 321 | return; |
322 | 322 | } |
323 | 323 | |
324 | 324 | // Check that there is one, and only one space at the start of the statement. |
325 | - $firstContent = $phpcsFile->findNext(T_WHITESPACE, ($stackPtr + 1), ($closeTag - 1), true); |
|
325 | + $firstContent = $phpcsFile->findNext( T_WHITESPACE, ( $stackPtr + 1 ), ( $closeTag - 1 ), true ); |
|
326 | 326 | |
327 | - if ($firstContent === false) { |
|
327 | + if ( $firstContent === false ) { |
|
328 | 328 | $error = 'Empty embedded PHP tag found'; |
329 | - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'Empty'); |
|
330 | - if ($fix === true) { |
|
329 | + $fix = $phpcsFile->addFixableError( $error, $stackPtr, 'Empty' ); |
|
330 | + if ( $fix === true ) { |
|
331 | 331 | $phpcsFile->fixer->beginChangeset(); |
332 | - for ($i = $stackPtr; $i <= $closeTag; $i++) { |
|
333 | - $phpcsFile->fixer->replaceToken($i, ''); |
|
332 | + for ( $i = $stackPtr; $i <= $closeTag; $i++ ) { |
|
333 | + $phpcsFile->fixer->replaceToken( $i, '' ); |
|
334 | 334 | } |
335 | 335 | |
336 | 336 | $phpcsFile->fixer->endChangeset(); |
@@ -341,60 +341,60 @@ discard block |
||
341 | 341 | |
342 | 342 | // The open tag token always contains a single space after it. |
343 | 343 | $leadingSpace = 1; |
344 | - if ($tokens[($stackPtr + 1)]['code'] === T_WHITESPACE) { |
|
345 | - $leadingSpace = (strlen($tokens[($stackPtr + 1)]['content']) + 1); |
|
344 | + if ( $tokens[ ( $stackPtr + 1 ) ][ 'code' ] === T_WHITESPACE ) { |
|
345 | + $leadingSpace = ( strlen( $tokens[ ( $stackPtr + 1 ) ][ 'content' ] ) + 1 ); |
|
346 | 346 | } |
347 | 347 | |
348 | - if ($leadingSpace !== 1) { |
|
348 | + if ( $leadingSpace !== 1 ) { |
|
349 | 349 | $error = 'Expected 1 space after opening PHP tag; %s found'; |
350 | - $data = array($leadingSpace); |
|
351 | - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'SpacingAfterOpen', $data); |
|
352 | - if ($fix === true) { |
|
353 | - $phpcsFile->fixer->replaceToken(($stackPtr + 1), ''); |
|
350 | + $data = array( $leadingSpace ); |
|
351 | + $fix = $phpcsFile->addFixableError( $error, $stackPtr, 'SpacingAfterOpen', $data ); |
|
352 | + if ( $fix === true ) { |
|
353 | + $phpcsFile->fixer->replaceToken( ( $stackPtr + 1 ), '' ); |
|
354 | 354 | } |
355 | 355 | } |
356 | 356 | |
357 | - $prev = $phpcsFile->findPrevious(PHP_CodeSniffer_Tokens::$emptyTokens, ($closeTag - 1), $stackPtr, true); |
|
358 | - if ((isset($tokens[$prev]['scope_opener']) === false |
|
359 | - || $tokens[$prev]['scope_opener'] !== $prev) |
|
360 | - && (isset($tokens[$prev]['scope_closer']) === false |
|
361 | - || $tokens[$prev]['scope_closer'] !== $prev) |
|
362 | - && $tokens[$prev]['code'] !== T_SEMICOLON |
|
357 | + $prev = $phpcsFile->findPrevious( PHP_CodeSniffer_Tokens::$emptyTokens, ( $closeTag - 1 ), $stackPtr, true ); |
|
358 | + if ( ( isset( $tokens[ $prev ][ 'scope_opener' ] ) === false |
|
359 | + || $tokens[ $prev ][ 'scope_opener' ] !== $prev ) |
|
360 | + && ( isset( $tokens[ $prev ][ 'scope_closer' ] ) === false |
|
361 | + || $tokens[ $prev ][ 'scope_closer' ] !== $prev ) |
|
362 | + && $tokens[ $prev ][ 'code' ] !== T_SEMICOLON |
|
363 | 363 | ) { |
364 | 364 | $error = 'Inline PHP statement must end with a semicolon'; |
365 | - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'NoSemicolon'); |
|
366 | - if ($fix === true) { |
|
367 | - $phpcsFile->fixer->addContent($prev, ';'); |
|
365 | + $fix = $phpcsFile->addFixableError( $error, $stackPtr, 'NoSemicolon' ); |
|
366 | + if ( $fix === true ) { |
|
367 | + $phpcsFile->fixer->addContent( $prev, ';' ); |
|
368 | 368 | } |
369 | - } else if ($tokens[$prev]['code'] === T_SEMICOLON) { |
|
369 | + } else if ( $tokens[ $prev ][ 'code' ] === T_SEMICOLON ) { |
|
370 | 370 | $statementCount = 1; |
371 | - for ($i = ($stackPtr + 1); $i < $prev; $i++) { |
|
372 | - if ($tokens[$i]['code'] === T_SEMICOLON) { |
|
371 | + for ( $i = ( $stackPtr + 1 ); $i < $prev; $i++ ) { |
|
372 | + if ( $tokens[ $i ][ 'code' ] === T_SEMICOLON ) { |
|
373 | 373 | $statementCount++; |
374 | 374 | } |
375 | 375 | } |
376 | 376 | |
377 | - if ($statementCount > 1) { |
|
377 | + if ( $statementCount > 1 ) { |
|
378 | 378 | $error = 'Inline PHP statement must contain a single statement; %s found'; |
379 | - $data = array($statementCount); |
|
380 | - $phpcsFile->addError($error, $stackPtr, 'MultipleStatements', $data); |
|
379 | + $data = array( $statementCount ); |
|
380 | + $phpcsFile->addError( $error, $stackPtr, 'MultipleStatements', $data ); |
|
381 | 381 | } |
382 | 382 | } |
383 | 383 | |
384 | 384 | $trailingSpace = 0; |
385 | - if ($tokens[($closeTag - 1)]['code'] === T_WHITESPACE) { |
|
386 | - $trailingSpace = strlen($tokens[($closeTag - 1)]['content']); |
|
385 | + if ( $tokens[ ( $closeTag - 1 ) ][ 'code' ] === T_WHITESPACE ) { |
|
386 | + $trailingSpace = strlen( $tokens[ ( $closeTag - 1 ) ][ 'content' ] ); |
|
387 | 387 | } |
388 | 388 | |
389 | - if ($trailingSpace !== 1) { |
|
389 | + if ( $trailingSpace !== 1 ) { |
|
390 | 390 | $error = 'Expected 1 space before closing PHP tag; %s found'; |
391 | - $data = array($trailingSpace); |
|
392 | - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'SpacingBeforeClose', $data); |
|
393 | - if ($fix === true) { |
|
394 | - if ($trailingSpace === 0) { |
|
395 | - $phpcsFile->fixer->addContentBefore($closeTag, ' '); |
|
391 | + $data = array( $trailingSpace ); |
|
392 | + $fix = $phpcsFile->addFixableError( $error, $stackPtr, 'SpacingBeforeClose', $data ); |
|
393 | + if ( $fix === true ) { |
|
394 | + if ( $trailingSpace === 0 ) { |
|
395 | + $phpcsFile->fixer->addContentBefore( $closeTag, ' ' ); |
|
396 | 396 | } else { |
397 | - $phpcsFile->fixer->replaceToken(($closeTag - 1), ' '); |
|
397 | + $phpcsFile->fixer->replaceToken( ( $closeTag - 1 ), ' ' ); |
|
398 | 398 | } |
399 | 399 | } |
400 | 400 | } |
@@ -27,8 +27,7 @@ discard block |
||
27 | 27 | * @version Release: @package_version@ |
28 | 28 | * @link http://pear.php.net/package/PHP_CodeSniffer |
29 | 29 | */ |
30 | -class Squiz_Sniffs_PHP_EmbeddedPhpSniff implements PHP_CodeSniffer_Sniff |
|
31 | -{ |
|
30 | +class Squiz_Sniffs_PHP_EmbeddedPhpSniff implements PHP_CodeSniffer_Sniff { |
|
32 | 31 | |
33 | 32 | |
34 | 33 | /** |
@@ -36,8 +35,7 @@ discard block |
||
36 | 35 | * |
37 | 36 | * @return array |
38 | 37 | */ |
39 | - public function register() |
|
40 | - { |
|
38 | + public function register() { |
|
41 | 39 | return array(T_OPEN_TAG); |
42 | 40 | |
43 | 41 | }//end register() |
@@ -52,8 +50,7 @@ discard block |
||
52 | 50 | * |
53 | 51 | * @return void |
54 | 52 | */ |
55 | - public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) |
|
56 | - { |
|
53 | + public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) { |
|
57 | 54 | $tokens = $phpcsFile->getTokens(); |
58 | 55 | |
59 | 56 | // If the close php tag is on the same line as the opening |
@@ -77,8 +74,7 @@ discard block |
||
77 | 74 | * |
78 | 75 | * @return void |
79 | 76 | */ |
80 | - private function _validateMultilineEmbeddedPhp(PHP_CodeSniffer_File $phpcsFile, $stackPtr) |
|
81 | - { |
|
77 | + private function _validateMultilineEmbeddedPhp(PHP_CodeSniffer_File $phpcsFile, $stackPtr) { |
|
82 | 78 | $tokens = $phpcsFile->getTokens(); |
83 | 79 | |
84 | 80 | $prevTag = $phpcsFile->findPrevious(T_OPEN_TAG, ($stackPtr - 1)); |
@@ -310,8 +306,7 @@ discard block |
||
310 | 306 | * |
311 | 307 | * @return void |
312 | 308 | */ |
313 | - private function _validateInlineEmbeddedPhp(PHP_CodeSniffer_File $phpcsFile, $stackPtr) |
|
314 | - { |
|
309 | + private function _validateInlineEmbeddedPhp(PHP_CodeSniffer_File $phpcsFile, $stackPtr) { |
|
315 | 310 | $tokens = $phpcsFile->getTokens(); |
316 | 311 | |
317 | 312 | // We only want one line PHP sections, so return if the closing tag is |
@@ -35,7 +35,7 @@ |
||
35 | 35 | /** |
36 | 36 | * Returns an array of tokens this test wants to listen for. |
37 | 37 | * |
38 | - * @return array |
|
38 | + * @return integer[] |
|
39 | 39 | */ |
40 | 40 | public function register() |
41 | 41 | { |
@@ -32,72 +32,72 @@ |
||
32 | 32 | { |
33 | 33 | |
34 | 34 | |
35 | - /** |
|
36 | - * Returns an array of tokens this test wants to listen for. |
|
37 | - * |
|
38 | - * @return array |
|
39 | - */ |
|
40 | - public function register() |
|
41 | - { |
|
42 | - return array(T_ECHO); |
|
43 | - |
|
44 | - }//end register() |
|
45 | - |
|
46 | - |
|
47 | - /** |
|
48 | - * Processes this test, when one of its tokens is encountered. |
|
49 | - * |
|
50 | - * @param PHP_CodeSniffer_File $phpcsFile The file being scanned. |
|
51 | - * @param int $stackPtr The position of the current token in the |
|
52 | - * stack passed in $tokens. |
|
53 | - * |
|
54 | - * @return void |
|
55 | - */ |
|
56 | - public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) |
|
57 | - { |
|
58 | - $tokens = $phpcsFile->getTokens(); |
|
59 | - |
|
60 | - $firstContent = $phpcsFile->findNext(T_WHITESPACE, ($stackPtr + 1), null, true); |
|
61 | - // If the first non-whitespace token is not an opening parenthesis, then we are not concerned. |
|
62 | - if ($tokens[$firstContent]['code'] !== T_OPEN_PARENTHESIS) { |
|
63 | - $phpcsFile->recordMetric($stackPtr, 'Brackets around echoed strings', 'no'); |
|
64 | - return; |
|
65 | - } |
|
66 | - |
|
67 | - $end = $phpcsFile->findNext(array(T_SEMICOLON, T_CLOSE_TAG), $stackPtr, null, false); |
|
68 | - |
|
69 | - // If the token before the semi-colon is not a closing parenthesis, then we are not concerned. |
|
70 | - $prev = $phpcsFile->findPrevious(T_WHITESPACE, ($end - 1), null, true); |
|
71 | - if ($tokens[$prev]['code'] !== T_CLOSE_PARENTHESIS) { |
|
72 | - $phpcsFile->recordMetric($stackPtr, 'Brackets around echoed strings', 'no'); |
|
73 | - return; |
|
74 | - } |
|
75 | - |
|
76 | - // If the parenthesis don't match, then we are not concerned. |
|
77 | - if ($tokens[$firstContent]['parenthesis_closer'] !== $prev) { |
|
78 | - $phpcsFile->recordMetric($stackPtr, 'Brackets around echoed strings', 'no'); |
|
79 | - return; |
|
80 | - } |
|
81 | - |
|
82 | - $phpcsFile->recordMetric($stackPtr, 'Brackets around echoed strings', 'yes'); |
|
83 | - |
|
84 | - if (($phpcsFile->findNext(PHP_CodeSniffer_Tokens::$operators, $stackPtr, $end, false)) === false) { |
|
85 | - // There are no arithmetic operators in this. |
|
86 | - $error = 'Echoed strings should not be bracketed'; |
|
87 | - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'HasBracket'); |
|
88 | - if ($fix === true) { |
|
89 | - $phpcsFile->fixer->beginChangeset(); |
|
90 | - $phpcsFile->fixer->replaceToken($firstContent, ''); |
|
91 | - if ($tokens[($firstContent - 1)]['code'] !== T_WHITESPACE) { |
|
92 | - $phpcsFile->fixer->addContent(($firstContent - 1), ' '); |
|
93 | - } |
|
94 | - |
|
95 | - $phpcsFile->fixer->replaceToken($prev, ''); |
|
96 | - $phpcsFile->fixer->endChangeset(); |
|
97 | - } |
|
98 | - } |
|
99 | - |
|
100 | - }//end process() |
|
35 | + /** |
|
36 | + * Returns an array of tokens this test wants to listen for. |
|
37 | + * |
|
38 | + * @return array |
|
39 | + */ |
|
40 | + public function register() |
|
41 | + { |
|
42 | + return array(T_ECHO); |
|
43 | + |
|
44 | + }//end register() |
|
45 | + |
|
46 | + |
|
47 | + /** |
|
48 | + * Processes this test, when one of its tokens is encountered. |
|
49 | + * |
|
50 | + * @param PHP_CodeSniffer_File $phpcsFile The file being scanned. |
|
51 | + * @param int $stackPtr The position of the current token in the |
|
52 | + * stack passed in $tokens. |
|
53 | + * |
|
54 | + * @return void |
|
55 | + */ |
|
56 | + public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) |
|
57 | + { |
|
58 | + $tokens = $phpcsFile->getTokens(); |
|
59 | + |
|
60 | + $firstContent = $phpcsFile->findNext(T_WHITESPACE, ($stackPtr + 1), null, true); |
|
61 | + // If the first non-whitespace token is not an opening parenthesis, then we are not concerned. |
|
62 | + if ($tokens[$firstContent]['code'] !== T_OPEN_PARENTHESIS) { |
|
63 | + $phpcsFile->recordMetric($stackPtr, 'Brackets around echoed strings', 'no'); |
|
64 | + return; |
|
65 | + } |
|
66 | + |
|
67 | + $end = $phpcsFile->findNext(array(T_SEMICOLON, T_CLOSE_TAG), $stackPtr, null, false); |
|
68 | + |
|
69 | + // If the token before the semi-colon is not a closing parenthesis, then we are not concerned. |
|
70 | + $prev = $phpcsFile->findPrevious(T_WHITESPACE, ($end - 1), null, true); |
|
71 | + if ($tokens[$prev]['code'] !== T_CLOSE_PARENTHESIS) { |
|
72 | + $phpcsFile->recordMetric($stackPtr, 'Brackets around echoed strings', 'no'); |
|
73 | + return; |
|
74 | + } |
|
75 | + |
|
76 | + // If the parenthesis don't match, then we are not concerned. |
|
77 | + if ($tokens[$firstContent]['parenthesis_closer'] !== $prev) { |
|
78 | + $phpcsFile->recordMetric($stackPtr, 'Brackets around echoed strings', 'no'); |
|
79 | + return; |
|
80 | + } |
|
81 | + |
|
82 | + $phpcsFile->recordMetric($stackPtr, 'Brackets around echoed strings', 'yes'); |
|
83 | + |
|
84 | + if (($phpcsFile->findNext(PHP_CodeSniffer_Tokens::$operators, $stackPtr, $end, false)) === false) { |
|
85 | + // There are no arithmetic operators in this. |
|
86 | + $error = 'Echoed strings should not be bracketed'; |
|
87 | + $fix = $phpcsFile->addFixableError($error, $stackPtr, 'HasBracket'); |
|
88 | + if ($fix === true) { |
|
89 | + $phpcsFile->fixer->beginChangeset(); |
|
90 | + $phpcsFile->fixer->replaceToken($firstContent, ''); |
|
91 | + if ($tokens[($firstContent - 1)]['code'] !== T_WHITESPACE) { |
|
92 | + $phpcsFile->fixer->addContent(($firstContent - 1), ' '); |
|
93 | + } |
|
94 | + |
|
95 | + $phpcsFile->fixer->replaceToken($prev, ''); |
|
96 | + $phpcsFile->fixer->endChangeset(); |
|
97 | + } |
|
98 | + } |
|
99 | + |
|
100 | + }//end process() |
|
101 | 101 | |
102 | 102 | |
103 | 103 | }//end class |
@@ -39,7 +39,7 @@ discard block |
||
39 | 39 | */ |
40 | 40 | public function register() |
41 | 41 | { |
42 | - return array(T_ECHO); |
|
42 | + return array( T_ECHO ); |
|
43 | 43 | |
44 | 44 | }//end register() |
45 | 45 | |
@@ -53,46 +53,46 @@ discard block |
||
53 | 53 | * |
54 | 54 | * @return void |
55 | 55 | */ |
56 | - public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) |
|
56 | + public function process( PHP_CodeSniffer_File $phpcsFile, $stackPtr ) |
|
57 | 57 | { |
58 | 58 | $tokens = $phpcsFile->getTokens(); |
59 | 59 | |
60 | - $firstContent = $phpcsFile->findNext(T_WHITESPACE, ($stackPtr + 1), null, true); |
|
60 | + $firstContent = $phpcsFile->findNext( T_WHITESPACE, ( $stackPtr + 1 ), null, true ); |
|
61 | 61 | // If the first non-whitespace token is not an opening parenthesis, then we are not concerned. |
62 | - if ($tokens[$firstContent]['code'] !== T_OPEN_PARENTHESIS) { |
|
63 | - $phpcsFile->recordMetric($stackPtr, 'Brackets around echoed strings', 'no'); |
|
62 | + if ( $tokens[ $firstContent ][ 'code' ] !== T_OPEN_PARENTHESIS ) { |
|
63 | + $phpcsFile->recordMetric( $stackPtr, 'Brackets around echoed strings', 'no' ); |
|
64 | 64 | return; |
65 | 65 | } |
66 | 66 | |
67 | - $end = $phpcsFile->findNext(array(T_SEMICOLON, T_CLOSE_TAG), $stackPtr, null, false); |
|
67 | + $end = $phpcsFile->findNext( array( T_SEMICOLON, T_CLOSE_TAG ), $stackPtr, null, false ); |
|
68 | 68 | |
69 | 69 | // If the token before the semi-colon is not a closing parenthesis, then we are not concerned. |
70 | - $prev = $phpcsFile->findPrevious(T_WHITESPACE, ($end - 1), null, true); |
|
71 | - if ($tokens[$prev]['code'] !== T_CLOSE_PARENTHESIS) { |
|
72 | - $phpcsFile->recordMetric($stackPtr, 'Brackets around echoed strings', 'no'); |
|
70 | + $prev = $phpcsFile->findPrevious( T_WHITESPACE, ( $end - 1 ), null, true ); |
|
71 | + if ( $tokens[ $prev ][ 'code' ] !== T_CLOSE_PARENTHESIS ) { |
|
72 | + $phpcsFile->recordMetric( $stackPtr, 'Brackets around echoed strings', 'no' ); |
|
73 | 73 | return; |
74 | 74 | } |
75 | 75 | |
76 | 76 | // If the parenthesis don't match, then we are not concerned. |
77 | - if ($tokens[$firstContent]['parenthesis_closer'] !== $prev) { |
|
78 | - $phpcsFile->recordMetric($stackPtr, 'Brackets around echoed strings', 'no'); |
|
77 | + if ( $tokens[ $firstContent ][ 'parenthesis_closer' ] !== $prev ) { |
|
78 | + $phpcsFile->recordMetric( $stackPtr, 'Brackets around echoed strings', 'no' ); |
|
79 | 79 | return; |
80 | 80 | } |
81 | 81 | |
82 | - $phpcsFile->recordMetric($stackPtr, 'Brackets around echoed strings', 'yes'); |
|
82 | + $phpcsFile->recordMetric( $stackPtr, 'Brackets around echoed strings', 'yes' ); |
|
83 | 83 | |
84 | - if (($phpcsFile->findNext(PHP_CodeSniffer_Tokens::$operators, $stackPtr, $end, false)) === false) { |
|
84 | + if ( ( $phpcsFile->findNext( PHP_CodeSniffer_Tokens::$operators, $stackPtr, $end, false ) ) === false ) { |
|
85 | 85 | // There are no arithmetic operators in this. |
86 | 86 | $error = 'Echoed strings should not be bracketed'; |
87 | - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'HasBracket'); |
|
88 | - if ($fix === true) { |
|
87 | + $fix = $phpcsFile->addFixableError( $error, $stackPtr, 'HasBracket' ); |
|
88 | + if ( $fix === true ) { |
|
89 | 89 | $phpcsFile->fixer->beginChangeset(); |
90 | - $phpcsFile->fixer->replaceToken($firstContent, ''); |
|
91 | - if ($tokens[($firstContent - 1)]['code'] !== T_WHITESPACE) { |
|
92 | - $phpcsFile->fixer->addContent(($firstContent - 1), ' '); |
|
90 | + $phpcsFile->fixer->replaceToken( $firstContent, '' ); |
|
91 | + if ( $tokens[ ( $firstContent - 1 ) ][ 'code' ] !== T_WHITESPACE ) { |
|
92 | + $phpcsFile->fixer->addContent( ( $firstContent - 1 ), ' ' ); |
|
93 | 93 | } |
94 | 94 | |
95 | - $phpcsFile->fixer->replaceToken($prev, ''); |
|
95 | + $phpcsFile->fixer->replaceToken( $prev, '' ); |
|
96 | 96 | $phpcsFile->fixer->endChangeset(); |
97 | 97 | } |
98 | 98 | } |
@@ -28,8 +28,7 @@ discard block |
||
28 | 28 | * @version Release: @package_version@ |
29 | 29 | * @link http://pear.php.net/package/PHP_CodeSniffer |
30 | 30 | */ |
31 | -class Squiz_Sniffs_Strings_EchoedStringsSniff implements PHP_CodeSniffer_Sniff |
|
32 | -{ |
|
31 | +class Squiz_Sniffs_Strings_EchoedStringsSniff implements PHP_CodeSniffer_Sniff { |
|
33 | 32 | |
34 | 33 | |
35 | 34 | /** |
@@ -37,8 +36,7 @@ discard block |
||
37 | 36 | * |
38 | 37 | * @return array |
39 | 38 | */ |
40 | - public function register() |
|
41 | - { |
|
39 | + public function register() { |
|
42 | 40 | return array(T_ECHO); |
43 | 41 | |
44 | 42 | }//end register() |
@@ -53,8 +51,7 @@ discard block |
||
53 | 51 | * |
54 | 52 | * @return void |
55 | 53 | */ |
56 | - public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) |
|
57 | - { |
|
54 | + public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) { |
|
58 | 55 | $tokens = $phpcsFile->getTokens(); |
59 | 56 | |
60 | 57 | $firstContent = $phpcsFile->findNext(T_WHITESPACE, ($stackPtr + 1), null, true); |
@@ -44,7 +44,7 @@ |
||
44 | 44 | /** |
45 | 45 | * Returns an array of tokens this test wants to listen for. |
46 | 46 | * |
47 | - * @return array |
|
47 | + * @return integer[] |
|
48 | 48 | */ |
49 | 49 | public function register() |
50 | 50 | { |
@@ -30,287 +30,287 @@ |
||
30 | 30 | class Squiz_Sniffs_WhiteSpace_ControlStructureSpacingSniff implements PHP_CodeSniffer_Sniff |
31 | 31 | { |
32 | 32 | |
33 | - /** |
|
34 | - * A list of tokenizers this sniff supports. |
|
35 | - * |
|
36 | - * @var array |
|
37 | - */ |
|
38 | - public $supportedTokenizers = array( |
|
39 | - 'PHP', |
|
40 | - 'JS', |
|
41 | - ); |
|
42 | - |
|
43 | - |
|
44 | - /** |
|
45 | - * Returns an array of tokens this test wants to listen for. |
|
46 | - * |
|
47 | - * @return array |
|
48 | - */ |
|
49 | - public function register() |
|
50 | - { |
|
51 | - return array( |
|
52 | - T_IF, |
|
53 | - T_WHILE, |
|
54 | - T_FOREACH, |
|
55 | - T_FOR, |
|
56 | - T_SWITCH, |
|
57 | - T_DO, |
|
58 | - T_ELSE, |
|
59 | - T_ELSEIF, |
|
60 | - T_TRY, |
|
61 | - T_CATCH, |
|
62 | - ); |
|
63 | - |
|
64 | - }//end register() |
|
65 | - |
|
66 | - |
|
67 | - /** |
|
68 | - * Processes this test, when one of its tokens is encountered. |
|
69 | - * |
|
70 | - * @param PHP_CodeSniffer_File $phpcsFile The file being scanned. |
|
71 | - * @param int $stackPtr The position of the current token |
|
72 | - * in the stack passed in $tokens. |
|
73 | - * |
|
74 | - * @return void |
|
75 | - */ |
|
76 | - public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) |
|
77 | - { |
|
78 | - $tokens = $phpcsFile->getTokens(); |
|
79 | - |
|
80 | - if (isset($tokens[$stackPtr]['parenthesis_opener']) === true |
|
81 | - && isset($tokens[$stackPtr]['parenthesis_closer']) === true |
|
82 | - ) { |
|
83 | - $parenOpener = $tokens[$stackPtr]['parenthesis_opener']; |
|
84 | - $parenCloser = $tokens[$stackPtr]['parenthesis_closer']; |
|
85 | - if ($tokens[($parenOpener + 1)]['code'] === T_WHITESPACE) { |
|
86 | - $gap = $tokens[($parenOpener + 1)]['length']; |
|
87 | - |
|
88 | - if ($gap === 0) { |
|
89 | - $phpcsFile->recordMetric($stackPtr, 'Spaces after control structure open parenthesis', 'newline'); |
|
90 | - $gap = 'newline'; |
|
91 | - } else { |
|
92 | - $phpcsFile->recordMetric($stackPtr, 'Spaces after control structure open parenthesis', $gap); |
|
93 | - } |
|
94 | - |
|
95 | - $error = 'Expected 0 spaces after opening bracket; %s found'; |
|
96 | - $data = array($gap); |
|
97 | - $fix = $phpcsFile->addFixableError($error, ($parenOpener + 1), 'SpacingAfterOpenBrace', $data); |
|
98 | - if ($fix === true) { |
|
99 | - $phpcsFile->fixer->replaceToken(($parenOpener + 1), ''); |
|
100 | - } |
|
101 | - } else { |
|
102 | - $phpcsFile->recordMetric($stackPtr, 'Spaces after control structure open parenthesis', 0); |
|
103 | - } |
|
104 | - |
|
105 | - if ($tokens[$parenOpener]['line'] === $tokens[$parenCloser]['line'] |
|
106 | - && $tokens[($parenCloser - 1)]['code'] === T_WHITESPACE |
|
107 | - ) { |
|
108 | - $gap = $tokens[($parenCloser - 1)]['length']; |
|
109 | - $error = 'Expected 0 spaces before closing bracket; %s found'; |
|
110 | - $data = array($gap); |
|
111 | - $fix = $phpcsFile->addFixableError($error, ($parenCloser - 1), 'SpaceBeforeCloseBrace', $data); |
|
112 | - if ($fix === true) { |
|
113 | - $phpcsFile->fixer->replaceToken(($parenCloser - 1), ''); |
|
114 | - } |
|
115 | - |
|
116 | - if ($gap === 0) { |
|
117 | - $phpcsFile->recordMetric($stackPtr, 'Spaces before control structure close parenthesis', 'newline'); |
|
118 | - } else { |
|
119 | - $phpcsFile->recordMetric($stackPtr, 'Spaces before control structure close parenthesis', $gap); |
|
120 | - } |
|
121 | - } else { |
|
122 | - $phpcsFile->recordMetric($stackPtr, 'Spaces before control structure close parenthesis', 0); |
|
123 | - } |
|
124 | - }//end if |
|
125 | - |
|
126 | - if (isset($tokens[$stackPtr]['scope_closer']) === false) { |
|
127 | - return; |
|
128 | - } |
|
129 | - |
|
130 | - $scopeOpener = $tokens[$stackPtr]['scope_opener']; |
|
131 | - $scopeCloser = $tokens[$stackPtr]['scope_closer']; |
|
132 | - |
|
133 | - for ($firstContent = ($scopeOpener + 1); $firstContent < $phpcsFile->numTokens; $firstContent++) { |
|
134 | - if ($tokens[$firstContent]['code'] !== T_WHITESPACE) { |
|
135 | - break; |
|
136 | - } |
|
137 | - } |
|
138 | - |
|
139 | - // We ignore spacing for some structures that tend to have their own rules. |
|
140 | - $ignore = array( |
|
141 | - T_FUNCTION => true, |
|
142 | - T_CLASS => true, |
|
143 | - T_INTERFACE => true, |
|
144 | - T_TRAIT => true, |
|
145 | - T_DOC_COMMENT_OPEN_TAG => true, |
|
146 | - ); |
|
147 | - |
|
148 | - if (isset($ignore[$tokens[$firstContent]['code']]) === false |
|
149 | - && $tokens[$firstContent]['line'] >= ($tokens[$scopeOpener]['line'] + 2) |
|
150 | - ) { |
|
151 | - $error = 'Blank line found at start of control structure'; |
|
152 | - $fix = $phpcsFile->addFixableError($error, $scopeOpener, 'SpacingAfterOpen'); |
|
153 | - |
|
154 | - if ($fix === true) { |
|
155 | - $phpcsFile->fixer->beginChangeset(); |
|
156 | - $i = ($scopeOpener + 1); |
|
157 | - while ($tokens[$i]['line'] !== $tokens[$firstContent]['line']) { |
|
158 | - $phpcsFile->fixer->replaceToken($i, ''); |
|
159 | - $i++; |
|
160 | - } |
|
161 | - |
|
162 | - $phpcsFile->fixer->addNewline($scopeOpener); |
|
163 | - $phpcsFile->fixer->endChangeset(); |
|
164 | - } |
|
165 | - } |
|
166 | - |
|
167 | - if ($firstContent !== $scopeCloser) { |
|
168 | - $lastContent = $phpcsFile->findPrevious( |
|
169 | - T_WHITESPACE, |
|
170 | - ($scopeCloser - 1), |
|
171 | - null, |
|
172 | - true |
|
173 | - ); |
|
174 | - |
|
175 | - $lastNonEmptyContent = $phpcsFile->findPrevious( |
|
176 | - PHP_CodeSniffer_Tokens::$emptyTokens, |
|
177 | - ($scopeCloser - 1), |
|
178 | - null, |
|
179 | - true |
|
180 | - ); |
|
181 | - |
|
182 | - $checkToken = $lastContent; |
|
183 | - if (isset($tokens[$lastNonEmptyContent]['scope_condition']) === true) { |
|
184 | - $checkToken = $tokens[$lastNonEmptyContent]['scope_condition']; |
|
185 | - } |
|
186 | - |
|
187 | - if (isset($ignore[$tokens[$checkToken]['code']]) === false |
|
188 | - && $tokens[$lastContent]['line'] <= ($tokens[$scopeCloser]['line'] - 2) |
|
189 | - ) { |
|
190 | - $errorToken = $scopeCloser; |
|
191 | - for ($i = ($scopeCloser - 1); $i > $lastContent; $i--) { |
|
192 | - if ($tokens[$i]['line'] < $tokens[$scopeCloser]['line']) { |
|
193 | - $errorToken = $i; |
|
194 | - break; |
|
195 | - } |
|
196 | - } |
|
197 | - |
|
198 | - $error = 'Blank line found at end of control structure'; |
|
199 | - $fix = $phpcsFile->addFixableError($error, $errorToken, 'SpacingBeforeClose'); |
|
200 | - |
|
201 | - if ($fix === true) { |
|
202 | - $phpcsFile->fixer->beginChangeset(); |
|
203 | - $i = ($scopeCloser - 1); |
|
204 | - for ($i = ($scopeCloser - 1); $i > $lastContent; $i--) { |
|
205 | - if ($tokens[$i]['line'] === $tokens[$scopeCloser]['line']) { |
|
206 | - continue; |
|
207 | - } |
|
208 | - |
|
209 | - if ($tokens[$i]['line'] === $tokens[$lastContent]['line']) { |
|
210 | - break; |
|
211 | - } |
|
212 | - |
|
213 | - $phpcsFile->fixer->replaceToken($i, ''); |
|
214 | - } |
|
215 | - |
|
216 | - $phpcsFile->fixer->endChangeset(); |
|
217 | - } |
|
218 | - }//end if |
|
219 | - }//end if |
|
220 | - |
|
221 | - $trailingContent = $phpcsFile->findNext( |
|
222 | - T_WHITESPACE, |
|
223 | - ($scopeCloser + 1), |
|
224 | - null, |
|
225 | - true |
|
226 | - ); |
|
227 | - |
|
228 | - if ($tokens[$trailingContent]['code'] === T_COMMENT) { |
|
229 | - // Special exception for code where the comment about |
|
230 | - // an ELSE or ELSEIF is written between the control structures. |
|
231 | - $nextCode = $phpcsFile->findNext( |
|
232 | - PHP_CodeSniffer_Tokens::$emptyTokens, |
|
233 | - ($scopeCloser + 1), |
|
234 | - null, |
|
235 | - true |
|
236 | - ); |
|
237 | - |
|
238 | - if ($tokens[$nextCode]['code'] === T_ELSE |
|
239 | - || $tokens[$nextCode]['code'] === T_ELSEIF |
|
240 | - ) { |
|
241 | - $trailingContent = $nextCode; |
|
242 | - } |
|
243 | - }//end if |
|
244 | - |
|
245 | - if ($tokens[$trailingContent]['code'] === T_ELSE) { |
|
246 | - if ($tokens[$stackPtr]['code'] === T_IF) { |
|
247 | - // IF with ELSE. |
|
248 | - return; |
|
249 | - } |
|
250 | - } |
|
251 | - |
|
252 | - if ($tokens[$trailingContent]['code'] === T_WHILE |
|
253 | - && $tokens[$stackPtr]['code'] === T_DO |
|
254 | - ) { |
|
255 | - // DO with WHILE. |
|
256 | - return; |
|
257 | - } |
|
258 | - |
|
259 | - if ($tokens[$trailingContent]['code'] === T_CLOSE_TAG) { |
|
260 | - // At the end of the script or embedded code. |
|
261 | - return; |
|
262 | - } |
|
263 | - |
|
264 | - if (isset($tokens[$trailingContent]['scope_condition']) === true |
|
265 | - && $tokens[$trailingContent]['scope_condition'] !== $trailingContent |
|
266 | - && isset($tokens[$trailingContent]['scope_opener']) === true |
|
267 | - && $tokens[$trailingContent]['scope_opener'] !== $trailingContent |
|
268 | - ) { |
|
269 | - // Another control structure's closing brace. |
|
270 | - $owner = $tokens[$trailingContent]['scope_condition']; |
|
271 | - if ($tokens[$owner]['code'] === T_FUNCTION) { |
|
272 | - // The next content is the closing brace of a function |
|
273 | - // so normal function rules apply and we can ignore it. |
|
274 | - return; |
|
275 | - } |
|
276 | - |
|
277 | - if ($tokens[$owner]['code'] === T_CLOSURE |
|
278 | - && ($phpcsFile->hasCondition($stackPtr, T_FUNCTION) === true |
|
279 | - || $phpcsFile->hasCondition($stackPtr, T_CLOSURE) === true |
|
280 | - || isset($tokens[$stackPtr]['nested_parenthesis']) === true) |
|
281 | - ) { |
|
282 | - return; |
|
283 | - } |
|
284 | - |
|
285 | - if ($tokens[$trailingContent]['line'] !== ($tokens[$scopeCloser]['line'] + 1)) { |
|
286 | - $error = 'Blank line found after control structure'; |
|
287 | - $fix = $phpcsFile->addFixableError($error, $scopeCloser, 'LineAfterClose'); |
|
288 | - |
|
289 | - if ($fix === true) { |
|
290 | - $phpcsFile->fixer->beginChangeset(); |
|
291 | - $i = ($scopeCloser + 1); |
|
292 | - while ($tokens[$i]['line'] !== $tokens[$trailingContent]['line']) { |
|
293 | - $phpcsFile->fixer->replaceToken($i, ''); |
|
294 | - $i++; |
|
295 | - } |
|
296 | - |
|
297 | - $phpcsFile->fixer->addNewline($scopeCloser); |
|
298 | - $phpcsFile->fixer->endChangeset(); |
|
299 | - } |
|
300 | - } |
|
301 | - } else if ($tokens[$trailingContent]['code'] !== T_ELSE |
|
302 | - && $tokens[$trailingContent]['code'] !== T_ELSEIF |
|
303 | - && $tokens[$trailingContent]['code'] !== T_CATCH |
|
304 | - && $tokens[$trailingContent]['line'] === ($tokens[$scopeCloser]['line'] + 1) |
|
305 | - ) { |
|
306 | - $error = 'No blank line found after control structure'; |
|
307 | - $fix = $phpcsFile->addFixableError($error, $scopeCloser, 'NoLineAfterClose'); |
|
308 | - if ($fix === true) { |
|
309 | - $phpcsFile->fixer->addNewline($scopeCloser); |
|
310 | - } |
|
311 | - }//end if |
|
312 | - |
|
313 | - }//end process() |
|
33 | + /** |
|
34 | + * A list of tokenizers this sniff supports. |
|
35 | + * |
|
36 | + * @var array |
|
37 | + */ |
|
38 | + public $supportedTokenizers = array( |
|
39 | + 'PHP', |
|
40 | + 'JS', |
|
41 | + ); |
|
42 | + |
|
43 | + |
|
44 | + /** |
|
45 | + * Returns an array of tokens this test wants to listen for. |
|
46 | + * |
|
47 | + * @return array |
|
48 | + */ |
|
49 | + public function register() |
|
50 | + { |
|
51 | + return array( |
|
52 | + T_IF, |
|
53 | + T_WHILE, |
|
54 | + T_FOREACH, |
|
55 | + T_FOR, |
|
56 | + T_SWITCH, |
|
57 | + T_DO, |
|
58 | + T_ELSE, |
|
59 | + T_ELSEIF, |
|
60 | + T_TRY, |
|
61 | + T_CATCH, |
|
62 | + ); |
|
63 | + |
|
64 | + }//end register() |
|
65 | + |
|
66 | + |
|
67 | + /** |
|
68 | + * Processes this test, when one of its tokens is encountered. |
|
69 | + * |
|
70 | + * @param PHP_CodeSniffer_File $phpcsFile The file being scanned. |
|
71 | + * @param int $stackPtr The position of the current token |
|
72 | + * in the stack passed in $tokens. |
|
73 | + * |
|
74 | + * @return void |
|
75 | + */ |
|
76 | + public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) |
|
77 | + { |
|
78 | + $tokens = $phpcsFile->getTokens(); |
|
79 | + |
|
80 | + if (isset($tokens[$stackPtr]['parenthesis_opener']) === true |
|
81 | + && isset($tokens[$stackPtr]['parenthesis_closer']) === true |
|
82 | + ) { |
|
83 | + $parenOpener = $tokens[$stackPtr]['parenthesis_opener']; |
|
84 | + $parenCloser = $tokens[$stackPtr]['parenthesis_closer']; |
|
85 | + if ($tokens[($parenOpener + 1)]['code'] === T_WHITESPACE) { |
|
86 | + $gap = $tokens[($parenOpener + 1)]['length']; |
|
87 | + |
|
88 | + if ($gap === 0) { |
|
89 | + $phpcsFile->recordMetric($stackPtr, 'Spaces after control structure open parenthesis', 'newline'); |
|
90 | + $gap = 'newline'; |
|
91 | + } else { |
|
92 | + $phpcsFile->recordMetric($stackPtr, 'Spaces after control structure open parenthesis', $gap); |
|
93 | + } |
|
94 | + |
|
95 | + $error = 'Expected 0 spaces after opening bracket; %s found'; |
|
96 | + $data = array($gap); |
|
97 | + $fix = $phpcsFile->addFixableError($error, ($parenOpener + 1), 'SpacingAfterOpenBrace', $data); |
|
98 | + if ($fix === true) { |
|
99 | + $phpcsFile->fixer->replaceToken(($parenOpener + 1), ''); |
|
100 | + } |
|
101 | + } else { |
|
102 | + $phpcsFile->recordMetric($stackPtr, 'Spaces after control structure open parenthesis', 0); |
|
103 | + } |
|
104 | + |
|
105 | + if ($tokens[$parenOpener]['line'] === $tokens[$parenCloser]['line'] |
|
106 | + && $tokens[($parenCloser - 1)]['code'] === T_WHITESPACE |
|
107 | + ) { |
|
108 | + $gap = $tokens[($parenCloser - 1)]['length']; |
|
109 | + $error = 'Expected 0 spaces before closing bracket; %s found'; |
|
110 | + $data = array($gap); |
|
111 | + $fix = $phpcsFile->addFixableError($error, ($parenCloser - 1), 'SpaceBeforeCloseBrace', $data); |
|
112 | + if ($fix === true) { |
|
113 | + $phpcsFile->fixer->replaceToken(($parenCloser - 1), ''); |
|
114 | + } |
|
115 | + |
|
116 | + if ($gap === 0) { |
|
117 | + $phpcsFile->recordMetric($stackPtr, 'Spaces before control structure close parenthesis', 'newline'); |
|
118 | + } else { |
|
119 | + $phpcsFile->recordMetric($stackPtr, 'Spaces before control structure close parenthesis', $gap); |
|
120 | + } |
|
121 | + } else { |
|
122 | + $phpcsFile->recordMetric($stackPtr, 'Spaces before control structure close parenthesis', 0); |
|
123 | + } |
|
124 | + }//end if |
|
125 | + |
|
126 | + if (isset($tokens[$stackPtr]['scope_closer']) === false) { |
|
127 | + return; |
|
128 | + } |
|
129 | + |
|
130 | + $scopeOpener = $tokens[$stackPtr]['scope_opener']; |
|
131 | + $scopeCloser = $tokens[$stackPtr]['scope_closer']; |
|
132 | + |
|
133 | + for ($firstContent = ($scopeOpener + 1); $firstContent < $phpcsFile->numTokens; $firstContent++) { |
|
134 | + if ($tokens[$firstContent]['code'] !== T_WHITESPACE) { |
|
135 | + break; |
|
136 | + } |
|
137 | + } |
|
138 | + |
|
139 | + // We ignore spacing for some structures that tend to have their own rules. |
|
140 | + $ignore = array( |
|
141 | + T_FUNCTION => true, |
|
142 | + T_CLASS => true, |
|
143 | + T_INTERFACE => true, |
|
144 | + T_TRAIT => true, |
|
145 | + T_DOC_COMMENT_OPEN_TAG => true, |
|
146 | + ); |
|
147 | + |
|
148 | + if (isset($ignore[$tokens[$firstContent]['code']]) === false |
|
149 | + && $tokens[$firstContent]['line'] >= ($tokens[$scopeOpener]['line'] + 2) |
|
150 | + ) { |
|
151 | + $error = 'Blank line found at start of control structure'; |
|
152 | + $fix = $phpcsFile->addFixableError($error, $scopeOpener, 'SpacingAfterOpen'); |
|
153 | + |
|
154 | + if ($fix === true) { |
|
155 | + $phpcsFile->fixer->beginChangeset(); |
|
156 | + $i = ($scopeOpener + 1); |
|
157 | + while ($tokens[$i]['line'] !== $tokens[$firstContent]['line']) { |
|
158 | + $phpcsFile->fixer->replaceToken($i, ''); |
|
159 | + $i++; |
|
160 | + } |
|
161 | + |
|
162 | + $phpcsFile->fixer->addNewline($scopeOpener); |
|
163 | + $phpcsFile->fixer->endChangeset(); |
|
164 | + } |
|
165 | + } |
|
166 | + |
|
167 | + if ($firstContent !== $scopeCloser) { |
|
168 | + $lastContent = $phpcsFile->findPrevious( |
|
169 | + T_WHITESPACE, |
|
170 | + ($scopeCloser - 1), |
|
171 | + null, |
|
172 | + true |
|
173 | + ); |
|
174 | + |
|
175 | + $lastNonEmptyContent = $phpcsFile->findPrevious( |
|
176 | + PHP_CodeSniffer_Tokens::$emptyTokens, |
|
177 | + ($scopeCloser - 1), |
|
178 | + null, |
|
179 | + true |
|
180 | + ); |
|
181 | + |
|
182 | + $checkToken = $lastContent; |
|
183 | + if (isset($tokens[$lastNonEmptyContent]['scope_condition']) === true) { |
|
184 | + $checkToken = $tokens[$lastNonEmptyContent]['scope_condition']; |
|
185 | + } |
|
186 | + |
|
187 | + if (isset($ignore[$tokens[$checkToken]['code']]) === false |
|
188 | + && $tokens[$lastContent]['line'] <= ($tokens[$scopeCloser]['line'] - 2) |
|
189 | + ) { |
|
190 | + $errorToken = $scopeCloser; |
|
191 | + for ($i = ($scopeCloser - 1); $i > $lastContent; $i--) { |
|
192 | + if ($tokens[$i]['line'] < $tokens[$scopeCloser]['line']) { |
|
193 | + $errorToken = $i; |
|
194 | + break; |
|
195 | + } |
|
196 | + } |
|
197 | + |
|
198 | + $error = 'Blank line found at end of control structure'; |
|
199 | + $fix = $phpcsFile->addFixableError($error, $errorToken, 'SpacingBeforeClose'); |
|
200 | + |
|
201 | + if ($fix === true) { |
|
202 | + $phpcsFile->fixer->beginChangeset(); |
|
203 | + $i = ($scopeCloser - 1); |
|
204 | + for ($i = ($scopeCloser - 1); $i > $lastContent; $i--) { |
|
205 | + if ($tokens[$i]['line'] === $tokens[$scopeCloser]['line']) { |
|
206 | + continue; |
|
207 | + } |
|
208 | + |
|
209 | + if ($tokens[$i]['line'] === $tokens[$lastContent]['line']) { |
|
210 | + break; |
|
211 | + } |
|
212 | + |
|
213 | + $phpcsFile->fixer->replaceToken($i, ''); |
|
214 | + } |
|
215 | + |
|
216 | + $phpcsFile->fixer->endChangeset(); |
|
217 | + } |
|
218 | + }//end if |
|
219 | + }//end if |
|
220 | + |
|
221 | + $trailingContent = $phpcsFile->findNext( |
|
222 | + T_WHITESPACE, |
|
223 | + ($scopeCloser + 1), |
|
224 | + null, |
|
225 | + true |
|
226 | + ); |
|
227 | + |
|
228 | + if ($tokens[$trailingContent]['code'] === T_COMMENT) { |
|
229 | + // Special exception for code where the comment about |
|
230 | + // an ELSE or ELSEIF is written between the control structures. |
|
231 | + $nextCode = $phpcsFile->findNext( |
|
232 | + PHP_CodeSniffer_Tokens::$emptyTokens, |
|
233 | + ($scopeCloser + 1), |
|
234 | + null, |
|
235 | + true |
|
236 | + ); |
|
237 | + |
|
238 | + if ($tokens[$nextCode]['code'] === T_ELSE |
|
239 | + || $tokens[$nextCode]['code'] === T_ELSEIF |
|
240 | + ) { |
|
241 | + $trailingContent = $nextCode; |
|
242 | + } |
|
243 | + }//end if |
|
244 | + |
|
245 | + if ($tokens[$trailingContent]['code'] === T_ELSE) { |
|
246 | + if ($tokens[$stackPtr]['code'] === T_IF) { |
|
247 | + // IF with ELSE. |
|
248 | + return; |
|
249 | + } |
|
250 | + } |
|
251 | + |
|
252 | + if ($tokens[$trailingContent]['code'] === T_WHILE |
|
253 | + && $tokens[$stackPtr]['code'] === T_DO |
|
254 | + ) { |
|
255 | + // DO with WHILE. |
|
256 | + return; |
|
257 | + } |
|
258 | + |
|
259 | + if ($tokens[$trailingContent]['code'] === T_CLOSE_TAG) { |
|
260 | + // At the end of the script or embedded code. |
|
261 | + return; |
|
262 | + } |
|
263 | + |
|
264 | + if (isset($tokens[$trailingContent]['scope_condition']) === true |
|
265 | + && $tokens[$trailingContent]['scope_condition'] !== $trailingContent |
|
266 | + && isset($tokens[$trailingContent]['scope_opener']) === true |
|
267 | + && $tokens[$trailingContent]['scope_opener'] !== $trailingContent |
|
268 | + ) { |
|
269 | + // Another control structure's closing brace. |
|
270 | + $owner = $tokens[$trailingContent]['scope_condition']; |
|
271 | + if ($tokens[$owner]['code'] === T_FUNCTION) { |
|
272 | + // The next content is the closing brace of a function |
|
273 | + // so normal function rules apply and we can ignore it. |
|
274 | + return; |
|
275 | + } |
|
276 | + |
|
277 | + if ($tokens[$owner]['code'] === T_CLOSURE |
|
278 | + && ($phpcsFile->hasCondition($stackPtr, T_FUNCTION) === true |
|
279 | + || $phpcsFile->hasCondition($stackPtr, T_CLOSURE) === true |
|
280 | + || isset($tokens[$stackPtr]['nested_parenthesis']) === true) |
|
281 | + ) { |
|
282 | + return; |
|
283 | + } |
|
284 | + |
|
285 | + if ($tokens[$trailingContent]['line'] !== ($tokens[$scopeCloser]['line'] + 1)) { |
|
286 | + $error = 'Blank line found after control structure'; |
|
287 | + $fix = $phpcsFile->addFixableError($error, $scopeCloser, 'LineAfterClose'); |
|
288 | + |
|
289 | + if ($fix === true) { |
|
290 | + $phpcsFile->fixer->beginChangeset(); |
|
291 | + $i = ($scopeCloser + 1); |
|
292 | + while ($tokens[$i]['line'] !== $tokens[$trailingContent]['line']) { |
|
293 | + $phpcsFile->fixer->replaceToken($i, ''); |
|
294 | + $i++; |
|
295 | + } |
|
296 | + |
|
297 | + $phpcsFile->fixer->addNewline($scopeCloser); |
|
298 | + $phpcsFile->fixer->endChangeset(); |
|
299 | + } |
|
300 | + } |
|
301 | + } else if ($tokens[$trailingContent]['code'] !== T_ELSE |
|
302 | + && $tokens[$trailingContent]['code'] !== T_ELSEIF |
|
303 | + && $tokens[$trailingContent]['code'] !== T_CATCH |
|
304 | + && $tokens[$trailingContent]['line'] === ($tokens[$scopeCloser]['line'] + 1) |
|
305 | + ) { |
|
306 | + $error = 'No blank line found after control structure'; |
|
307 | + $fix = $phpcsFile->addFixableError($error, $scopeCloser, 'NoLineAfterClose'); |
|
308 | + if ($fix === true) { |
|
309 | + $phpcsFile->fixer->addNewline($scopeCloser); |
|
310 | + } |
|
311 | + }//end if |
|
312 | + |
|
313 | + }//end process() |
|
314 | 314 | |
315 | 315 | |
316 | 316 | }//end class |
@@ -73,65 +73,65 @@ discard block |
||
73 | 73 | * |
74 | 74 | * @return void |
75 | 75 | */ |
76 | - public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) |
|
76 | + public function process( PHP_CodeSniffer_File $phpcsFile, $stackPtr ) |
|
77 | 77 | { |
78 | 78 | $tokens = $phpcsFile->getTokens(); |
79 | 79 | |
80 | - if (isset($tokens[$stackPtr]['parenthesis_opener']) === true |
|
81 | - && isset($tokens[$stackPtr]['parenthesis_closer']) === true |
|
80 | + if ( isset( $tokens[ $stackPtr ][ 'parenthesis_opener' ] ) === true |
|
81 | + && isset( $tokens[ $stackPtr ][ 'parenthesis_closer' ] ) === true |
|
82 | 82 | ) { |
83 | - $parenOpener = $tokens[$stackPtr]['parenthesis_opener']; |
|
84 | - $parenCloser = $tokens[$stackPtr]['parenthesis_closer']; |
|
85 | - if ($tokens[($parenOpener + 1)]['code'] === T_WHITESPACE) { |
|
86 | - $gap = $tokens[($parenOpener + 1)]['length']; |
|
83 | + $parenOpener = $tokens[ $stackPtr ][ 'parenthesis_opener' ]; |
|
84 | + $parenCloser = $tokens[ $stackPtr ][ 'parenthesis_closer' ]; |
|
85 | + if ( $tokens[ ( $parenOpener + 1 ) ][ 'code' ] === T_WHITESPACE ) { |
|
86 | + $gap = $tokens[ ( $parenOpener + 1 ) ][ 'length' ]; |
|
87 | 87 | |
88 | - if ($gap === 0) { |
|
89 | - $phpcsFile->recordMetric($stackPtr, 'Spaces after control structure open parenthesis', 'newline'); |
|
88 | + if ( $gap === 0 ) { |
|
89 | + $phpcsFile->recordMetric( $stackPtr, 'Spaces after control structure open parenthesis', 'newline' ); |
|
90 | 90 | $gap = 'newline'; |
91 | 91 | } else { |
92 | - $phpcsFile->recordMetric($stackPtr, 'Spaces after control structure open parenthesis', $gap); |
|
92 | + $phpcsFile->recordMetric( $stackPtr, 'Spaces after control structure open parenthesis', $gap ); |
|
93 | 93 | } |
94 | 94 | |
95 | 95 | $error = 'Expected 0 spaces after opening bracket; %s found'; |
96 | - $data = array($gap); |
|
97 | - $fix = $phpcsFile->addFixableError($error, ($parenOpener + 1), 'SpacingAfterOpenBrace', $data); |
|
98 | - if ($fix === true) { |
|
99 | - $phpcsFile->fixer->replaceToken(($parenOpener + 1), ''); |
|
96 | + $data = array( $gap ); |
|
97 | + $fix = $phpcsFile->addFixableError( $error, ( $parenOpener + 1 ), 'SpacingAfterOpenBrace', $data ); |
|
98 | + if ( $fix === true ) { |
|
99 | + $phpcsFile->fixer->replaceToken( ( $parenOpener + 1 ), '' ); |
|
100 | 100 | } |
101 | 101 | } else { |
102 | - $phpcsFile->recordMetric($stackPtr, 'Spaces after control structure open parenthesis', 0); |
|
102 | + $phpcsFile->recordMetric( $stackPtr, 'Spaces after control structure open parenthesis', 0 ); |
|
103 | 103 | } |
104 | 104 | |
105 | - if ($tokens[$parenOpener]['line'] === $tokens[$parenCloser]['line'] |
|
106 | - && $tokens[($parenCloser - 1)]['code'] === T_WHITESPACE |
|
105 | + if ( $tokens[ $parenOpener ][ 'line' ] === $tokens[ $parenCloser ][ 'line' ] |
|
106 | + && $tokens[ ( $parenCloser - 1 ) ][ 'code' ] === T_WHITESPACE |
|
107 | 107 | ) { |
108 | - $gap = $tokens[($parenCloser - 1)]['length']; |
|
108 | + $gap = $tokens[ ( $parenCloser - 1 ) ][ 'length' ]; |
|
109 | 109 | $error = 'Expected 0 spaces before closing bracket; %s found'; |
110 | - $data = array($gap); |
|
111 | - $fix = $phpcsFile->addFixableError($error, ($parenCloser - 1), 'SpaceBeforeCloseBrace', $data); |
|
112 | - if ($fix === true) { |
|
113 | - $phpcsFile->fixer->replaceToken(($parenCloser - 1), ''); |
|
110 | + $data = array( $gap ); |
|
111 | + $fix = $phpcsFile->addFixableError( $error, ( $parenCloser - 1 ), 'SpaceBeforeCloseBrace', $data ); |
|
112 | + if ( $fix === true ) { |
|
113 | + $phpcsFile->fixer->replaceToken( ( $parenCloser - 1 ), '' ); |
|
114 | 114 | } |
115 | 115 | |
116 | - if ($gap === 0) { |
|
117 | - $phpcsFile->recordMetric($stackPtr, 'Spaces before control structure close parenthesis', 'newline'); |
|
116 | + if ( $gap === 0 ) { |
|
117 | + $phpcsFile->recordMetric( $stackPtr, 'Spaces before control structure close parenthesis', 'newline' ); |
|
118 | 118 | } else { |
119 | - $phpcsFile->recordMetric($stackPtr, 'Spaces before control structure close parenthesis', $gap); |
|
119 | + $phpcsFile->recordMetric( $stackPtr, 'Spaces before control structure close parenthesis', $gap ); |
|
120 | 120 | } |
121 | 121 | } else { |
122 | - $phpcsFile->recordMetric($stackPtr, 'Spaces before control structure close parenthesis', 0); |
|
122 | + $phpcsFile->recordMetric( $stackPtr, 'Spaces before control structure close parenthesis', 0 ); |
|
123 | 123 | } |
124 | 124 | }//end if |
125 | 125 | |
126 | - if (isset($tokens[$stackPtr]['scope_closer']) === false) { |
|
126 | + if ( isset( $tokens[ $stackPtr ][ 'scope_closer' ] ) === false ) { |
|
127 | 127 | return; |
128 | 128 | } |
129 | 129 | |
130 | - $scopeOpener = $tokens[$stackPtr]['scope_opener']; |
|
131 | - $scopeCloser = $tokens[$stackPtr]['scope_closer']; |
|
130 | + $scopeOpener = $tokens[ $stackPtr ][ 'scope_opener' ]; |
|
131 | + $scopeCloser = $tokens[ $stackPtr ][ 'scope_closer' ]; |
|
132 | 132 | |
133 | - for ($firstContent = ($scopeOpener + 1); $firstContent < $phpcsFile->numTokens; $firstContent++) { |
|
134 | - if ($tokens[$firstContent]['code'] !== T_WHITESPACE) { |
|
133 | + for ( $firstContent = ( $scopeOpener + 1 ); $firstContent < $phpcsFile->numTokens; $firstContent++ ) { |
|
134 | + if ( $tokens[ $firstContent ][ 'code' ] !== T_WHITESPACE ) { |
|
135 | 135 | break; |
136 | 136 | } |
137 | 137 | } |
@@ -145,72 +145,72 @@ discard block |
||
145 | 145 | T_DOC_COMMENT_OPEN_TAG => true, |
146 | 146 | ); |
147 | 147 | |
148 | - if (isset($ignore[$tokens[$firstContent]['code']]) === false |
|
149 | - && $tokens[$firstContent]['line'] >= ($tokens[$scopeOpener]['line'] + 2) |
|
148 | + if ( isset( $ignore[ $tokens[ $firstContent ][ 'code' ] ] ) === false |
|
149 | + && $tokens[ $firstContent ][ 'line' ] >= ( $tokens[ $scopeOpener ][ 'line' ] + 2 ) |
|
150 | 150 | ) { |
151 | 151 | $error = 'Blank line found at start of control structure'; |
152 | - $fix = $phpcsFile->addFixableError($error, $scopeOpener, 'SpacingAfterOpen'); |
|
152 | + $fix = $phpcsFile->addFixableError( $error, $scopeOpener, 'SpacingAfterOpen' ); |
|
153 | 153 | |
154 | - if ($fix === true) { |
|
154 | + if ( $fix === true ) { |
|
155 | 155 | $phpcsFile->fixer->beginChangeset(); |
156 | - $i = ($scopeOpener + 1); |
|
157 | - while ($tokens[$i]['line'] !== $tokens[$firstContent]['line']) { |
|
158 | - $phpcsFile->fixer->replaceToken($i, ''); |
|
156 | + $i = ( $scopeOpener + 1 ); |
|
157 | + while ( $tokens[ $i ][ 'line' ] !== $tokens[ $firstContent ][ 'line' ] ) { |
|
158 | + $phpcsFile->fixer->replaceToken( $i, '' ); |
|
159 | 159 | $i++; |
160 | 160 | } |
161 | 161 | |
162 | - $phpcsFile->fixer->addNewline($scopeOpener); |
|
162 | + $phpcsFile->fixer->addNewline( $scopeOpener ); |
|
163 | 163 | $phpcsFile->fixer->endChangeset(); |
164 | 164 | } |
165 | 165 | } |
166 | 166 | |
167 | - if ($firstContent !== $scopeCloser) { |
|
167 | + if ( $firstContent !== $scopeCloser ) { |
|
168 | 168 | $lastContent = $phpcsFile->findPrevious( |
169 | 169 | T_WHITESPACE, |
170 | - ($scopeCloser - 1), |
|
170 | + ( $scopeCloser - 1 ), |
|
171 | 171 | null, |
172 | 172 | true |
173 | 173 | ); |
174 | 174 | |
175 | 175 | $lastNonEmptyContent = $phpcsFile->findPrevious( |
176 | 176 | PHP_CodeSniffer_Tokens::$emptyTokens, |
177 | - ($scopeCloser - 1), |
|
177 | + ( $scopeCloser - 1 ), |
|
178 | 178 | null, |
179 | 179 | true |
180 | 180 | ); |
181 | 181 | |
182 | 182 | $checkToken = $lastContent; |
183 | - if (isset($tokens[$lastNonEmptyContent]['scope_condition']) === true) { |
|
184 | - $checkToken = $tokens[$lastNonEmptyContent]['scope_condition']; |
|
183 | + if ( isset( $tokens[ $lastNonEmptyContent ][ 'scope_condition' ] ) === true ) { |
|
184 | + $checkToken = $tokens[ $lastNonEmptyContent ][ 'scope_condition' ]; |
|
185 | 185 | } |
186 | 186 | |
187 | - if (isset($ignore[$tokens[$checkToken]['code']]) === false |
|
188 | - && $tokens[$lastContent]['line'] <= ($tokens[$scopeCloser]['line'] - 2) |
|
187 | + if ( isset( $ignore[ $tokens[ $checkToken ][ 'code' ] ] ) === false |
|
188 | + && $tokens[ $lastContent ][ 'line' ] <= ( $tokens[ $scopeCloser ][ 'line' ] - 2 ) |
|
189 | 189 | ) { |
190 | 190 | $errorToken = $scopeCloser; |
191 | - for ($i = ($scopeCloser - 1); $i > $lastContent; $i--) { |
|
192 | - if ($tokens[$i]['line'] < $tokens[$scopeCloser]['line']) { |
|
191 | + for ( $i = ( $scopeCloser - 1 ); $i > $lastContent; $i-- ) { |
|
192 | + if ( $tokens[ $i ][ 'line' ] < $tokens[ $scopeCloser ][ 'line' ] ) { |
|
193 | 193 | $errorToken = $i; |
194 | 194 | break; |
195 | 195 | } |
196 | 196 | } |
197 | 197 | |
198 | 198 | $error = 'Blank line found at end of control structure'; |
199 | - $fix = $phpcsFile->addFixableError($error, $errorToken, 'SpacingBeforeClose'); |
|
199 | + $fix = $phpcsFile->addFixableError( $error, $errorToken, 'SpacingBeforeClose' ); |
|
200 | 200 | |
201 | - if ($fix === true) { |
|
201 | + if ( $fix === true ) { |
|
202 | 202 | $phpcsFile->fixer->beginChangeset(); |
203 | - $i = ($scopeCloser - 1); |
|
204 | - for ($i = ($scopeCloser - 1); $i > $lastContent; $i--) { |
|
205 | - if ($tokens[$i]['line'] === $tokens[$scopeCloser]['line']) { |
|
203 | + $i = ( $scopeCloser - 1 ); |
|
204 | + for ( $i = ( $scopeCloser - 1 ); $i > $lastContent; $i-- ) { |
|
205 | + if ( $tokens[ $i ][ 'line' ] === $tokens[ $scopeCloser ][ 'line' ] ) { |
|
206 | 206 | continue; |
207 | 207 | } |
208 | 208 | |
209 | - if ($tokens[$i]['line'] === $tokens[$lastContent]['line']) { |
|
209 | + if ( $tokens[ $i ][ 'line' ] === $tokens[ $lastContent ][ 'line' ] ) { |
|
210 | 210 | break; |
211 | 211 | } |
212 | 212 | |
213 | - $phpcsFile->fixer->replaceToken($i, ''); |
|
213 | + $phpcsFile->fixer->replaceToken( $i, '' ); |
|
214 | 214 | } |
215 | 215 | |
216 | 216 | $phpcsFile->fixer->endChangeset(); |
@@ -220,93 +220,93 @@ discard block |
||
220 | 220 | |
221 | 221 | $trailingContent = $phpcsFile->findNext( |
222 | 222 | T_WHITESPACE, |
223 | - ($scopeCloser + 1), |
|
223 | + ( $scopeCloser + 1 ), |
|
224 | 224 | null, |
225 | 225 | true |
226 | 226 | ); |
227 | 227 | |
228 | - if ($tokens[$trailingContent]['code'] === T_COMMENT) { |
|
228 | + if ( $tokens[ $trailingContent ][ 'code' ] === T_COMMENT ) { |
|
229 | 229 | // Special exception for code where the comment about |
230 | 230 | // an ELSE or ELSEIF is written between the control structures. |
231 | 231 | $nextCode = $phpcsFile->findNext( |
232 | 232 | PHP_CodeSniffer_Tokens::$emptyTokens, |
233 | - ($scopeCloser + 1), |
|
233 | + ( $scopeCloser + 1 ), |
|
234 | 234 | null, |
235 | 235 | true |
236 | 236 | ); |
237 | 237 | |
238 | - if ($tokens[$nextCode]['code'] === T_ELSE |
|
239 | - || $tokens[$nextCode]['code'] === T_ELSEIF |
|
238 | + if ( $tokens[ $nextCode ][ 'code' ] === T_ELSE |
|
239 | + || $tokens[ $nextCode ][ 'code' ] === T_ELSEIF |
|
240 | 240 | ) { |
241 | 241 | $trailingContent = $nextCode; |
242 | 242 | } |
243 | 243 | }//end if |
244 | 244 | |
245 | - if ($tokens[$trailingContent]['code'] === T_ELSE) { |
|
246 | - if ($tokens[$stackPtr]['code'] === T_IF) { |
|
245 | + if ( $tokens[ $trailingContent ][ 'code' ] === T_ELSE ) { |
|
246 | + if ( $tokens[ $stackPtr ][ 'code' ] === T_IF ) { |
|
247 | 247 | // IF with ELSE. |
248 | 248 | return; |
249 | 249 | } |
250 | 250 | } |
251 | 251 | |
252 | - if ($tokens[$trailingContent]['code'] === T_WHILE |
|
253 | - && $tokens[$stackPtr]['code'] === T_DO |
|
252 | + if ( $tokens[ $trailingContent ][ 'code' ] === T_WHILE |
|
253 | + && $tokens[ $stackPtr ][ 'code' ] === T_DO |
|
254 | 254 | ) { |
255 | 255 | // DO with WHILE. |
256 | 256 | return; |
257 | 257 | } |
258 | 258 | |
259 | - if ($tokens[$trailingContent]['code'] === T_CLOSE_TAG) { |
|
259 | + if ( $tokens[ $trailingContent ][ 'code' ] === T_CLOSE_TAG ) { |
|
260 | 260 | // At the end of the script or embedded code. |
261 | 261 | return; |
262 | 262 | } |
263 | 263 | |
264 | - if (isset($tokens[$trailingContent]['scope_condition']) === true |
|
265 | - && $tokens[$trailingContent]['scope_condition'] !== $trailingContent |
|
266 | - && isset($tokens[$trailingContent]['scope_opener']) === true |
|
267 | - && $tokens[$trailingContent]['scope_opener'] !== $trailingContent |
|
264 | + if ( isset( $tokens[ $trailingContent ][ 'scope_condition' ] ) === true |
|
265 | + && $tokens[ $trailingContent ][ 'scope_condition' ] !== $trailingContent |
|
266 | + && isset( $tokens[ $trailingContent ][ 'scope_opener' ] ) === true |
|
267 | + && $tokens[ $trailingContent ][ 'scope_opener' ] !== $trailingContent |
|
268 | 268 | ) { |
269 | 269 | // Another control structure's closing brace. |
270 | - $owner = $tokens[$trailingContent]['scope_condition']; |
|
271 | - if ($tokens[$owner]['code'] === T_FUNCTION) { |
|
270 | + $owner = $tokens[ $trailingContent ][ 'scope_condition' ]; |
|
271 | + if ( $tokens[ $owner ][ 'code' ] === T_FUNCTION ) { |
|
272 | 272 | // The next content is the closing brace of a function |
273 | 273 | // so normal function rules apply and we can ignore it. |
274 | 274 | return; |
275 | 275 | } |
276 | 276 | |
277 | - if ($tokens[$owner]['code'] === T_CLOSURE |
|
278 | - && ($phpcsFile->hasCondition($stackPtr, T_FUNCTION) === true |
|
279 | - || $phpcsFile->hasCondition($stackPtr, T_CLOSURE) === true |
|
280 | - || isset($tokens[$stackPtr]['nested_parenthesis']) === true) |
|
277 | + if ( $tokens[ $owner ][ 'code' ] === T_CLOSURE |
|
278 | + && ( $phpcsFile->hasCondition( $stackPtr, T_FUNCTION ) === true |
|
279 | + || $phpcsFile->hasCondition( $stackPtr, T_CLOSURE ) === true |
|
280 | + || isset( $tokens[ $stackPtr ][ 'nested_parenthesis' ] ) === true ) |
|
281 | 281 | ) { |
282 | 282 | return; |
283 | 283 | } |
284 | 284 | |
285 | - if ($tokens[$trailingContent]['line'] !== ($tokens[$scopeCloser]['line'] + 1)) { |
|
285 | + if ( $tokens[ $trailingContent ][ 'line' ] !== ( $tokens[ $scopeCloser ][ 'line' ] + 1 ) ) { |
|
286 | 286 | $error = 'Blank line found after control structure'; |
287 | - $fix = $phpcsFile->addFixableError($error, $scopeCloser, 'LineAfterClose'); |
|
287 | + $fix = $phpcsFile->addFixableError( $error, $scopeCloser, 'LineAfterClose' ); |
|
288 | 288 | |
289 | - if ($fix === true) { |
|
289 | + if ( $fix === true ) { |
|
290 | 290 | $phpcsFile->fixer->beginChangeset(); |
291 | - $i = ($scopeCloser + 1); |
|
292 | - while ($tokens[$i]['line'] !== $tokens[$trailingContent]['line']) { |
|
293 | - $phpcsFile->fixer->replaceToken($i, ''); |
|
291 | + $i = ( $scopeCloser + 1 ); |
|
292 | + while ( $tokens[ $i ][ 'line' ] !== $tokens[ $trailingContent ][ 'line' ] ) { |
|
293 | + $phpcsFile->fixer->replaceToken( $i, '' ); |
|
294 | 294 | $i++; |
295 | 295 | } |
296 | 296 | |
297 | - $phpcsFile->fixer->addNewline($scopeCloser); |
|
297 | + $phpcsFile->fixer->addNewline( $scopeCloser ); |
|
298 | 298 | $phpcsFile->fixer->endChangeset(); |
299 | 299 | } |
300 | 300 | } |
301 | - } else if ($tokens[$trailingContent]['code'] !== T_ELSE |
|
302 | - && $tokens[$trailingContent]['code'] !== T_ELSEIF |
|
303 | - && $tokens[$trailingContent]['code'] !== T_CATCH |
|
304 | - && $tokens[$trailingContent]['line'] === ($tokens[$scopeCloser]['line'] + 1) |
|
301 | + } else if ( $tokens[ $trailingContent ][ 'code' ] !== T_ELSE |
|
302 | + && $tokens[ $trailingContent ][ 'code' ] !== T_ELSEIF |
|
303 | + && $tokens[ $trailingContent ][ 'code' ] !== T_CATCH |
|
304 | + && $tokens[ $trailingContent ][ 'line' ] === ( $tokens[ $scopeCloser ][ 'line' ] + 1 ) |
|
305 | 305 | ) { |
306 | 306 | $error = 'No blank line found after control structure'; |
307 | - $fix = $phpcsFile->addFixableError($error, $scopeCloser, 'NoLineAfterClose'); |
|
308 | - if ($fix === true) { |
|
309 | - $phpcsFile->fixer->addNewline($scopeCloser); |
|
307 | + $fix = $phpcsFile->addFixableError( $error, $scopeCloser, 'NoLineAfterClose' ); |
|
308 | + if ( $fix === true ) { |
|
309 | + $phpcsFile->fixer->addNewline( $scopeCloser ); |
|
310 | 310 | } |
311 | 311 | }//end if |
312 | 312 |
@@ -27,8 +27,7 @@ discard block |
||
27 | 27 | * @version Release: @package_version@ |
28 | 28 | * @link http://pear.php.net/package/PHP_CodeSniffer |
29 | 29 | */ |
30 | -class Squiz_Sniffs_WhiteSpace_ControlStructureSpacingSniff implements PHP_CodeSniffer_Sniff |
|
31 | -{ |
|
30 | +class Squiz_Sniffs_WhiteSpace_ControlStructureSpacingSniff implements PHP_CodeSniffer_Sniff { |
|
32 | 31 | |
33 | 32 | /** |
34 | 33 | * A list of tokenizers this sniff supports. |
@@ -46,8 +45,7 @@ discard block |
||
46 | 45 | * |
47 | 46 | * @return array |
48 | 47 | */ |
49 | - public function register() |
|
50 | - { |
|
48 | + public function register() { |
|
51 | 49 | return array( |
52 | 50 | T_IF, |
53 | 51 | T_WHILE, |
@@ -73,8 +71,7 @@ discard block |
||
73 | 71 | * |
74 | 72 | * @return void |
75 | 73 | */ |
76 | - public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) |
|
77 | - { |
|
74 | + public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) { |
|
78 | 75 | $tokens = $phpcsFile->getTokens(); |
79 | 76 | |
80 | 77 | if (isset($tokens[$stackPtr]['parenthesis_opener']) === true |
@@ -41,7 +41,7 @@ |
||
41 | 41 | /** |
42 | 42 | * Returns an array of tokens this test wants to listen for. |
43 | 43 | * |
44 | - * @return array |
|
44 | + * @return integer[] |
|
45 | 45 | */ |
46 | 46 | public function register() |
47 | 47 | { |
@@ -30,210 +30,210 @@ |
||
30 | 30 | class Squiz_Sniffs_WhiteSpace_FunctionSpacingSniff implements PHP_CodeSniffer_Sniff |
31 | 31 | { |
32 | 32 | |
33 | - /** |
|
34 | - * The number of blank lines between functions. |
|
35 | - * |
|
36 | - * @var int |
|
37 | - */ |
|
38 | - public $spacing = 2; |
|
39 | - |
|
40 | - |
|
41 | - /** |
|
42 | - * Returns an array of tokens this test wants to listen for. |
|
43 | - * |
|
44 | - * @return array |
|
45 | - */ |
|
46 | - public function register() |
|
47 | - { |
|
48 | - return array(T_FUNCTION); |
|
49 | - |
|
50 | - }//end register() |
|
51 | - |
|
52 | - |
|
53 | - /** |
|
54 | - * Processes this sniff when one of its tokens is encountered. |
|
55 | - * |
|
56 | - * @param PHP_CodeSniffer_File $phpcsFile The file being scanned. |
|
57 | - * @param int $stackPtr The position of the current token |
|
58 | - * in the stack passed in $tokens. |
|
59 | - * |
|
60 | - * @return void |
|
61 | - */ |
|
62 | - public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) |
|
63 | - { |
|
64 | - $tokens = $phpcsFile->getTokens(); |
|
65 | - $this->spacing = (int) $this->spacing; |
|
66 | - |
|
67 | - /* |
|
33 | + /** |
|
34 | + * The number of blank lines between functions. |
|
35 | + * |
|
36 | + * @var int |
|
37 | + */ |
|
38 | + public $spacing = 2; |
|
39 | + |
|
40 | + |
|
41 | + /** |
|
42 | + * Returns an array of tokens this test wants to listen for. |
|
43 | + * |
|
44 | + * @return array |
|
45 | + */ |
|
46 | + public function register() |
|
47 | + { |
|
48 | + return array(T_FUNCTION); |
|
49 | + |
|
50 | + }//end register() |
|
51 | + |
|
52 | + |
|
53 | + /** |
|
54 | + * Processes this sniff when one of its tokens is encountered. |
|
55 | + * |
|
56 | + * @param PHP_CodeSniffer_File $phpcsFile The file being scanned. |
|
57 | + * @param int $stackPtr The position of the current token |
|
58 | + * in the stack passed in $tokens. |
|
59 | + * |
|
60 | + * @return void |
|
61 | + */ |
|
62 | + public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) |
|
63 | + { |
|
64 | + $tokens = $phpcsFile->getTokens(); |
|
65 | + $this->spacing = (int) $this->spacing; |
|
66 | + |
|
67 | + /* |
|
68 | 68 | Check the number of blank lines |
69 | 69 | after the function. |
70 | 70 | */ |
71 | 71 | |
72 | - if (isset($tokens[$stackPtr]['scope_closer']) === false) { |
|
73 | - // Must be an interface method, so the closer is the semicolon. |
|
74 | - $closer = $phpcsFile->findNext(T_SEMICOLON, $stackPtr); |
|
75 | - } else { |
|
76 | - $closer = $tokens[$stackPtr]['scope_closer']; |
|
77 | - } |
|
78 | - |
|
79 | - // Allow for comments on the same line as the closer. |
|
80 | - for ($nextLineToken = ($closer + 1); $nextLineToken < $phpcsFile->numTokens; $nextLineToken++) { |
|
81 | - if ($tokens[$nextLineToken]['line'] !== $tokens[$closer]['line']) { |
|
82 | - break; |
|
83 | - } |
|
84 | - } |
|
85 | - |
|
86 | - $foundLines = 0; |
|
87 | - if ($nextLineToken === ($phpcsFile->numTokens - 1)) { |
|
88 | - // We are at the end of the file. |
|
89 | - // Don't check spacing after the function because this |
|
90 | - // should be done by an EOF sniff. |
|
91 | - $foundLines = $this->spacing; |
|
92 | - } else { |
|
93 | - $nextContent = $phpcsFile->findNext(T_WHITESPACE, $nextLineToken, null, true); |
|
94 | - if ($nextContent === false) { |
|
95 | - // We are at the end of the file. |
|
96 | - // Don't check spacing after the function because this |
|
97 | - // should be done by an EOF sniff. |
|
98 | - $foundLines = $this->spacing; |
|
99 | - } else { |
|
100 | - $foundLines += ($tokens[$nextContent]['line'] - $tokens[$nextLineToken]['line']); |
|
101 | - } |
|
102 | - } |
|
103 | - |
|
104 | - if ($foundLines !== $this->spacing) { |
|
105 | - $error = 'Expected %s blank line'; |
|
106 | - if ($this->spacing !== 1) { |
|
107 | - $error .= 's'; |
|
108 | - } |
|
109 | - |
|
110 | - $error .= ' after function; %s found'; |
|
111 | - $data = array( |
|
112 | - $this->spacing, |
|
113 | - $foundLines, |
|
114 | - ); |
|
115 | - |
|
116 | - $fix = $phpcsFile->addFixableError($error, $closer, 'After', $data); |
|
117 | - if ($fix === true) { |
|
118 | - $phpcsFile->fixer->beginChangeset(); |
|
119 | - for ($i = $nextLineToken; $i <= $nextContent; $i++) { |
|
120 | - if ($tokens[$i]['line'] === $tokens[$nextContent]['line']) { |
|
121 | - $phpcsFile->fixer->addContentBefore($i, str_repeat($phpcsFile->eolChar, $this->spacing)); |
|
122 | - break; |
|
123 | - } |
|
124 | - |
|
125 | - $phpcsFile->fixer->replaceToken($i, ''); |
|
126 | - } |
|
127 | - |
|
128 | - $phpcsFile->fixer->endChangeset(); |
|
129 | - }//end if |
|
130 | - }//end if |
|
131 | - |
|
132 | - /* |
|
72 | + if (isset($tokens[$stackPtr]['scope_closer']) === false) { |
|
73 | + // Must be an interface method, so the closer is the semicolon. |
|
74 | + $closer = $phpcsFile->findNext(T_SEMICOLON, $stackPtr); |
|
75 | + } else { |
|
76 | + $closer = $tokens[$stackPtr]['scope_closer']; |
|
77 | + } |
|
78 | + |
|
79 | + // Allow for comments on the same line as the closer. |
|
80 | + for ($nextLineToken = ($closer + 1); $nextLineToken < $phpcsFile->numTokens; $nextLineToken++) { |
|
81 | + if ($tokens[$nextLineToken]['line'] !== $tokens[$closer]['line']) { |
|
82 | + break; |
|
83 | + } |
|
84 | + } |
|
85 | + |
|
86 | + $foundLines = 0; |
|
87 | + if ($nextLineToken === ($phpcsFile->numTokens - 1)) { |
|
88 | + // We are at the end of the file. |
|
89 | + // Don't check spacing after the function because this |
|
90 | + // should be done by an EOF sniff. |
|
91 | + $foundLines = $this->spacing; |
|
92 | + } else { |
|
93 | + $nextContent = $phpcsFile->findNext(T_WHITESPACE, $nextLineToken, null, true); |
|
94 | + if ($nextContent === false) { |
|
95 | + // We are at the end of the file. |
|
96 | + // Don't check spacing after the function because this |
|
97 | + // should be done by an EOF sniff. |
|
98 | + $foundLines = $this->spacing; |
|
99 | + } else { |
|
100 | + $foundLines += ($tokens[$nextContent]['line'] - $tokens[$nextLineToken]['line']); |
|
101 | + } |
|
102 | + } |
|
103 | + |
|
104 | + if ($foundLines !== $this->spacing) { |
|
105 | + $error = 'Expected %s blank line'; |
|
106 | + if ($this->spacing !== 1) { |
|
107 | + $error .= 's'; |
|
108 | + } |
|
109 | + |
|
110 | + $error .= ' after function; %s found'; |
|
111 | + $data = array( |
|
112 | + $this->spacing, |
|
113 | + $foundLines, |
|
114 | + ); |
|
115 | + |
|
116 | + $fix = $phpcsFile->addFixableError($error, $closer, 'After', $data); |
|
117 | + if ($fix === true) { |
|
118 | + $phpcsFile->fixer->beginChangeset(); |
|
119 | + for ($i = $nextLineToken; $i <= $nextContent; $i++) { |
|
120 | + if ($tokens[$i]['line'] === $tokens[$nextContent]['line']) { |
|
121 | + $phpcsFile->fixer->addContentBefore($i, str_repeat($phpcsFile->eolChar, $this->spacing)); |
|
122 | + break; |
|
123 | + } |
|
124 | + |
|
125 | + $phpcsFile->fixer->replaceToken($i, ''); |
|
126 | + } |
|
127 | + |
|
128 | + $phpcsFile->fixer->endChangeset(); |
|
129 | + }//end if |
|
130 | + }//end if |
|
131 | + |
|
132 | + /* |
|
133 | 133 | Check the number of blank lines |
134 | 134 | before the function. |
135 | 135 | */ |
136 | 136 | |
137 | - $prevLineToken = null; |
|
138 | - for ($i = $stackPtr; $i > 0; $i--) { |
|
139 | - if (strpos($tokens[$i]['content'], $phpcsFile->eolChar) === false) { |
|
140 | - continue; |
|
141 | - } else { |
|
142 | - $prevLineToken = $i; |
|
143 | - break; |
|
144 | - } |
|
145 | - } |
|
146 | - |
|
147 | - if (is_null($prevLineToken) === true) { |
|
148 | - // Never found the previous line, which means |
|
149 | - // there are 0 blank lines before the function. |
|
150 | - $foundLines = 0; |
|
151 | - $prevContent = 0; |
|
152 | - } else { |
|
153 | - $currentLine = $tokens[$stackPtr]['line']; |
|
154 | - |
|
155 | - $prevContent = $phpcsFile->findPrevious(T_WHITESPACE, $prevLineToken, null, true); |
|
156 | - if ($tokens[$prevContent]['code'] === T_DOC_COMMENT_CLOSE_TAG |
|
157 | - && $tokens[$prevContent]['line'] === ($currentLine - 1) |
|
158 | - ) { |
|
159 | - // Account for function comments. |
|
160 | - $prevContent = $phpcsFile->findPrevious(T_WHITESPACE, ($tokens[$prevContent]['comment_opener'] - 1), null, true); |
|
161 | - } |
|
162 | - |
|
163 | - // Before we throw an error, check that we are not throwing an error |
|
164 | - // for another function. We don't want to error for no blank lines after |
|
165 | - // the previous function and no blank lines before this one as well. |
|
166 | - $prevLine = ($tokens[$prevContent]['line'] - 1); |
|
167 | - $i = ($stackPtr - 1); |
|
168 | - $foundLines = 0; |
|
169 | - while ($currentLine !== $prevLine && $currentLine > 1 && $i > 0) { |
|
170 | - if (isset($tokens[$i]['scope_condition']) === true) { |
|
171 | - $scopeCondition = $tokens[$i]['scope_condition']; |
|
172 | - if ($tokens[$scopeCondition]['code'] === T_FUNCTION) { |
|
173 | - // Found a previous function. |
|
174 | - return; |
|
175 | - } |
|
176 | - } else if ($tokens[$i]['code'] === T_FUNCTION) { |
|
177 | - // Found another interface function. |
|
178 | - return; |
|
179 | - } |
|
180 | - |
|
181 | - $currentLine = $tokens[$i]['line']; |
|
182 | - if ($currentLine === $prevLine) { |
|
183 | - break; |
|
184 | - } |
|
185 | - |
|
186 | - if ($tokens[($i - 1)]['line'] < $currentLine && $tokens[($i + 1)]['line'] > $currentLine) { |
|
187 | - // This token is on a line by itself. If it is whitespace, the line is empty. |
|
188 | - if ($tokens[$i]['code'] === T_WHITESPACE) { |
|
189 | - $foundLines++; |
|
190 | - } |
|
191 | - } |
|
192 | - |
|
193 | - $i--; |
|
194 | - }//end while |
|
195 | - }//end if |
|
196 | - |
|
197 | - if ($foundLines !== $this->spacing) { |
|
198 | - $error = 'Expected %s blank line'; |
|
199 | - if ($this->spacing !== 1) { |
|
200 | - $error .= 's'; |
|
201 | - } |
|
202 | - |
|
203 | - $error .= ' before function; %s found'; |
|
204 | - $data = array( |
|
205 | - $this->spacing, |
|
206 | - $foundLines, |
|
207 | - ); |
|
208 | - |
|
209 | - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'Before', $data); |
|
210 | - if ($fix === true) { |
|
211 | - if ($prevContent === 0) { |
|
212 | - $nextSpace = 0; |
|
213 | - } else { |
|
214 | - $nextSpace = $phpcsFile->findNext(T_WHITESPACE, ($prevContent + 1), $stackPtr); |
|
215 | - if ($nextSpace === false) { |
|
216 | - $nextSpace = ($stackPtr - 1); |
|
217 | - } |
|
218 | - } |
|
219 | - |
|
220 | - if ($foundLines < $this->spacing) { |
|
221 | - $padding = str_repeat($phpcsFile->eolChar, ($this->spacing - $foundLines)); |
|
222 | - $phpcsFile->fixer->addContent($nextSpace, $padding); |
|
223 | - } else { |
|
224 | - $nextContent = $phpcsFile->findNext(T_WHITESPACE, ($nextSpace + 1), null, true); |
|
225 | - $phpcsFile->fixer->beginChangeset(); |
|
226 | - for ($i = $nextSpace; $i < ($nextContent - 1); $i++) { |
|
227 | - $phpcsFile->fixer->replaceToken($i, ''); |
|
228 | - } |
|
229 | - |
|
230 | - $phpcsFile->fixer->replaceToken($i, str_repeat($phpcsFile->eolChar, $this->spacing)); |
|
231 | - $phpcsFile->fixer->endChangeset(); |
|
232 | - } |
|
233 | - }//end if |
|
234 | - }//end if |
|
235 | - |
|
236 | - }//end process() |
|
137 | + $prevLineToken = null; |
|
138 | + for ($i = $stackPtr; $i > 0; $i--) { |
|
139 | + if (strpos($tokens[$i]['content'], $phpcsFile->eolChar) === false) { |
|
140 | + continue; |
|
141 | + } else { |
|
142 | + $prevLineToken = $i; |
|
143 | + break; |
|
144 | + } |
|
145 | + } |
|
146 | + |
|
147 | + if (is_null($prevLineToken) === true) { |
|
148 | + // Never found the previous line, which means |
|
149 | + // there are 0 blank lines before the function. |
|
150 | + $foundLines = 0; |
|
151 | + $prevContent = 0; |
|
152 | + } else { |
|
153 | + $currentLine = $tokens[$stackPtr]['line']; |
|
154 | + |
|
155 | + $prevContent = $phpcsFile->findPrevious(T_WHITESPACE, $prevLineToken, null, true); |
|
156 | + if ($tokens[$prevContent]['code'] === T_DOC_COMMENT_CLOSE_TAG |
|
157 | + && $tokens[$prevContent]['line'] === ($currentLine - 1) |
|
158 | + ) { |
|
159 | + // Account for function comments. |
|
160 | + $prevContent = $phpcsFile->findPrevious(T_WHITESPACE, ($tokens[$prevContent]['comment_opener'] - 1), null, true); |
|
161 | + } |
|
162 | + |
|
163 | + // Before we throw an error, check that we are not throwing an error |
|
164 | + // for another function. We don't want to error for no blank lines after |
|
165 | + // the previous function and no blank lines before this one as well. |
|
166 | + $prevLine = ($tokens[$prevContent]['line'] - 1); |
|
167 | + $i = ($stackPtr - 1); |
|
168 | + $foundLines = 0; |
|
169 | + while ($currentLine !== $prevLine && $currentLine > 1 && $i > 0) { |
|
170 | + if (isset($tokens[$i]['scope_condition']) === true) { |
|
171 | + $scopeCondition = $tokens[$i]['scope_condition']; |
|
172 | + if ($tokens[$scopeCondition]['code'] === T_FUNCTION) { |
|
173 | + // Found a previous function. |
|
174 | + return; |
|
175 | + } |
|
176 | + } else if ($tokens[$i]['code'] === T_FUNCTION) { |
|
177 | + // Found another interface function. |
|
178 | + return; |
|
179 | + } |
|
180 | + |
|
181 | + $currentLine = $tokens[$i]['line']; |
|
182 | + if ($currentLine === $prevLine) { |
|
183 | + break; |
|
184 | + } |
|
185 | + |
|
186 | + if ($tokens[($i - 1)]['line'] < $currentLine && $tokens[($i + 1)]['line'] > $currentLine) { |
|
187 | + // This token is on a line by itself. If it is whitespace, the line is empty. |
|
188 | + if ($tokens[$i]['code'] === T_WHITESPACE) { |
|
189 | + $foundLines++; |
|
190 | + } |
|
191 | + } |
|
192 | + |
|
193 | + $i--; |
|
194 | + }//end while |
|
195 | + }//end if |
|
196 | + |
|
197 | + if ($foundLines !== $this->spacing) { |
|
198 | + $error = 'Expected %s blank line'; |
|
199 | + if ($this->spacing !== 1) { |
|
200 | + $error .= 's'; |
|
201 | + } |
|
202 | + |
|
203 | + $error .= ' before function; %s found'; |
|
204 | + $data = array( |
|
205 | + $this->spacing, |
|
206 | + $foundLines, |
|
207 | + ); |
|
208 | + |
|
209 | + $fix = $phpcsFile->addFixableError($error, $stackPtr, 'Before', $data); |
|
210 | + if ($fix === true) { |
|
211 | + if ($prevContent === 0) { |
|
212 | + $nextSpace = 0; |
|
213 | + } else { |
|
214 | + $nextSpace = $phpcsFile->findNext(T_WHITESPACE, ($prevContent + 1), $stackPtr); |
|
215 | + if ($nextSpace === false) { |
|
216 | + $nextSpace = ($stackPtr - 1); |
|
217 | + } |
|
218 | + } |
|
219 | + |
|
220 | + if ($foundLines < $this->spacing) { |
|
221 | + $padding = str_repeat($phpcsFile->eolChar, ($this->spacing - $foundLines)); |
|
222 | + $phpcsFile->fixer->addContent($nextSpace, $padding); |
|
223 | + } else { |
|
224 | + $nextContent = $phpcsFile->findNext(T_WHITESPACE, ($nextSpace + 1), null, true); |
|
225 | + $phpcsFile->fixer->beginChangeset(); |
|
226 | + for ($i = $nextSpace; $i < ($nextContent - 1); $i++) { |
|
227 | + $phpcsFile->fixer->replaceToken($i, ''); |
|
228 | + } |
|
229 | + |
|
230 | + $phpcsFile->fixer->replaceToken($i, str_repeat($phpcsFile->eolChar, $this->spacing)); |
|
231 | + $phpcsFile->fixer->endChangeset(); |
|
232 | + } |
|
233 | + }//end if |
|
234 | + }//end if |
|
235 | + |
|
236 | + }//end process() |
|
237 | 237 | |
238 | 238 | |
239 | 239 | }//end class |
@@ -45,7 +45,7 @@ discard block |
||
45 | 45 | */ |
46 | 46 | public function register() |
47 | 47 | { |
48 | - return array(T_FUNCTION); |
|
48 | + return array( T_FUNCTION ); |
|
49 | 49 | |
50 | 50 | }//end register() |
51 | 51 | |
@@ -59,7 +59,7 @@ discard block |
||
59 | 59 | * |
60 | 60 | * @return void |
61 | 61 | */ |
62 | - public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) |
|
62 | + public function process( PHP_CodeSniffer_File $phpcsFile, $stackPtr ) |
|
63 | 63 | { |
64 | 64 | $tokens = $phpcsFile->getTokens(); |
65 | 65 | $this->spacing = (int) $this->spacing; |
@@ -69,41 +69,41 @@ discard block |
||
69 | 69 | after the function. |
70 | 70 | */ |
71 | 71 | |
72 | - if (isset($tokens[$stackPtr]['scope_closer']) === false) { |
|
72 | + if ( isset( $tokens[ $stackPtr ][ 'scope_closer' ] ) === false ) { |
|
73 | 73 | // Must be an interface method, so the closer is the semicolon. |
74 | - $closer = $phpcsFile->findNext(T_SEMICOLON, $stackPtr); |
|
74 | + $closer = $phpcsFile->findNext( T_SEMICOLON, $stackPtr ); |
|
75 | 75 | } else { |
76 | - $closer = $tokens[$stackPtr]['scope_closer']; |
|
76 | + $closer = $tokens[ $stackPtr ][ 'scope_closer' ]; |
|
77 | 77 | } |
78 | 78 | |
79 | 79 | // Allow for comments on the same line as the closer. |
80 | - for ($nextLineToken = ($closer + 1); $nextLineToken < $phpcsFile->numTokens; $nextLineToken++) { |
|
81 | - if ($tokens[$nextLineToken]['line'] !== $tokens[$closer]['line']) { |
|
80 | + for ( $nextLineToken = ( $closer + 1 ); $nextLineToken < $phpcsFile->numTokens; $nextLineToken++ ) { |
|
81 | + if ( $tokens[ $nextLineToken ][ 'line' ] !== $tokens[ $closer ][ 'line' ] ) { |
|
82 | 82 | break; |
83 | 83 | } |
84 | 84 | } |
85 | 85 | |
86 | 86 | $foundLines = 0; |
87 | - if ($nextLineToken === ($phpcsFile->numTokens - 1)) { |
|
87 | + if ( $nextLineToken === ( $phpcsFile->numTokens - 1 ) ) { |
|
88 | 88 | // We are at the end of the file. |
89 | 89 | // Don't check spacing after the function because this |
90 | 90 | // should be done by an EOF sniff. |
91 | 91 | $foundLines = $this->spacing; |
92 | 92 | } else { |
93 | - $nextContent = $phpcsFile->findNext(T_WHITESPACE, $nextLineToken, null, true); |
|
94 | - if ($nextContent === false) { |
|
93 | + $nextContent = $phpcsFile->findNext( T_WHITESPACE, $nextLineToken, null, true ); |
|
94 | + if ( $nextContent === false ) { |
|
95 | 95 | // We are at the end of the file. |
96 | 96 | // Don't check spacing after the function because this |
97 | 97 | // should be done by an EOF sniff. |
98 | 98 | $foundLines = $this->spacing; |
99 | 99 | } else { |
100 | - $foundLines += ($tokens[$nextContent]['line'] - $tokens[$nextLineToken]['line']); |
|
100 | + $foundLines += ( $tokens[ $nextContent ][ 'line' ] - $tokens[ $nextLineToken ][ 'line' ] ); |
|
101 | 101 | } |
102 | 102 | } |
103 | 103 | |
104 | - if ($foundLines !== $this->spacing) { |
|
104 | + if ( $foundLines !== $this->spacing ) { |
|
105 | 105 | $error = 'Expected %s blank line'; |
106 | - if ($this->spacing !== 1) { |
|
106 | + if ( $this->spacing !== 1 ) { |
|
107 | 107 | $error .= 's'; |
108 | 108 | } |
109 | 109 | |
@@ -113,16 +113,16 @@ discard block |
||
113 | 113 | $foundLines, |
114 | 114 | ); |
115 | 115 | |
116 | - $fix = $phpcsFile->addFixableError($error, $closer, 'After', $data); |
|
117 | - if ($fix === true) { |
|
116 | + $fix = $phpcsFile->addFixableError( $error, $closer, 'After', $data ); |
|
117 | + if ( $fix === true ) { |
|
118 | 118 | $phpcsFile->fixer->beginChangeset(); |
119 | - for ($i = $nextLineToken; $i <= $nextContent; $i++) { |
|
120 | - if ($tokens[$i]['line'] === $tokens[$nextContent]['line']) { |
|
121 | - $phpcsFile->fixer->addContentBefore($i, str_repeat($phpcsFile->eolChar, $this->spacing)); |
|
119 | + for ( $i = $nextLineToken; $i <= $nextContent; $i++ ) { |
|
120 | + if ( $tokens[ $i ][ 'line' ] === $tokens[ $nextContent ][ 'line' ] ) { |
|
121 | + $phpcsFile->fixer->addContentBefore( $i, str_repeat( $phpcsFile->eolChar, $this->spacing ) ); |
|
122 | 122 | break; |
123 | 123 | } |
124 | 124 | |
125 | - $phpcsFile->fixer->replaceToken($i, ''); |
|
125 | + $phpcsFile->fixer->replaceToken( $i, '' ); |
|
126 | 126 | } |
127 | 127 | |
128 | 128 | $phpcsFile->fixer->endChangeset(); |
@@ -135,8 +135,8 @@ discard block |
||
135 | 135 | */ |
136 | 136 | |
137 | 137 | $prevLineToken = null; |
138 | - for ($i = $stackPtr; $i > 0; $i--) { |
|
139 | - if (strpos($tokens[$i]['content'], $phpcsFile->eolChar) === false) { |
|
138 | + for ( $i = $stackPtr; $i > 0; $i-- ) { |
|
139 | + if ( strpos( $tokens[ $i ][ 'content' ], $phpcsFile->eolChar ) === false ) { |
|
140 | 140 | continue; |
141 | 141 | } else { |
142 | 142 | $prevLineToken = $i; |
@@ -144,48 +144,48 @@ discard block |
||
144 | 144 | } |
145 | 145 | } |
146 | 146 | |
147 | - if (is_null($prevLineToken) === true) { |
|
147 | + if ( is_null( $prevLineToken ) === true ) { |
|
148 | 148 | // Never found the previous line, which means |
149 | 149 | // there are 0 blank lines before the function. |
150 | 150 | $foundLines = 0; |
151 | 151 | $prevContent = 0; |
152 | 152 | } else { |
153 | - $currentLine = $tokens[$stackPtr]['line']; |
|
153 | + $currentLine = $tokens[ $stackPtr ][ 'line' ]; |
|
154 | 154 | |
155 | - $prevContent = $phpcsFile->findPrevious(T_WHITESPACE, $prevLineToken, null, true); |
|
156 | - if ($tokens[$prevContent]['code'] === T_DOC_COMMENT_CLOSE_TAG |
|
157 | - && $tokens[$prevContent]['line'] === ($currentLine - 1) |
|
155 | + $prevContent = $phpcsFile->findPrevious( T_WHITESPACE, $prevLineToken, null, true ); |
|
156 | + if ( $tokens[ $prevContent ][ 'code' ] === T_DOC_COMMENT_CLOSE_TAG |
|
157 | + && $tokens[ $prevContent ][ 'line' ] === ( $currentLine - 1 ) |
|
158 | 158 | ) { |
159 | 159 | // Account for function comments. |
160 | - $prevContent = $phpcsFile->findPrevious(T_WHITESPACE, ($tokens[$prevContent]['comment_opener'] - 1), null, true); |
|
160 | + $prevContent = $phpcsFile->findPrevious( T_WHITESPACE, ( $tokens[ $prevContent ][ 'comment_opener' ] - 1 ), null, true ); |
|
161 | 161 | } |
162 | 162 | |
163 | 163 | // Before we throw an error, check that we are not throwing an error |
164 | 164 | // for another function. We don't want to error for no blank lines after |
165 | 165 | // the previous function and no blank lines before this one as well. |
166 | - $prevLine = ($tokens[$prevContent]['line'] - 1); |
|
167 | - $i = ($stackPtr - 1); |
|
166 | + $prevLine = ( $tokens[ $prevContent ][ 'line' ] - 1 ); |
|
167 | + $i = ( $stackPtr - 1 ); |
|
168 | 168 | $foundLines = 0; |
169 | - while ($currentLine !== $prevLine && $currentLine > 1 && $i > 0) { |
|
170 | - if (isset($tokens[$i]['scope_condition']) === true) { |
|
171 | - $scopeCondition = $tokens[$i]['scope_condition']; |
|
172 | - if ($tokens[$scopeCondition]['code'] === T_FUNCTION) { |
|
169 | + while ( $currentLine !== $prevLine && $currentLine > 1 && $i > 0 ) { |
|
170 | + if ( isset( $tokens[ $i ][ 'scope_condition' ] ) === true ) { |
|
171 | + $scopeCondition = $tokens[ $i ][ 'scope_condition' ]; |
|
172 | + if ( $tokens[ $scopeCondition ][ 'code' ] === T_FUNCTION ) { |
|
173 | 173 | // Found a previous function. |
174 | 174 | return; |
175 | 175 | } |
176 | - } else if ($tokens[$i]['code'] === T_FUNCTION) { |
|
176 | + } else if ( $tokens[ $i ][ 'code' ] === T_FUNCTION ) { |
|
177 | 177 | // Found another interface function. |
178 | 178 | return; |
179 | 179 | } |
180 | 180 | |
181 | - $currentLine = $tokens[$i]['line']; |
|
182 | - if ($currentLine === $prevLine) { |
|
181 | + $currentLine = $tokens[ $i ][ 'line' ]; |
|
182 | + if ( $currentLine === $prevLine ) { |
|
183 | 183 | break; |
184 | 184 | } |
185 | 185 | |
186 | - if ($tokens[($i - 1)]['line'] < $currentLine && $tokens[($i + 1)]['line'] > $currentLine) { |
|
186 | + if ( $tokens[ ( $i - 1 ) ][ 'line' ] < $currentLine && $tokens[ ( $i + 1 ) ][ 'line' ] > $currentLine ) { |
|
187 | 187 | // This token is on a line by itself. If it is whitespace, the line is empty. |
188 | - if ($tokens[$i]['code'] === T_WHITESPACE) { |
|
188 | + if ( $tokens[ $i ][ 'code' ] === T_WHITESPACE ) { |
|
189 | 189 | $foundLines++; |
190 | 190 | } |
191 | 191 | } |
@@ -194,9 +194,9 @@ discard block |
||
194 | 194 | }//end while |
195 | 195 | }//end if |
196 | 196 | |
197 | - if ($foundLines !== $this->spacing) { |
|
197 | + if ( $foundLines !== $this->spacing ) { |
|
198 | 198 | $error = 'Expected %s blank line'; |
199 | - if ($this->spacing !== 1) { |
|
199 | + if ( $this->spacing !== 1 ) { |
|
200 | 200 | $error .= 's'; |
201 | 201 | } |
202 | 202 | |
@@ -206,28 +206,28 @@ discard block |
||
206 | 206 | $foundLines, |
207 | 207 | ); |
208 | 208 | |
209 | - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'Before', $data); |
|
210 | - if ($fix === true) { |
|
211 | - if ($prevContent === 0) { |
|
209 | + $fix = $phpcsFile->addFixableError( $error, $stackPtr, 'Before', $data ); |
|
210 | + if ( $fix === true ) { |
|
211 | + if ( $prevContent === 0 ) { |
|
212 | 212 | $nextSpace = 0; |
213 | 213 | } else { |
214 | - $nextSpace = $phpcsFile->findNext(T_WHITESPACE, ($prevContent + 1), $stackPtr); |
|
215 | - if ($nextSpace === false) { |
|
216 | - $nextSpace = ($stackPtr - 1); |
|
214 | + $nextSpace = $phpcsFile->findNext( T_WHITESPACE, ( $prevContent + 1 ), $stackPtr ); |
|
215 | + if ( $nextSpace === false ) { |
|
216 | + $nextSpace = ( $stackPtr - 1 ); |
|
217 | 217 | } |
218 | 218 | } |
219 | 219 | |
220 | - if ($foundLines < $this->spacing) { |
|
221 | - $padding = str_repeat($phpcsFile->eolChar, ($this->spacing - $foundLines)); |
|
222 | - $phpcsFile->fixer->addContent($nextSpace, $padding); |
|
220 | + if ( $foundLines < $this->spacing ) { |
|
221 | + $padding = str_repeat( $phpcsFile->eolChar, ( $this->spacing - $foundLines ) ); |
|
222 | + $phpcsFile->fixer->addContent( $nextSpace, $padding ); |
|
223 | 223 | } else { |
224 | - $nextContent = $phpcsFile->findNext(T_WHITESPACE, ($nextSpace + 1), null, true); |
|
224 | + $nextContent = $phpcsFile->findNext( T_WHITESPACE, ( $nextSpace + 1 ), null, true ); |
|
225 | 225 | $phpcsFile->fixer->beginChangeset(); |
226 | - for ($i = $nextSpace; $i < ($nextContent - 1); $i++) { |
|
227 | - $phpcsFile->fixer->replaceToken($i, ''); |
|
226 | + for ( $i = $nextSpace; $i < ( $nextContent - 1 ); $i++ ) { |
|
227 | + $phpcsFile->fixer->replaceToken( $i, '' ); |
|
228 | 228 | } |
229 | 229 | |
230 | - $phpcsFile->fixer->replaceToken($i, str_repeat($phpcsFile->eolChar, $this->spacing)); |
|
230 | + $phpcsFile->fixer->replaceToken( $i, str_repeat( $phpcsFile->eolChar, $this->spacing ) ); |
|
231 | 231 | $phpcsFile->fixer->endChangeset(); |
232 | 232 | } |
233 | 233 | }//end if |
@@ -27,8 +27,7 @@ discard block |
||
27 | 27 | * @version Release: @package_version@ |
28 | 28 | * @link http://pear.php.net/package/PHP_CodeSniffer |
29 | 29 | */ |
30 | -class Squiz_Sniffs_WhiteSpace_FunctionSpacingSniff implements PHP_CodeSniffer_Sniff |
|
31 | -{ |
|
30 | +class Squiz_Sniffs_WhiteSpace_FunctionSpacingSniff implements PHP_CodeSniffer_Sniff { |
|
32 | 31 | |
33 | 32 | /** |
34 | 33 | * The number of blank lines between functions. |
@@ -43,8 +42,7 @@ discard block |
||
43 | 42 | * |
44 | 43 | * @return array |
45 | 44 | */ |
46 | - public function register() |
|
47 | - { |
|
45 | + public function register() { |
|
48 | 46 | return array(T_FUNCTION); |
49 | 47 | |
50 | 48 | }//end register() |
@@ -59,8 +57,7 @@ discard block |
||
59 | 57 | * |
60 | 58 | * @return void |
61 | 59 | */ |
62 | - public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) |
|
63 | - { |
|
60 | + public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) { |
|
64 | 61 | $tokens = $phpcsFile->getTokens(); |
65 | 62 | $this->spacing = (int) $this->spacing; |
66 | 63 |
@@ -44,7 +44,7 @@ |
||
44 | 44 | /** |
45 | 45 | * Returns an array of tokens this test wants to listen for. |
46 | 46 | * |
47 | - * @return array |
|
47 | + * @return string[] |
|
48 | 48 | */ |
49 | 49 | public function register() |
50 | 50 | { |
@@ -30,72 +30,72 @@ |
||
30 | 30 | class Squiz_Sniffs_WhiteSpace_SemicolonSpacingSniff implements PHP_CodeSniffer_Sniff |
31 | 31 | { |
32 | 32 | |
33 | - /** |
|
34 | - * A list of tokenizers this sniff supports. |
|
35 | - * |
|
36 | - * @var array |
|
37 | - */ |
|
38 | - public $supportedTokenizers = array( |
|
39 | - 'PHP', |
|
40 | - 'JS', |
|
41 | - ); |
|
33 | + /** |
|
34 | + * A list of tokenizers this sniff supports. |
|
35 | + * |
|
36 | + * @var array |
|
37 | + */ |
|
38 | + public $supportedTokenizers = array( |
|
39 | + 'PHP', |
|
40 | + 'JS', |
|
41 | + ); |
|
42 | 42 | |
43 | 43 | |
44 | - /** |
|
45 | - * Returns an array of tokens this test wants to listen for. |
|
46 | - * |
|
47 | - * @return array |
|
48 | - */ |
|
49 | - public function register() |
|
50 | - { |
|
51 | - return array(T_SEMICOLON); |
|
44 | + /** |
|
45 | + * Returns an array of tokens this test wants to listen for. |
|
46 | + * |
|
47 | + * @return array |
|
48 | + */ |
|
49 | + public function register() |
|
50 | + { |
|
51 | + return array(T_SEMICOLON); |
|
52 | 52 | |
53 | - }//end register() |
|
53 | + }//end register() |
|
54 | 54 | |
55 | 55 | |
56 | - /** |
|
57 | - * Processes this test, when one of its tokens is encountered. |
|
58 | - * |
|
59 | - * @param PHP_CodeSniffer_File $phpcsFile The file being scanned. |
|
60 | - * @param int $stackPtr The position of the current token |
|
61 | - * in the stack passed in $tokens. |
|
62 | - * |
|
63 | - * @return void |
|
64 | - */ |
|
65 | - public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) |
|
66 | - { |
|
67 | - $tokens = $phpcsFile->getTokens(); |
|
56 | + /** |
|
57 | + * Processes this test, when one of its tokens is encountered. |
|
58 | + * |
|
59 | + * @param PHP_CodeSniffer_File $phpcsFile The file being scanned. |
|
60 | + * @param int $stackPtr The position of the current token |
|
61 | + * in the stack passed in $tokens. |
|
62 | + * |
|
63 | + * @return void |
|
64 | + */ |
|
65 | + public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) |
|
66 | + { |
|
67 | + $tokens = $phpcsFile->getTokens(); |
|
68 | 68 | |
69 | - $prevType = $tokens[($stackPtr - 1)]['code']; |
|
70 | - if (isset(PHP_CodeSniffer_Tokens::$emptyTokens[$prevType]) === false) { |
|
71 | - return; |
|
72 | - } |
|
69 | + $prevType = $tokens[($stackPtr - 1)]['code']; |
|
70 | + if (isset(PHP_CodeSniffer_Tokens::$emptyTokens[$prevType]) === false) { |
|
71 | + return; |
|
72 | + } |
|
73 | 73 | |
74 | - $nonSpace = $phpcsFile->findPrevious(PHP_CodeSniffer_Tokens::$emptyTokens, ($stackPtr - 2), null, true); |
|
75 | - if ($tokens[$nonSpace]['code'] === T_SEMICOLON) { |
|
76 | - // Empty statement. |
|
77 | - return; |
|
78 | - } |
|
74 | + $nonSpace = $phpcsFile->findPrevious(PHP_CodeSniffer_Tokens::$emptyTokens, ($stackPtr - 2), null, true); |
|
75 | + if ($tokens[$nonSpace]['code'] === T_SEMICOLON) { |
|
76 | + // Empty statement. |
|
77 | + return; |
|
78 | + } |
|
79 | 79 | |
80 | - $expected = $tokens[$nonSpace]['content'].';'; |
|
81 | - $found = $phpcsFile->getTokensAsString($nonSpace, ($stackPtr - $nonSpace)).';'; |
|
82 | - $error = 'Space found before semicolon; expected "%s" but found "%s"'; |
|
83 | - $data = array( |
|
84 | - $expected, |
|
85 | - $found, |
|
86 | - ); |
|
80 | + $expected = $tokens[$nonSpace]['content'].';'; |
|
81 | + $found = $phpcsFile->getTokensAsString($nonSpace, ($stackPtr - $nonSpace)).';'; |
|
82 | + $error = 'Space found before semicolon; expected "%s" but found "%s"'; |
|
83 | + $data = array( |
|
84 | + $expected, |
|
85 | + $found, |
|
86 | + ); |
|
87 | 87 | |
88 | - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'Incorrect', $data); |
|
89 | - if ($fix === true) { |
|
90 | - $phpcsFile->fixer->beginChangeset(); |
|
91 | - for ($i = ($stackPtr - 1); $i > $nonSpace; $i--) { |
|
92 | - $phpcsFile->fixer->replaceToken($i, ''); |
|
93 | - } |
|
88 | + $fix = $phpcsFile->addFixableError($error, $stackPtr, 'Incorrect', $data); |
|
89 | + if ($fix === true) { |
|
90 | + $phpcsFile->fixer->beginChangeset(); |
|
91 | + for ($i = ($stackPtr - 1); $i > $nonSpace; $i--) { |
|
92 | + $phpcsFile->fixer->replaceToken($i, ''); |
|
93 | + } |
|
94 | 94 | |
95 | - $phpcsFile->fixer->endChangeset(); |
|
96 | - } |
|
95 | + $phpcsFile->fixer->endChangeset(); |
|
96 | + } |
|
97 | 97 | |
98 | - }//end process() |
|
98 | + }//end process() |
|
99 | 99 | |
100 | 100 | |
101 | 101 | }//end class |
@@ -48,7 +48,7 @@ discard block |
||
48 | 48 | */ |
49 | 49 | public function register() |
50 | 50 | { |
51 | - return array(T_SEMICOLON); |
|
51 | + return array( T_SEMICOLON ); |
|
52 | 52 | |
53 | 53 | }//end register() |
54 | 54 | |
@@ -62,34 +62,34 @@ discard block |
||
62 | 62 | * |
63 | 63 | * @return void |
64 | 64 | */ |
65 | - public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) |
|
65 | + public function process( PHP_CodeSniffer_File $phpcsFile, $stackPtr ) |
|
66 | 66 | { |
67 | 67 | $tokens = $phpcsFile->getTokens(); |
68 | 68 | |
69 | - $prevType = $tokens[($stackPtr - 1)]['code']; |
|
70 | - if (isset(PHP_CodeSniffer_Tokens::$emptyTokens[$prevType]) === false) { |
|
69 | + $prevType = $tokens[ ( $stackPtr - 1 ) ][ 'code' ]; |
|
70 | + if ( isset( PHP_CodeSniffer_Tokens::$emptyTokens[ $prevType ] ) === false ) { |
|
71 | 71 | return; |
72 | 72 | } |
73 | 73 | |
74 | - $nonSpace = $phpcsFile->findPrevious(PHP_CodeSniffer_Tokens::$emptyTokens, ($stackPtr - 2), null, true); |
|
75 | - if ($tokens[$nonSpace]['code'] === T_SEMICOLON) { |
|
74 | + $nonSpace = $phpcsFile->findPrevious( PHP_CodeSniffer_Tokens::$emptyTokens, ( $stackPtr - 2 ), null, true ); |
|
75 | + if ( $tokens[ $nonSpace ][ 'code' ] === T_SEMICOLON ) { |
|
76 | 76 | // Empty statement. |
77 | 77 | return; |
78 | 78 | } |
79 | 79 | |
80 | - $expected = $tokens[$nonSpace]['content'].';'; |
|
81 | - $found = $phpcsFile->getTokensAsString($nonSpace, ($stackPtr - $nonSpace)).';'; |
|
80 | + $expected = $tokens[ $nonSpace ][ 'content' ] . ';'; |
|
81 | + $found = $phpcsFile->getTokensAsString( $nonSpace, ( $stackPtr - $nonSpace ) ) . ';'; |
|
82 | 82 | $error = 'Space found before semicolon; expected "%s" but found "%s"'; |
83 | 83 | $data = array( |
84 | 84 | $expected, |
85 | 85 | $found, |
86 | 86 | ); |
87 | 87 | |
88 | - $fix = $phpcsFile->addFixableError($error, $stackPtr, 'Incorrect', $data); |
|
89 | - if ($fix === true) { |
|
88 | + $fix = $phpcsFile->addFixableError( $error, $stackPtr, 'Incorrect', $data ); |
|
89 | + if ( $fix === true ) { |
|
90 | 90 | $phpcsFile->fixer->beginChangeset(); |
91 | - for ($i = ($stackPtr - 1); $i > $nonSpace; $i--) { |
|
92 | - $phpcsFile->fixer->replaceToken($i, ''); |
|
91 | + for ( $i = ( $stackPtr - 1 ); $i > $nonSpace; $i-- ) { |
|
92 | + $phpcsFile->fixer->replaceToken( $i, '' ); |
|
93 | 93 | } |
94 | 94 | |
95 | 95 | $phpcsFile->fixer->endChangeset(); |
@@ -27,8 +27,7 @@ discard block |
||
27 | 27 | * @version Release: @package_version@ |
28 | 28 | * @link http://pear.php.net/package/PHP_CodeSniffer |
29 | 29 | */ |
30 | -class Squiz_Sniffs_WhiteSpace_SemicolonSpacingSniff implements PHP_CodeSniffer_Sniff |
|
31 | -{ |
|
30 | +class Squiz_Sniffs_WhiteSpace_SemicolonSpacingSniff implements PHP_CodeSniffer_Sniff { |
|
32 | 31 | |
33 | 32 | /** |
34 | 33 | * A list of tokenizers this sniff supports. |
@@ -46,8 +45,7 @@ discard block |
||
46 | 45 | * |
47 | 46 | * @return array |
48 | 47 | */ |
49 | - public function register() |
|
50 | - { |
|
48 | + public function register() { |
|
51 | 49 | return array(T_SEMICOLON); |
52 | 50 | |
53 | 51 | }//end register() |
@@ -62,8 +60,7 @@ discard block |
||
62 | 60 | * |
63 | 61 | * @return void |
64 | 62 | */ |
65 | - public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) |
|
66 | - { |
|
63 | + public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) { |
|
67 | 64 | $tokens = $phpcsFile->getTokens(); |
68 | 65 | |
69 | 66 | $prevType = $tokens[($stackPtr - 1)]['code']; |
@@ -22,7 +22,7 @@ |
||
22 | 22 | /** |
23 | 23 | * Returns an array of tokens this test wants to listen for. |
24 | 24 | * |
25 | - * @return array |
|
25 | + * @return string[] |
|
26 | 26 | */ |
27 | 27 | public function register() { |
28 | 28 | return array( |
@@ -44,7 +44,7 @@ discard block |
||
44 | 44 | $tokens = $phpcsFile->getTokens(); |
45 | 45 | |
46 | 46 | $token = $tokens[ $stackPtr ]; |
47 | - if ( ! isset( $token['bracket_closer'] ) ) { |
|
47 | + if ( ! isset( $token[ 'bracket_closer' ] ) ) { |
|
48 | 48 | $phpcsFile->addWarning( 'Missing bracket closer.', $stackPtr, 'MissingBracketCloser' ); |
49 | 49 | return; |
50 | 50 | } |
@@ -52,12 +52,12 @@ discard block |
||
52 | 52 | $need_spaces = $phpcsFile->findNext( |
53 | 53 | array( T_CONSTANT_ENCAPSED_STRING, T_LNUMBER, T_WHITESPACE, T_MINUS ), |
54 | 54 | ( $stackPtr + 1 ), |
55 | - $token['bracket_closer'], |
|
55 | + $token[ 'bracket_closer' ], |
|
56 | 56 | true |
57 | 57 | ); |
58 | 58 | |
59 | - $spaced1 = ( T_WHITESPACE === $tokens[ ( $stackPtr + 1 ) ]['code'] ); |
|
60 | - $spaced2 = ( T_WHITESPACE === $tokens[ ( $token['bracket_closer'] - 1 ) ]['code'] ); |
|
59 | + $spaced1 = ( T_WHITESPACE === $tokens[ ( $stackPtr + 1 ) ][ 'code' ] ); |
|
60 | + $spaced2 = ( T_WHITESPACE === $tokens[ ( $token[ 'bracket_closer' ] - 1 ) ][ 'code' ] ); |
|
61 | 61 | |
62 | 62 | // It should have spaces only if it only has strings or numbers as the key. |
63 | 63 | if ( $need_spaces && ! ( $spaced1 && $spaced2 ) ) { |
@@ -68,7 +68,7 @@ discard block |
||
68 | 68 | $phpcsFile->fixer->addContentBefore( ( $stackPtr + 1 ), ' ' ); |
69 | 69 | } |
70 | 70 | if ( ! $spaced2 ) { |
71 | - $phpcsFile->fixer->addContentBefore( $token['bracket_closer'], ' ' ); |
|
71 | + $phpcsFile->fixer->addContentBefore( $token[ 'bracket_closer' ], ' ' ); |
|
72 | 72 | } |
73 | 73 | } |
74 | 74 | } elseif ( ! $need_spaces && ( $spaced1 || $spaced2 ) ) { |
@@ -79,7 +79,7 @@ discard block |
||
79 | 79 | $phpcsFile->fixer->replaceToken( ( $stackPtr + 1 ), '' ); |
80 | 80 | } |
81 | 81 | if ( $spaced2 ) { |
82 | - $phpcsFile->fixer->replaceToken( ( $token['bracket_closer'] - 1 ), '' ); |
|
82 | + $phpcsFile->fixer->replaceToken( ( $token[ 'bracket_closer' ] - 1 ), '' ); |
|
83 | 83 | } |
84 | 84 | } |
85 | 85 | } |