@@ -33,28 +33,28 @@ |
||
33 | 33 | echo 'hi'; |
34 | 34 | } |
35 | 35 | |
36 | -if (!function_exists('YourFunction')) { |
|
36 | +if ( ! function_exists('YourFunction')) { |
|
37 | 37 | // Define a function. |
38 | 38 | function YourFunction() { |
39 | 39 | echo 'hi'; |
40 | 40 | } |
41 | 41 | } |
42 | 42 | |
43 | -if (!class_exists('MyClass')) { |
|
43 | +if ( ! class_exists('MyClass')) { |
|
44 | 44 | // Define a class. |
45 | 45 | class MyClass |
46 | 46 | { |
47 | 47 | function SomeFunction() {} |
48 | 48 | } |
49 | -} else if (!interface_exists('MyInterface')) { |
|
49 | +} else if ( ! interface_exists('MyInterface')) { |
|
50 | 50 | interface MyInterface {} |
51 | -} elseif (!interface_exists('MyInterface')) { |
|
51 | +} elseif ( ! interface_exists('MyInterface')) { |
|
52 | 52 | interface MyInterface {} |
53 | 53 | } else { |
54 | 54 | interface MyInterface {} |
55 | 55 | } |
56 | 56 | |
57 | -if (!interface_exists('MyInterface')) { |
|
57 | +if ( ! interface_exists('MyInterface')) { |
|
58 | 58 | // Define an interface. |
59 | 59 | interface MyInterface {} |
60 | 60 | } |
@@ -10,62 +10,62 @@ |
||
10 | 10 | declare(ticks=1); |
11 | 11 | |
12 | 12 | declare(ticks=1) { |
13 | - echo $i; |
|
13 | + echo $i; |
|
14 | 14 | } |
15 | 15 | |
16 | 16 | declare(ticks=1) : |
17 | - echo $i; |
|
17 | + echo $i; |
|
18 | 18 | enddeclare; |
19 | 19 | |
20 | 20 | define("MAXSIZE", 100); |
21 | 21 | if (defined('MINSIZE') === false) { |
22 | - define("MINSIZE", 10); |
|
22 | + define("MINSIZE", 10); |
|
23 | 23 | } |
24 | 24 | |
25 | 25 | // Class comment. |
26 | 26 | final class Foo |
27 | 27 | { |
28 | - public $myvar = 'foo'; |
|
28 | + public $myvar = 'foo'; |
|
29 | 29 | |
30 | - // Function comment. |
|
31 | - function Bar() { |
|
32 | - echo 'hi'; |
|
33 | - } |
|
30 | + // Function comment. |
|
31 | + function Bar() { |
|
32 | + echo 'hi'; |
|
33 | + } |
|
34 | 34 | } |
35 | 35 | |
36 | 36 | function MyFunction() { |
37 | - echo 'hi'; |
|
37 | + echo 'hi'; |
|
38 | 38 | } |
39 | 39 | |
40 | 40 | if (!function_exists('YourFunction')) { |
41 | - // Define a function. |
|
42 | - function YourFunction() { |
|
43 | - echo 'hi'; |
|
44 | - } |
|
41 | + // Define a function. |
|
42 | + function YourFunction() { |
|
43 | + echo 'hi'; |
|
44 | + } |
|
45 | 45 | } |
46 | 46 | |
47 | 47 | if (!class_exists('MyClass')) { |
48 | - // Define a class. |
|
49 | - class MyClass |
|
50 | - { |
|
51 | - function SomeFunction() {} |
|
52 | - } |
|
48 | + // Define a class. |
|
49 | + class MyClass |
|
50 | + { |
|
51 | + function SomeFunction() {} |
|
52 | + } |
|
53 | 53 | } else if (!interface_exists('MyInterface')) { |
54 | - interface MyInterface {} |
|
54 | + interface MyInterface {} |
|
55 | 55 | } elseif (!interface_exists('MyInterface')) { |
56 | - interface MyInterface {} |
|
56 | + interface MyInterface {} |
|
57 | 57 | } else { |
58 | - interface MyInterface {} |
|
58 | + interface MyInterface {} |
|
59 | 59 | } |
60 | 60 | |
61 | 61 | if (!interface_exists('MyInterface')) { |
62 | - // Define an interface. |
|
63 | - interface MyInterface {} |
|
62 | + // Define an interface. |
|
63 | + interface MyInterface {} |
|
64 | 64 | } |
65 | 65 | |
66 | 66 | #[\Attribute] |
67 | 67 | namespace { |
68 | - class A {} |
|
68 | + class A {} |
|
69 | 69 | } |
70 | 70 | |
71 | 71 | defined('APP_BASE_URL') or define('APP_BASE_URL', '/'); |
@@ -25,7 +25,7 @@ |
||
25 | 25 | * |
26 | 26 | * @return array<int, int> |
27 | 27 | */ |
28 | - public function getErrorList($testFile='') |
|
28 | + public function getErrorList($testFile = '') |
|
29 | 29 | { |
30 | 30 | if ($testFile === 'ClassDeclarationUnitTest.2.inc') { |
31 | 31 | return []; |
@@ -15,43 +15,43 @@ |
||
15 | 15 | { |
16 | 16 | |
17 | 17 | |
18 | - /** |
|
19 | - * Returns the lines where errors should occur. |
|
20 | - * |
|
21 | - * The key of the array should represent the line number and the value |
|
22 | - * should represent the number of errors that should occur on that line. |
|
23 | - * |
|
24 | - * @param string $testFile The name of the file being tested. |
|
25 | - * |
|
26 | - * @return array<int, int> |
|
27 | - */ |
|
28 | - public function getErrorList($testFile='') |
|
29 | - { |
|
30 | - if ($testFile === 'ClassDeclarationUnitTest.2.inc') { |
|
31 | - return []; |
|
32 | - } |
|
33 | - |
|
34 | - return [ |
|
35 | - 2 => 1, |
|
36 | - 3 => 2, |
|
37 | - ]; |
|
38 | - |
|
39 | - }//end getErrorList() |
|
40 | - |
|
41 | - |
|
42 | - /** |
|
43 | - * Returns the lines where warnings should occur. |
|
44 | - * |
|
45 | - * The key of the array should represent the line number and the value |
|
46 | - * should represent the number of warnings that should occur on that line. |
|
47 | - * |
|
48 | - * @return array<int, int> |
|
49 | - */ |
|
50 | - public function getWarningList() |
|
51 | - { |
|
52 | - return []; |
|
53 | - |
|
54 | - }//end getWarningList() |
|
18 | + /** |
|
19 | + * Returns the lines where errors should occur. |
|
20 | + * |
|
21 | + * The key of the array should represent the line number and the value |
|
22 | + * should represent the number of errors that should occur on that line. |
|
23 | + * |
|
24 | + * @param string $testFile The name of the file being tested. |
|
25 | + * |
|
26 | + * @return array<int, int> |
|
27 | + */ |
|
28 | + public function getErrorList($testFile='') |
|
29 | + { |
|
30 | + if ($testFile === 'ClassDeclarationUnitTest.2.inc') { |
|
31 | + return []; |
|
32 | + } |
|
33 | + |
|
34 | + return [ |
|
35 | + 2 => 1, |
|
36 | + 3 => 2, |
|
37 | + ]; |
|
38 | + |
|
39 | + }//end getErrorList() |
|
40 | + |
|
41 | + |
|
42 | + /** |
|
43 | + * Returns the lines where warnings should occur. |
|
44 | + * |
|
45 | + * The key of the array should represent the line number and the value |
|
46 | + * should represent the number of warnings that should occur on that line. |
|
47 | + * |
|
48 | + * @return array<int, int> |
|
49 | + */ |
|
50 | + public function getWarningList() |
|
51 | + { |
|
52 | + return []; |
|
53 | + |
|
54 | + }//end getWarningList() |
|
55 | 55 | |
56 | 56 | |
57 | 57 | }//end class |
@@ -103,7 +103,7 @@ |
||
103 | 103 | ) { |
104 | 104 | do { |
105 | 105 | $i = $phpcsFile->findNext(T_PHPCS_ENABLE, ($i + 1)); |
106 | - } while ($i !== false |
|
106 | + }while ($i !== false |
|
107 | 107 | && empty($tokens[$i]['sniffCodes']) === false |
108 | 108 | && isset($tokens[$i]['sniffCodes']['PSR1']) === false |
109 | 109 | && isset($tokens[$i]['sniffCodes']['PSR1.Files']) === false |
@@ -17,282 +17,282 @@ |
||
17 | 17 | { |
18 | 18 | |
19 | 19 | |
20 | - /** |
|
21 | - * Returns an array of tokens this test wants to listen for. |
|
22 | - * |
|
23 | - * @return array |
|
24 | - */ |
|
25 | - public function register() |
|
26 | - { |
|
27 | - return [T_OPEN_TAG]; |
|
28 | - |
|
29 | - }//end register() |
|
30 | - |
|
31 | - |
|
32 | - /** |
|
33 | - * Processes this sniff, when one of its tokens is encountered. |
|
34 | - * |
|
35 | - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. |
|
36 | - * @param int $stackPtr The position of the current token in |
|
37 | - * the token stack. |
|
38 | - * |
|
39 | - * @return void |
|
40 | - */ |
|
41 | - public function process(File $phpcsFile, $stackPtr) |
|
42 | - { |
|
43 | - $tokens = $phpcsFile->getTokens(); |
|
44 | - $result = $this->searchForConflict($phpcsFile, 0, ($phpcsFile->numTokens - 1), $tokens); |
|
45 | - |
|
46 | - if ($result['symbol'] !== null && $result['effect'] !== null) { |
|
47 | - $error = 'A file should declare new symbols (classes, functions, constants, etc.) and cause no other side effects, or it should execute logic with side effects, but should not do both. The first symbol is defined on line %s and the first side effect is on line %s.'; |
|
48 | - $data = [ |
|
49 | - $tokens[$result['symbol']]['line'], |
|
50 | - $tokens[$result['effect']]['line'], |
|
51 | - ]; |
|
52 | - $phpcsFile->addWarning($error, 0, 'FoundWithSymbols', $data); |
|
53 | - $phpcsFile->recordMetric($stackPtr, 'Declarations and side effects mixed', 'yes'); |
|
54 | - } else { |
|
55 | - $phpcsFile->recordMetric($stackPtr, 'Declarations and side effects mixed', 'no'); |
|
56 | - } |
|
57 | - |
|
58 | - // Ignore the rest of the file. |
|
59 | - return ($phpcsFile->numTokens + 1); |
|
60 | - |
|
61 | - }//end process() |
|
62 | - |
|
63 | - |
|
64 | - /** |
|
65 | - * Searches for symbol declarations and side effects. |
|
66 | - * |
|
67 | - * Returns the positions of both the first symbol declared and the first |
|
68 | - * side effect in the file. A NULL value for either indicates nothing was |
|
69 | - * found. |
|
70 | - * |
|
71 | - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. |
|
72 | - * @param int $start The token to start searching from. |
|
73 | - * @param int $end The token to search to. |
|
74 | - * @param array $tokens The stack of tokens that make up |
|
75 | - * the file. |
|
76 | - * |
|
77 | - * @return array |
|
78 | - */ |
|
79 | - private function searchForConflict($phpcsFile, $start, $end, $tokens) |
|
80 | - { |
|
81 | - $symbols = [ |
|
82 | - T_CLASS => T_CLASS, |
|
83 | - T_INTERFACE => T_INTERFACE, |
|
84 | - T_TRAIT => T_TRAIT, |
|
85 | - T_FUNCTION => T_FUNCTION, |
|
86 | - ]; |
|
87 | - |
|
88 | - $conditions = [ |
|
89 | - T_IF => T_IF, |
|
90 | - T_ELSE => T_ELSE, |
|
91 | - T_ELSEIF => T_ELSEIF, |
|
92 | - ]; |
|
93 | - |
|
94 | - $checkAnnotations = $phpcsFile->config->annotations; |
|
95 | - |
|
96 | - $firstSymbol = null; |
|
97 | - $firstEffect = null; |
|
98 | - for ($i = $start; $i <= $end; $i++) { |
|
99 | - // Respect phpcs:disable comments. |
|
100 | - if ($checkAnnotations === true |
|
101 | - && $tokens[$i]['code'] === T_PHPCS_DISABLE |
|
102 | - && (empty($tokens[$i]['sniffCodes']) === true |
|
103 | - || isset($tokens[$i]['sniffCodes']['PSR1']) === true |
|
104 | - || isset($tokens[$i]['sniffCodes']['PSR1.Files']) === true |
|
105 | - || isset($tokens[$i]['sniffCodes']['PSR1.Files.SideEffects']) === true) |
|
106 | - ) { |
|
107 | - do { |
|
108 | - $i = $phpcsFile->findNext(T_PHPCS_ENABLE, ($i + 1)); |
|
109 | - } while ($i !== false |
|
110 | - && empty($tokens[$i]['sniffCodes']) === false |
|
111 | - && isset($tokens[$i]['sniffCodes']['PSR1']) === false |
|
112 | - && isset($tokens[$i]['sniffCodes']['PSR1.Files']) === false |
|
113 | - && isset($tokens[$i]['sniffCodes']['PSR1.Files.SideEffects']) === false); |
|
114 | - |
|
115 | - if ($i === false) { |
|
116 | - // The entire rest of the file is disabled, |
|
117 | - // so return what we have so far. |
|
118 | - break; |
|
119 | - } |
|
120 | - |
|
121 | - continue; |
|
122 | - } |
|
123 | - |
|
124 | - // Ignore whitespace and comments. |
|
125 | - if (isset(Tokens::$emptyTokens[$tokens[$i]['code']]) === true) { |
|
126 | - continue; |
|
127 | - } |
|
128 | - |
|
129 | - // Ignore PHP tags. |
|
130 | - if ($tokens[$i]['code'] === T_OPEN_TAG |
|
131 | - || $tokens[$i]['code'] === T_CLOSE_TAG |
|
132 | - ) { |
|
133 | - continue; |
|
134 | - } |
|
135 | - |
|
136 | - // Ignore shebang. |
|
137 | - if (substr($tokens[$i]['content'], 0, 2) === '#!') { |
|
138 | - continue; |
|
139 | - } |
|
140 | - |
|
141 | - // Ignore logical operators. |
|
142 | - if (isset(Tokens::$booleanOperators[$tokens[$i]['code']]) === true) { |
|
143 | - continue; |
|
144 | - } |
|
145 | - |
|
146 | - // Ignore entire namespace, declare, const and use statements. |
|
147 | - if ($tokens[$i]['code'] === T_NAMESPACE |
|
148 | - || $tokens[$i]['code'] === T_USE |
|
149 | - || $tokens[$i]['code'] === T_DECLARE |
|
150 | - || $tokens[$i]['code'] === T_CONST |
|
151 | - ) { |
|
152 | - if (isset($tokens[$i]['scope_opener']) === true) { |
|
153 | - $i = $tokens[$i]['scope_closer']; |
|
154 | - if ($tokens[$i]['code'] === T_ENDDECLARE) { |
|
155 | - $semicolon = $phpcsFile->findNext(Tokens::$emptyTokens, ($i + 1), null, true); |
|
156 | - if ($semicolon !== false && $tokens[$semicolon]['code'] === T_SEMICOLON) { |
|
157 | - $i = $semicolon; |
|
158 | - } |
|
159 | - } |
|
160 | - } else { |
|
161 | - $semicolon = $phpcsFile->findNext(T_SEMICOLON, ($i + 1)); |
|
162 | - if ($semicolon !== false) { |
|
163 | - $i = $semicolon; |
|
164 | - } |
|
165 | - } |
|
166 | - |
|
167 | - continue; |
|
168 | - } |
|
169 | - |
|
170 | - // Ignore function/class prefixes. |
|
171 | - if (isset(Tokens::$methodPrefixes[$tokens[$i]['code']]) === true) { |
|
172 | - continue; |
|
173 | - } |
|
174 | - |
|
175 | - // Ignore anon classes. |
|
176 | - if ($tokens[$i]['code'] === T_ANON_CLASS) { |
|
177 | - $i = $tokens[$i]['scope_closer']; |
|
178 | - continue; |
|
179 | - } |
|
180 | - |
|
181 | - // Ignore attributes. |
|
182 | - if ($tokens[$i]['code'] === T_ATTRIBUTE |
|
183 | - && isset($tokens[$i]['attribute_closer']) === true |
|
184 | - ) { |
|
185 | - $i = $tokens[$i]['attribute_closer']; |
|
186 | - continue; |
|
187 | - } |
|
188 | - |
|
189 | - // Detect and skip over symbols. |
|
190 | - if (isset($symbols[$tokens[$i]['code']]) === true |
|
191 | - && isset($tokens[$i]['scope_closer']) === true |
|
192 | - ) { |
|
193 | - if ($firstSymbol === null) { |
|
194 | - $firstSymbol = $i; |
|
195 | - } |
|
196 | - |
|
197 | - $i = $tokens[$i]['scope_closer']; |
|
198 | - continue; |
|
199 | - } else if ($tokens[$i]['code'] === T_STRING |
|
200 | - && strtolower($tokens[$i]['content']) === 'define' |
|
201 | - ) { |
|
202 | - $prev = $phpcsFile->findPrevious(Tokens::$emptyTokens, ($i - 1), null, true); |
|
203 | - if ($tokens[$prev]['code'] !== T_OBJECT_OPERATOR |
|
204 | - && $tokens[$prev]['code'] !== T_NULLSAFE_OBJECT_OPERATOR |
|
205 | - && $tokens[$prev]['code'] !== T_DOUBLE_COLON |
|
206 | - && $tokens[$prev]['code'] !== T_FUNCTION |
|
207 | - ) { |
|
208 | - if ($firstSymbol === null) { |
|
209 | - $firstSymbol = $i; |
|
210 | - } |
|
211 | - |
|
212 | - $semicolon = $phpcsFile->findNext(T_SEMICOLON, ($i + 1)); |
|
213 | - if ($semicolon !== false) { |
|
214 | - $i = $semicolon; |
|
215 | - } |
|
216 | - |
|
217 | - continue; |
|
218 | - } |
|
219 | - }//end if |
|
220 | - |
|
221 | - // Special case for defined() as it can be used to see |
|
222 | - // if a constant (a symbol) should be defined or not and |
|
223 | - // doesn't need to use a full conditional block. |
|
224 | - if ($tokens[$i]['code'] === T_STRING |
|
225 | - && strtolower($tokens[$i]['content']) === 'defined' |
|
226 | - ) { |
|
227 | - $openBracket = $phpcsFile->findNext(Tokens::$emptyTokens, ($i + 1), null, true); |
|
228 | - if ($openBracket !== false |
|
229 | - && $tokens[$openBracket]['code'] === T_OPEN_PARENTHESIS |
|
230 | - && isset($tokens[$openBracket]['parenthesis_closer']) === true |
|
231 | - ) { |
|
232 | - $prev = $phpcsFile->findPrevious(Tokens::$emptyTokens, ($i - 1), null, true); |
|
233 | - if ($tokens[$prev]['code'] !== T_OBJECT_OPERATOR |
|
234 | - && $tokens[$prev]['code'] !== T_NULLSAFE_OBJECT_OPERATOR |
|
235 | - && $tokens[$prev]['code'] !== T_DOUBLE_COLON |
|
236 | - && $tokens[$prev]['code'] !== T_FUNCTION |
|
237 | - ) { |
|
238 | - $i = $tokens[$openBracket]['parenthesis_closer']; |
|
239 | - continue; |
|
240 | - } |
|
241 | - } |
|
242 | - }//end if |
|
243 | - |
|
244 | - // Conditional statements are allowed in symbol files as long as the |
|
245 | - // contents is only a symbol definition. So don't count these as effects |
|
246 | - // in this case. |
|
247 | - if (isset($conditions[$tokens[$i]['code']]) === true) { |
|
248 | - if (isset($tokens[$i]['scope_opener']) === false) { |
|
249 | - // Probably an "else if", so just ignore. |
|
250 | - continue; |
|
251 | - } |
|
252 | - |
|
253 | - $result = $this->searchForConflict( |
|
254 | - $phpcsFile, |
|
255 | - ($tokens[$i]['scope_opener'] + 1), |
|
256 | - ($tokens[$i]['scope_closer'] - 1), |
|
257 | - $tokens |
|
258 | - ); |
|
259 | - |
|
260 | - if ($result['symbol'] !== null) { |
|
261 | - if ($firstSymbol === null) { |
|
262 | - $firstSymbol = $result['symbol']; |
|
263 | - } |
|
264 | - |
|
265 | - if ($result['effect'] !== null) { |
|
266 | - // Found a conflict. |
|
267 | - $firstEffect = $result['effect']; |
|
268 | - break; |
|
269 | - } |
|
270 | - } |
|
271 | - |
|
272 | - if ($firstEffect === null) { |
|
273 | - $firstEffect = $result['effect']; |
|
274 | - } |
|
275 | - |
|
276 | - $i = $tokens[$i]['scope_closer']; |
|
277 | - continue; |
|
278 | - }//end if |
|
279 | - |
|
280 | - if ($firstEffect === null) { |
|
281 | - $firstEffect = $i; |
|
282 | - } |
|
283 | - |
|
284 | - if ($firstSymbol !== null) { |
|
285 | - // We have a conflict we have to report, so no point continuing. |
|
286 | - break; |
|
287 | - } |
|
288 | - }//end for |
|
289 | - |
|
290 | - return [ |
|
291 | - 'symbol' => $firstSymbol, |
|
292 | - 'effect' => $firstEffect, |
|
293 | - ]; |
|
294 | - |
|
295 | - }//end searchForConflict() |
|
20 | + /** |
|
21 | + * Returns an array of tokens this test wants to listen for. |
|
22 | + * |
|
23 | + * @return array |
|
24 | + */ |
|
25 | + public function register() |
|
26 | + { |
|
27 | + return [T_OPEN_TAG]; |
|
28 | + |
|
29 | + }//end register() |
|
30 | + |
|
31 | + |
|
32 | + /** |
|
33 | + * Processes this sniff, when one of its tokens is encountered. |
|
34 | + * |
|
35 | + * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. |
|
36 | + * @param int $stackPtr The position of the current token in |
|
37 | + * the token stack. |
|
38 | + * |
|
39 | + * @return void |
|
40 | + */ |
|
41 | + public function process(File $phpcsFile, $stackPtr) |
|
42 | + { |
|
43 | + $tokens = $phpcsFile->getTokens(); |
|
44 | + $result = $this->searchForConflict($phpcsFile, 0, ($phpcsFile->numTokens - 1), $tokens); |
|
45 | + |
|
46 | + if ($result['symbol'] !== null && $result['effect'] !== null) { |
|
47 | + $error = 'A file should declare new symbols (classes, functions, constants, etc.) and cause no other side effects, or it should execute logic with side effects, but should not do both. The first symbol is defined on line %s and the first side effect is on line %s.'; |
|
48 | + $data = [ |
|
49 | + $tokens[$result['symbol']]['line'], |
|
50 | + $tokens[$result['effect']]['line'], |
|
51 | + ]; |
|
52 | + $phpcsFile->addWarning($error, 0, 'FoundWithSymbols', $data); |
|
53 | + $phpcsFile->recordMetric($stackPtr, 'Declarations and side effects mixed', 'yes'); |
|
54 | + } else { |
|
55 | + $phpcsFile->recordMetric($stackPtr, 'Declarations and side effects mixed', 'no'); |
|
56 | + } |
|
57 | + |
|
58 | + // Ignore the rest of the file. |
|
59 | + return ($phpcsFile->numTokens + 1); |
|
60 | + |
|
61 | + }//end process() |
|
62 | + |
|
63 | + |
|
64 | + /** |
|
65 | + * Searches for symbol declarations and side effects. |
|
66 | + * |
|
67 | + * Returns the positions of both the first symbol declared and the first |
|
68 | + * side effect in the file. A NULL value for either indicates nothing was |
|
69 | + * found. |
|
70 | + * |
|
71 | + * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. |
|
72 | + * @param int $start The token to start searching from. |
|
73 | + * @param int $end The token to search to. |
|
74 | + * @param array $tokens The stack of tokens that make up |
|
75 | + * the file. |
|
76 | + * |
|
77 | + * @return array |
|
78 | + */ |
|
79 | + private function searchForConflict($phpcsFile, $start, $end, $tokens) |
|
80 | + { |
|
81 | + $symbols = [ |
|
82 | + T_CLASS => T_CLASS, |
|
83 | + T_INTERFACE => T_INTERFACE, |
|
84 | + T_TRAIT => T_TRAIT, |
|
85 | + T_FUNCTION => T_FUNCTION, |
|
86 | + ]; |
|
87 | + |
|
88 | + $conditions = [ |
|
89 | + T_IF => T_IF, |
|
90 | + T_ELSE => T_ELSE, |
|
91 | + T_ELSEIF => T_ELSEIF, |
|
92 | + ]; |
|
93 | + |
|
94 | + $checkAnnotations = $phpcsFile->config->annotations; |
|
95 | + |
|
96 | + $firstSymbol = null; |
|
97 | + $firstEffect = null; |
|
98 | + for ($i = $start; $i <= $end; $i++) { |
|
99 | + // Respect phpcs:disable comments. |
|
100 | + if ($checkAnnotations === true |
|
101 | + && $tokens[$i]['code'] === T_PHPCS_DISABLE |
|
102 | + && (empty($tokens[$i]['sniffCodes']) === true |
|
103 | + || isset($tokens[$i]['sniffCodes']['PSR1']) === true |
|
104 | + || isset($tokens[$i]['sniffCodes']['PSR1.Files']) === true |
|
105 | + || isset($tokens[$i]['sniffCodes']['PSR1.Files.SideEffects']) === true) |
|
106 | + ) { |
|
107 | + do { |
|
108 | + $i = $phpcsFile->findNext(T_PHPCS_ENABLE, ($i + 1)); |
|
109 | + } while ($i !== false |
|
110 | + && empty($tokens[$i]['sniffCodes']) === false |
|
111 | + && isset($tokens[$i]['sniffCodes']['PSR1']) === false |
|
112 | + && isset($tokens[$i]['sniffCodes']['PSR1.Files']) === false |
|
113 | + && isset($tokens[$i]['sniffCodes']['PSR1.Files.SideEffects']) === false); |
|
114 | + |
|
115 | + if ($i === false) { |
|
116 | + // The entire rest of the file is disabled, |
|
117 | + // so return what we have so far. |
|
118 | + break; |
|
119 | + } |
|
120 | + |
|
121 | + continue; |
|
122 | + } |
|
123 | + |
|
124 | + // Ignore whitespace and comments. |
|
125 | + if (isset(Tokens::$emptyTokens[$tokens[$i]['code']]) === true) { |
|
126 | + continue; |
|
127 | + } |
|
128 | + |
|
129 | + // Ignore PHP tags. |
|
130 | + if ($tokens[$i]['code'] === T_OPEN_TAG |
|
131 | + || $tokens[$i]['code'] === T_CLOSE_TAG |
|
132 | + ) { |
|
133 | + continue; |
|
134 | + } |
|
135 | + |
|
136 | + // Ignore shebang. |
|
137 | + if (substr($tokens[$i]['content'], 0, 2) === '#!') { |
|
138 | + continue; |
|
139 | + } |
|
140 | + |
|
141 | + // Ignore logical operators. |
|
142 | + if (isset(Tokens::$booleanOperators[$tokens[$i]['code']]) === true) { |
|
143 | + continue; |
|
144 | + } |
|
145 | + |
|
146 | + // Ignore entire namespace, declare, const and use statements. |
|
147 | + if ($tokens[$i]['code'] === T_NAMESPACE |
|
148 | + || $tokens[$i]['code'] === T_USE |
|
149 | + || $tokens[$i]['code'] === T_DECLARE |
|
150 | + || $tokens[$i]['code'] === T_CONST |
|
151 | + ) { |
|
152 | + if (isset($tokens[$i]['scope_opener']) === true) { |
|
153 | + $i = $tokens[$i]['scope_closer']; |
|
154 | + if ($tokens[$i]['code'] === T_ENDDECLARE) { |
|
155 | + $semicolon = $phpcsFile->findNext(Tokens::$emptyTokens, ($i + 1), null, true); |
|
156 | + if ($semicolon !== false && $tokens[$semicolon]['code'] === T_SEMICOLON) { |
|
157 | + $i = $semicolon; |
|
158 | + } |
|
159 | + } |
|
160 | + } else { |
|
161 | + $semicolon = $phpcsFile->findNext(T_SEMICOLON, ($i + 1)); |
|
162 | + if ($semicolon !== false) { |
|
163 | + $i = $semicolon; |
|
164 | + } |
|
165 | + } |
|
166 | + |
|
167 | + continue; |
|
168 | + } |
|
169 | + |
|
170 | + // Ignore function/class prefixes. |
|
171 | + if (isset(Tokens::$methodPrefixes[$tokens[$i]['code']]) === true) { |
|
172 | + continue; |
|
173 | + } |
|
174 | + |
|
175 | + // Ignore anon classes. |
|
176 | + if ($tokens[$i]['code'] === T_ANON_CLASS) { |
|
177 | + $i = $tokens[$i]['scope_closer']; |
|
178 | + continue; |
|
179 | + } |
|
180 | + |
|
181 | + // Ignore attributes. |
|
182 | + if ($tokens[$i]['code'] === T_ATTRIBUTE |
|
183 | + && isset($tokens[$i]['attribute_closer']) === true |
|
184 | + ) { |
|
185 | + $i = $tokens[$i]['attribute_closer']; |
|
186 | + continue; |
|
187 | + } |
|
188 | + |
|
189 | + // Detect and skip over symbols. |
|
190 | + if (isset($symbols[$tokens[$i]['code']]) === true |
|
191 | + && isset($tokens[$i]['scope_closer']) === true |
|
192 | + ) { |
|
193 | + if ($firstSymbol === null) { |
|
194 | + $firstSymbol = $i; |
|
195 | + } |
|
196 | + |
|
197 | + $i = $tokens[$i]['scope_closer']; |
|
198 | + continue; |
|
199 | + } else if ($tokens[$i]['code'] === T_STRING |
|
200 | + && strtolower($tokens[$i]['content']) === 'define' |
|
201 | + ) { |
|
202 | + $prev = $phpcsFile->findPrevious(Tokens::$emptyTokens, ($i - 1), null, true); |
|
203 | + if ($tokens[$prev]['code'] !== T_OBJECT_OPERATOR |
|
204 | + && $tokens[$prev]['code'] !== T_NULLSAFE_OBJECT_OPERATOR |
|
205 | + && $tokens[$prev]['code'] !== T_DOUBLE_COLON |
|
206 | + && $tokens[$prev]['code'] !== T_FUNCTION |
|
207 | + ) { |
|
208 | + if ($firstSymbol === null) { |
|
209 | + $firstSymbol = $i; |
|
210 | + } |
|
211 | + |
|
212 | + $semicolon = $phpcsFile->findNext(T_SEMICOLON, ($i + 1)); |
|
213 | + if ($semicolon !== false) { |
|
214 | + $i = $semicolon; |
|
215 | + } |
|
216 | + |
|
217 | + continue; |
|
218 | + } |
|
219 | + }//end if |
|
220 | + |
|
221 | + // Special case for defined() as it can be used to see |
|
222 | + // if a constant (a symbol) should be defined or not and |
|
223 | + // doesn't need to use a full conditional block. |
|
224 | + if ($tokens[$i]['code'] === T_STRING |
|
225 | + && strtolower($tokens[$i]['content']) === 'defined' |
|
226 | + ) { |
|
227 | + $openBracket = $phpcsFile->findNext(Tokens::$emptyTokens, ($i + 1), null, true); |
|
228 | + if ($openBracket !== false |
|
229 | + && $tokens[$openBracket]['code'] === T_OPEN_PARENTHESIS |
|
230 | + && isset($tokens[$openBracket]['parenthesis_closer']) === true |
|
231 | + ) { |
|
232 | + $prev = $phpcsFile->findPrevious(Tokens::$emptyTokens, ($i - 1), null, true); |
|
233 | + if ($tokens[$prev]['code'] !== T_OBJECT_OPERATOR |
|
234 | + && $tokens[$prev]['code'] !== T_NULLSAFE_OBJECT_OPERATOR |
|
235 | + && $tokens[$prev]['code'] !== T_DOUBLE_COLON |
|
236 | + && $tokens[$prev]['code'] !== T_FUNCTION |
|
237 | + ) { |
|
238 | + $i = $tokens[$openBracket]['parenthesis_closer']; |
|
239 | + continue; |
|
240 | + } |
|
241 | + } |
|
242 | + }//end if |
|
243 | + |
|
244 | + // Conditional statements are allowed in symbol files as long as the |
|
245 | + // contents is only a symbol definition. So don't count these as effects |
|
246 | + // in this case. |
|
247 | + if (isset($conditions[$tokens[$i]['code']]) === true) { |
|
248 | + if (isset($tokens[$i]['scope_opener']) === false) { |
|
249 | + // Probably an "else if", so just ignore. |
|
250 | + continue; |
|
251 | + } |
|
252 | + |
|
253 | + $result = $this->searchForConflict( |
|
254 | + $phpcsFile, |
|
255 | + ($tokens[$i]['scope_opener'] + 1), |
|
256 | + ($tokens[$i]['scope_closer'] - 1), |
|
257 | + $tokens |
|
258 | + ); |
|
259 | + |
|
260 | + if ($result['symbol'] !== null) { |
|
261 | + if ($firstSymbol === null) { |
|
262 | + $firstSymbol = $result['symbol']; |
|
263 | + } |
|
264 | + |
|
265 | + if ($result['effect'] !== null) { |
|
266 | + // Found a conflict. |
|
267 | + $firstEffect = $result['effect']; |
|
268 | + break; |
|
269 | + } |
|
270 | + } |
|
271 | + |
|
272 | + if ($firstEffect === null) { |
|
273 | + $firstEffect = $result['effect']; |
|
274 | + } |
|
275 | + |
|
276 | + $i = $tokens[$i]['scope_closer']; |
|
277 | + continue; |
|
278 | + }//end if |
|
279 | + |
|
280 | + if ($firstEffect === null) { |
|
281 | + $firstEffect = $i; |
|
282 | + } |
|
283 | + |
|
284 | + if ($firstSymbol !== null) { |
|
285 | + // We have a conflict we have to report, so no point continuing. |
|
286 | + break; |
|
287 | + } |
|
288 | + }//end for |
|
289 | + |
|
290 | + return [ |
|
291 | + 'symbol' => $firstSymbol, |
|
292 | + 'effect' => $firstEffect, |
|
293 | + ]; |
|
294 | + |
|
295 | + }//end searchForConflict() |
|
296 | 296 | |
297 | 297 | |
298 | 298 | }//end class |
@@ -16,59 +16,59 @@ |
||
16 | 16 | { |
17 | 17 | |
18 | 18 | |
19 | - /** |
|
20 | - * Returns an array of tokens this test wants to listen for. |
|
21 | - * |
|
22 | - * @return array |
|
23 | - */ |
|
24 | - public function register() |
|
25 | - { |
|
26 | - return [ |
|
27 | - T_CLASS, |
|
28 | - T_INTERFACE, |
|
29 | - T_TRAIT, |
|
30 | - ]; |
|
19 | + /** |
|
20 | + * Returns an array of tokens this test wants to listen for. |
|
21 | + * |
|
22 | + * @return array |
|
23 | + */ |
|
24 | + public function register() |
|
25 | + { |
|
26 | + return [ |
|
27 | + T_CLASS, |
|
28 | + T_INTERFACE, |
|
29 | + T_TRAIT, |
|
30 | + ]; |
|
31 | 31 | |
32 | - }//end register() |
|
32 | + }//end register() |
|
33 | 33 | |
34 | 34 | |
35 | - /** |
|
36 | - * Processes this test, when one of its tokens is encountered. |
|
37 | - * |
|
38 | - * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. |
|
39 | - * @param integer $stackPtr The position of the current token in |
|
40 | - * the token stack. |
|
41 | - * |
|
42 | - * @return void |
|
43 | - */ |
|
44 | - public function process(File $phpcsFile, $stackPtr) |
|
45 | - { |
|
46 | - $tokens = $phpcsFile->getTokens(); |
|
47 | - if (isset($tokens[$stackPtr]['scope_closer']) === false) { |
|
48 | - return; |
|
49 | - } |
|
35 | + /** |
|
36 | + * Processes this test, when one of its tokens is encountered. |
|
37 | + * |
|
38 | + * @param \PHP_CodeSniffer\Files\File $phpcsFile The file being scanned. |
|
39 | + * @param integer $stackPtr The position of the current token in |
|
40 | + * the token stack. |
|
41 | + * |
|
42 | + * @return void |
|
43 | + */ |
|
44 | + public function process(File $phpcsFile, $stackPtr) |
|
45 | + { |
|
46 | + $tokens = $phpcsFile->getTokens(); |
|
47 | + if (isset($tokens[$stackPtr]['scope_closer']) === false) { |
|
48 | + return; |
|
49 | + } |
|
50 | 50 | |
51 | - $errorData = [strtolower($tokens[$stackPtr]['content'])]; |
|
51 | + $errorData = [strtolower($tokens[$stackPtr]['content'])]; |
|
52 | 52 | |
53 | - $nextClass = $phpcsFile->findNext([T_CLASS, T_INTERFACE, T_TRAIT], ($tokens[$stackPtr]['scope_closer'] + 1)); |
|
54 | - if ($nextClass !== false) { |
|
55 | - $error = 'Each %s must be in a file by itself'; |
|
56 | - $phpcsFile->addError($error, $nextClass, 'MultipleClasses', $errorData); |
|
57 | - $phpcsFile->recordMetric($stackPtr, 'One class per file', 'no'); |
|
58 | - } else { |
|
59 | - $phpcsFile->recordMetric($stackPtr, 'One class per file', 'yes'); |
|
60 | - } |
|
53 | + $nextClass = $phpcsFile->findNext([T_CLASS, T_INTERFACE, T_TRAIT], ($tokens[$stackPtr]['scope_closer'] + 1)); |
|
54 | + if ($nextClass !== false) { |
|
55 | + $error = 'Each %s must be in a file by itself'; |
|
56 | + $phpcsFile->addError($error, $nextClass, 'MultipleClasses', $errorData); |
|
57 | + $phpcsFile->recordMetric($stackPtr, 'One class per file', 'no'); |
|
58 | + } else { |
|
59 | + $phpcsFile->recordMetric($stackPtr, 'One class per file', 'yes'); |
|
60 | + } |
|
61 | 61 | |
62 | - $namespace = $phpcsFile->findNext([T_NAMESPACE, T_CLASS, T_INTERFACE, T_TRAIT], 0); |
|
63 | - if ($tokens[$namespace]['code'] !== T_NAMESPACE) { |
|
64 | - $error = 'Each %s must be in a namespace of at least one level (a top-level vendor name)'; |
|
65 | - $phpcsFile->addError($error, $stackPtr, 'MissingNamespace', $errorData); |
|
66 | - $phpcsFile->recordMetric($stackPtr, 'Class defined in namespace', 'no'); |
|
67 | - } else { |
|
68 | - $phpcsFile->recordMetric($stackPtr, 'Class defined in namespace', 'yes'); |
|
69 | - } |
|
62 | + $namespace = $phpcsFile->findNext([T_NAMESPACE, T_CLASS, T_INTERFACE, T_TRAIT], 0); |
|
63 | + if ($tokens[$namespace]['code'] !== T_NAMESPACE) { |
|
64 | + $error = 'Each %s must be in a namespace of at least one level (a top-level vendor name)'; |
|
65 | + $phpcsFile->addError($error, $stackPtr, 'MissingNamespace', $errorData); |
|
66 | + $phpcsFile->recordMetric($stackPtr, 'Class defined in namespace', 'no'); |
|
67 | + } else { |
|
68 | + $phpcsFile->recordMetric($stackPtr, 'Class defined in namespace', 'yes'); |
|
69 | + } |
|
70 | 70 | |
71 | - }//end process() |
|
71 | + }//end process() |
|
72 | 72 | |
73 | 73 | |
74 | 74 | }//end class |
@@ -2,69 +2,69 @@ |
||
2 | 2 | |
3 | 3 | function test() |
4 | 4 | { |
5 | - // Body here. |
|
5 | + // Body here. |
|
6 | 6 | } |
7 | 7 | |
8 | 8 | function test() |
9 | 9 | { |
10 | - echo 'foo';} |
|
10 | + echo 'foo';} |
|
11 | 11 | |
12 | 12 | function test() |
13 | 13 | { |
14 | - // Body here. |
|
14 | + // Body here. |
|
15 | 15 | |
16 | 16 | } |
17 | 17 | |
18 | 18 | function test() |
19 | 19 | { |
20 | - // Body here. |
|
20 | + // Body here. |
|
21 | 21 | |
22 | 22 | |
23 | 23 | } |
24 | 24 | |
25 | 25 | class MyClass |
26 | 26 | { |
27 | - function test() |
|
28 | - { |
|
29 | - // Body here. |
|
30 | - } |
|
27 | + function test() |
|
28 | + { |
|
29 | + // Body here. |
|
30 | + } |
|
31 | 31 | |
32 | - function test() |
|
33 | - { |
|
34 | - echo 'foo';} |
|
32 | + function test() |
|
33 | + { |
|
34 | + echo 'foo';} |
|
35 | 35 | |
36 | - function test() |
|
37 | - { |
|
38 | - // Body here. |
|
36 | + function test() |
|
37 | + { |
|
38 | + // Body here. |
|
39 | 39 | |
40 | - } |
|
40 | + } |
|
41 | 41 | |
42 | - function test() |
|
43 | - { |
|
44 | - // Body here. |
|
42 | + function test() |
|
43 | + { |
|
44 | + // Body here. |
|
45 | 45 | |
46 | 46 | |
47 | - } |
|
47 | + } |
|
48 | 48 | } |
49 | 49 | |
50 | 50 | $foo = function test() |
51 | 51 | { |
52 | - // Body here. |
|
52 | + // Body here. |
|
53 | 53 | }; |
54 | 54 | |
55 | 55 | $foo = function test() |
56 | 56 | { |
57 | - echo 'foo';}; |
|
57 | + echo 'foo';}; |
|
58 | 58 | |
59 | 59 | $foo = function test() |
60 | 60 | { |
61 | - // Body here. |
|
61 | + // Body here. |
|
62 | 62 | |
63 | 63 | }; |
64 | 64 | |
65 | 65 | $foo = function test() |
66 | 66 | { |
67 | - // Body here. |
|
67 | + // Body here. |
|
68 | 68 | |
69 | 69 | |
70 | 70 | }; |
@@ -7,7 +7,7 @@ discard block |
||
7 | 7 | |
8 | 8 | function test() |
9 | 9 | { |
10 | - echo 'foo';} |
|
10 | + echo 'foo'; } |
|
11 | 11 | |
12 | 12 | function test() |
13 | 13 | { |
@@ -31,7 +31,7 @@ discard block |
||
31 | 31 | |
32 | 32 | function test() |
33 | 33 | { |
34 | - echo 'foo';} |
|
34 | + echo 'foo'; } |
|
35 | 35 | |
36 | 36 | function test() |
37 | 37 | { |
@@ -54,7 +54,7 @@ discard block |
||
54 | 54 | |
55 | 55 | $foo = function test() |
56 | 56 | { |
57 | - echo 'foo';}; |
|
57 | + echo 'foo'; }; |
|
58 | 58 | |
59 | 59 | $foo = function test() |
60 | 60 | { |
@@ -15,41 +15,41 @@ |
||
15 | 15 | { |
16 | 16 | |
17 | 17 | |
18 | - /** |
|
19 | - * Returns the lines where errors should occur. |
|
20 | - * |
|
21 | - * The key of the array should represent the line number and the value |
|
22 | - * should represent the number of errors that should occur on that line. |
|
23 | - * |
|
24 | - * @return array<int, int> |
|
25 | - */ |
|
26 | - public function getErrorList() |
|
27 | - { |
|
28 | - return [ |
|
29 | - 16 => 1, |
|
30 | - 23 => 1, |
|
31 | - 40 => 1, |
|
32 | - 47 => 1, |
|
33 | - 63 => 1, |
|
34 | - 70 => 1, |
|
35 | - ]; |
|
36 | - |
|
37 | - }//end getErrorList() |
|
38 | - |
|
39 | - |
|
40 | - /** |
|
41 | - * Returns the lines where warnings should occur. |
|
42 | - * |
|
43 | - * The key of the array should represent the line number and the value |
|
44 | - * should represent the number of warnings that should occur on that line. |
|
45 | - * |
|
46 | - * @return array<int, int> |
|
47 | - */ |
|
48 | - public function getWarningList() |
|
49 | - { |
|
50 | - return []; |
|
51 | - |
|
52 | - }//end getWarningList() |
|
18 | + /** |
|
19 | + * Returns the lines where errors should occur. |
|
20 | + * |
|
21 | + * The key of the array should represent the line number and the value |
|
22 | + * should represent the number of errors that should occur on that line. |
|
23 | + * |
|
24 | + * @return array<int, int> |
|
25 | + */ |
|
26 | + public function getErrorList() |
|
27 | + { |
|
28 | + return [ |
|
29 | + 16 => 1, |
|
30 | + 23 => 1, |
|
31 | + 40 => 1, |
|
32 | + 47 => 1, |
|
33 | + 63 => 1, |
|
34 | + 70 => 1, |
|
35 | + ]; |
|
36 | + |
|
37 | + }//end getErrorList() |
|
38 | + |
|
39 | + |
|
40 | + /** |
|
41 | + * Returns the lines where warnings should occur. |
|
42 | + * |
|
43 | + * The key of the array should represent the line number and the value |
|
44 | + * should represent the number of warnings that should occur on that line. |
|
45 | + * |
|
46 | + * @return array<int, int> |
|
47 | + */ |
|
48 | + public function getWarningList() |
|
49 | + { |
|
50 | + return []; |
|
51 | + |
|
52 | + }//end getWarningList() |
|
53 | 53 | |
54 | 54 | |
55 | 55 | }//end class |
@@ -25,7 +25,7 @@ |
||
25 | 25 | * |
26 | 26 | * @return array<int, int> |
27 | 27 | */ |
28 | - public function getErrorList($testFile='') |
|
28 | + public function getErrorList($testFile = '') |
|
29 | 29 | { |
30 | 30 | switch ($testFile) { |
31 | 31 | case 'ClosingTagUnitTest.1.inc': |
@@ -15,50 +15,50 @@ |
||
15 | 15 | { |
16 | 16 | |
17 | 17 | |
18 | - /** |
|
19 | - * Returns the lines where errors should occur. |
|
20 | - * |
|
21 | - * The key of the array should represent the line number and the value |
|
22 | - * should represent the number of errors that should occur on that line. |
|
23 | - * |
|
24 | - * @param string $testFile The name of the file being tested. |
|
25 | - * |
|
26 | - * @return array<int, int> |
|
27 | - */ |
|
28 | - public function getErrorList($testFile='') |
|
29 | - { |
|
30 | - switch ($testFile) { |
|
31 | - case 'ClosingTagUnitTest.1.inc': |
|
32 | - return [11 => 1]; |
|
18 | + /** |
|
19 | + * Returns the lines where errors should occur. |
|
20 | + * |
|
21 | + * The key of the array should represent the line number and the value |
|
22 | + * should represent the number of errors that should occur on that line. |
|
23 | + * |
|
24 | + * @param string $testFile The name of the file being tested. |
|
25 | + * |
|
26 | + * @return array<int, int> |
|
27 | + */ |
|
28 | + public function getErrorList($testFile='') |
|
29 | + { |
|
30 | + switch ($testFile) { |
|
31 | + case 'ClosingTagUnitTest.1.inc': |
|
32 | + return [11 => 1]; |
|
33 | 33 | |
34 | - case 'ClosingTagUnitTest.4.inc': |
|
35 | - case 'ClosingTagUnitTest.5.inc': |
|
36 | - return [1 => 1]; |
|
34 | + case 'ClosingTagUnitTest.4.inc': |
|
35 | + case 'ClosingTagUnitTest.5.inc': |
|
36 | + return [1 => 1]; |
|
37 | 37 | |
38 | - case 'ClosingTagUnitTest.6.inc': |
|
39 | - case 'ClosingTagUnitTest.7.inc': |
|
40 | - return [5 => 1]; |
|
38 | + case 'ClosingTagUnitTest.6.inc': |
|
39 | + case 'ClosingTagUnitTest.7.inc': |
|
40 | + return [5 => 1]; |
|
41 | 41 | |
42 | - default: |
|
43 | - return []; |
|
44 | - } |
|
42 | + default: |
|
43 | + return []; |
|
44 | + } |
|
45 | 45 | |
46 | - }//end getErrorList() |
|
46 | + }//end getErrorList() |
|
47 | 47 | |
48 | 48 | |
49 | - /** |
|
50 | - * Returns the lines where warnings should occur. |
|
51 | - * |
|
52 | - * The key of the array should represent the line number and the value |
|
53 | - * should represent the number of warnings that should occur on that line. |
|
54 | - * |
|
55 | - * @return array<int, int> |
|
56 | - */ |
|
57 | - public function getWarningList() |
|
58 | - { |
|
59 | - return []; |
|
49 | + /** |
|
50 | + * Returns the lines where warnings should occur. |
|
51 | + * |
|
52 | + * The key of the array should represent the line number and the value |
|
53 | + * should represent the number of warnings that should occur on that line. |
|
54 | + * |
|
55 | + * @return array<int, int> |
|
56 | + */ |
|
57 | + public function getWarningList() |
|
58 | + { |
|
59 | + return []; |
|
60 | 60 | |
61 | - }//end getWarningList() |
|
61 | + }//end getWarningList() |
|
62 | 62 | |
63 | 63 | |
64 | 64 | }//end class |
@@ -28,19 +28,19 @@ |
||
28 | 28 | public function getErrorList($testFile='') |
29 | 29 | { |
30 | 30 | switch ($testFile) { |
31 | - case 'ClosingTagUnitTest.1.inc': |
|
32 | - return [11 => 1]; |
|
31 | + case 'ClosingTagUnitTest.1.inc': |
|
32 | + return [11 => 1]; |
|
33 | 33 | |
34 | - case 'ClosingTagUnitTest.4.inc': |
|
35 | - case 'ClosingTagUnitTest.5.inc': |
|
36 | - return [1 => 1]; |
|
34 | + case 'ClosingTagUnitTest.4.inc': |
|
35 | + case 'ClosingTagUnitTest.5.inc': |
|
36 | + return [1 => 1]; |
|
37 | 37 | |
38 | - case 'ClosingTagUnitTest.6.inc': |
|
39 | - case 'ClosingTagUnitTest.7.inc': |
|
40 | - return [5 => 1]; |
|
38 | + case 'ClosingTagUnitTest.6.inc': |
|
39 | + case 'ClosingTagUnitTest.7.inc': |
|
40 | + return [5 => 1]; |
|
41 | 41 | |
42 | - default: |
|
43 | - return []; |
|
42 | + default: |
|
43 | + return []; |
|
44 | 44 | } |
45 | 45 | |
46 | 46 | }//end getErrorList() |
@@ -25,7 +25,7 @@ discard block |
||
25 | 25 | * |
26 | 26 | * @return array<int, int> |
27 | 27 | */ |
28 | - public function getErrorList($testFile='') |
|
28 | + public function getErrorList($testFile = '') |
|
29 | 29 | { |
30 | 30 | switch ($testFile) { |
31 | 31 | case 'EndFileNewlineUnitTest.1.inc': |
@@ -57,7 +57,7 @@ discard block |
||
57 | 57 | * |
58 | 58 | * @return array<int, int> |
59 | 59 | */ |
60 | - public function getWarningList($testFile='') |
|
60 | + public function getWarningList($testFile = '') |
|
61 | 61 | { |
62 | 62 | return []; |
63 | 63 |
@@ -15,52 +15,52 @@ |
||
15 | 15 | { |
16 | 16 | |
17 | 17 | |
18 | - /** |
|
19 | - * Returns the lines where errors should occur. |
|
20 | - * |
|
21 | - * The key of the array should represent the line number and the value |
|
22 | - * should represent the number of errors that should occur on that line. |
|
23 | - * |
|
24 | - * @param string $testFile The name of the file being tested. |
|
25 | - * |
|
26 | - * @return array<int, int> |
|
27 | - */ |
|
28 | - public function getErrorList($testFile='') |
|
29 | - { |
|
30 | - switch ($testFile) { |
|
31 | - case 'EndFileNewlineUnitTest.1.inc': |
|
32 | - case 'EndFileNewlineUnitTest.3.inc': |
|
33 | - case 'EndFileNewlineUnitTest.6.inc': |
|
34 | - case 'EndFileNewlineUnitTest.7.inc': |
|
35 | - case 'EndFileNewlineUnitTest.9.inc': |
|
36 | - case 'EndFileNewlineUnitTest.10.inc': |
|
37 | - return [2 => 1]; |
|
38 | - case 'EndFileNewlineUnitTest.11.inc': |
|
39 | - case 'EndFileNewlineUnitTest.12.inc': |
|
40 | - case 'EndFileNewlineUnitTest.13.inc': |
|
41 | - return [1 => 1]; |
|
42 | - default: |
|
43 | - return []; |
|
44 | - }//end switch |
|
18 | + /** |
|
19 | + * Returns the lines where errors should occur. |
|
20 | + * |
|
21 | + * The key of the array should represent the line number and the value |
|
22 | + * should represent the number of errors that should occur on that line. |
|
23 | + * |
|
24 | + * @param string $testFile The name of the file being tested. |
|
25 | + * |
|
26 | + * @return array<int, int> |
|
27 | + */ |
|
28 | + public function getErrorList($testFile='') |
|
29 | + { |
|
30 | + switch ($testFile) { |
|
31 | + case 'EndFileNewlineUnitTest.1.inc': |
|
32 | + case 'EndFileNewlineUnitTest.3.inc': |
|
33 | + case 'EndFileNewlineUnitTest.6.inc': |
|
34 | + case 'EndFileNewlineUnitTest.7.inc': |
|
35 | + case 'EndFileNewlineUnitTest.9.inc': |
|
36 | + case 'EndFileNewlineUnitTest.10.inc': |
|
37 | + return [2 => 1]; |
|
38 | + case 'EndFileNewlineUnitTest.11.inc': |
|
39 | + case 'EndFileNewlineUnitTest.12.inc': |
|
40 | + case 'EndFileNewlineUnitTest.13.inc': |
|
41 | + return [1 => 1]; |
|
42 | + default: |
|
43 | + return []; |
|
44 | + }//end switch |
|
45 | 45 | |
46 | - }//end getErrorList() |
|
46 | + }//end getErrorList() |
|
47 | 47 | |
48 | 48 | |
49 | - /** |
|
50 | - * Returns the lines where warnings should occur. |
|
51 | - * |
|
52 | - * The key of the array should represent the line number and the value |
|
53 | - * should represent the number of warnings that should occur on that line. |
|
54 | - * |
|
55 | - * @param string $testFile The name of the file being tested. |
|
56 | - * |
|
57 | - * @return array<int, int> |
|
58 | - */ |
|
59 | - public function getWarningList($testFile='') |
|
60 | - { |
|
61 | - return []; |
|
49 | + /** |
|
50 | + * Returns the lines where warnings should occur. |
|
51 | + * |
|
52 | + * The key of the array should represent the line number and the value |
|
53 | + * should represent the number of warnings that should occur on that line. |
|
54 | + * |
|
55 | + * @param string $testFile The name of the file being tested. |
|
56 | + * |
|
57 | + * @return array<int, int> |
|
58 | + */ |
|
59 | + public function getWarningList($testFile='') |
|
60 | + { |
|
61 | + return []; |
|
62 | 62 | |
63 | - }//end getWarningList() |
|
63 | + }//end getWarningList() |
|
64 | 64 | |
65 | 65 | |
66 | 66 | }//end class |
@@ -28,19 +28,19 @@ |
||
28 | 28 | public function getErrorList($testFile='') |
29 | 29 | { |
30 | 30 | switch ($testFile) { |
31 | - case 'EndFileNewlineUnitTest.1.inc': |
|
32 | - case 'EndFileNewlineUnitTest.3.inc': |
|
33 | - case 'EndFileNewlineUnitTest.6.inc': |
|
34 | - case 'EndFileNewlineUnitTest.7.inc': |
|
35 | - case 'EndFileNewlineUnitTest.9.inc': |
|
36 | - case 'EndFileNewlineUnitTest.10.inc': |
|
37 | - return [2 => 1]; |
|
38 | - case 'EndFileNewlineUnitTest.11.inc': |
|
39 | - case 'EndFileNewlineUnitTest.12.inc': |
|
40 | - case 'EndFileNewlineUnitTest.13.inc': |
|
41 | - return [1 => 1]; |
|
42 | - default: |
|
43 | - return []; |
|
31 | + case 'EndFileNewlineUnitTest.1.inc': |
|
32 | + case 'EndFileNewlineUnitTest.3.inc': |
|
33 | + case 'EndFileNewlineUnitTest.6.inc': |
|
34 | + case 'EndFileNewlineUnitTest.7.inc': |
|
35 | + case 'EndFileNewlineUnitTest.9.inc': |
|
36 | + case 'EndFileNewlineUnitTest.10.inc': |
|
37 | + return [2 => 1]; |
|
38 | + case 'EndFileNewlineUnitTest.11.inc': |
|
39 | + case 'EndFileNewlineUnitTest.12.inc': |
|
40 | + case 'EndFileNewlineUnitTest.13.inc': |
|
41 | + return [1 => 1]; |
|
42 | + default: |
|
43 | + return []; |
|
44 | 44 | }//end switch |
45 | 45 | |
46 | 46 | }//end getErrorList() |
@@ -1,2 +1,1 @@ |
||
1 | 1 | <?php |
2 | -/** Why me? |
@@ -1,2 +1,1 @@ |
||
1 | 1 | <?php |
2 | -/** Why me? |
@@ -1,2 +1,1 @@ |
||
1 | 1 | <?php |
2 | -/** Why me? |
@@ -1,2 +1,1 @@ |
||
1 | 1 | <?php |
2 | -/** Why me? |
@@ -1,2 +1,1 @@ |
||
1 | 1 | <?php |
2 | -/** Why me? |