[PEAR-BUG] Bug #20432 [Fbk]: Switch statements with inline returns
[email protected] Mon, 27 Oct 2014 17:40:26 +0000 (GMT)
| Newsgroups | php.pear.bugs |
|---|---|
| Message-ID | <[email protected]> |
Edit report at https://pear.php.net/bugs/bug.php?id=20432&edit=1 ID: 20432 Updated by: [email protected] Reported By: xmeltrut at gmail dot com Summary: Switch statements with inline returns Status: Feedback Type: Bug Package: PHP_CodeSniffer Package Version: 1.5.5 PHP Version: 5.6.0 Assigned To: squiz Roadmap Versions: New Comment: Test.php: <?php function test ($var) { switch ($var) { case 'x': return '1'; case 'y': return '2'; } } With the command: phpcs --standard=PEAR -s test.php Generates: -------------------------------------------------------------------------------- FOUND 6 ERROR(S) AFFECTING 5 LINE(S) -------------------------------------------------------------------------------- 2 | ERROR | Missing file doc comment (PEAR.Commenting.FileComment.Missing) 2 | ERROR | Missing function doc comment | | (PEAR.Commenting.FunctionComment.Missing) 5 | ERROR | Line indented incorrectly; expected 4 spaces, found 8 | | (PEAR.WhiteSpace.ScopeIndent.Incorrect) 6 | ERROR | Closing brace indented incorrectly; expected 8 spaces, found 12 | | (PEAR.WhiteSpace.ScopeClosingBrace.Indent) 7 | ERROR | Line indented incorrectly; expected 4 spaces, found 8 | | (PEAR.WhiteSpace.ScopeIndent.Incorrect) 8 | ERROR | Closing brace indented incorrectly; expected 8 spaces, found 12 | | (PEAR.WhiteSpace.ScopeClosingBrace.Indent) -------------------------------------------------------------------------------- We normally run it with this ruleset instead: <?xml version="1.0"?> <ruleset> <rule ref="PEAR"> <exclude name="PEAR.WhiteSpace.ScopeIndent" /> </rule> <rule ref="Generic.WhiteSpace.ScopeIndent"> <properties> <property name="indent" value="4" /> </properties> </rule> </ruleset> So with the command: phpcs --standard=ruleset.xml -s test.php I get: -------------------------------------------------------------------------------- FOUND 4 ERROR(S) AFFECTING 3 LINE(S) -------------------------------------------------------------------------------- 2 | ERROR | Missing file doc comment (PEAR.Commenting.FileComment.Missing) 2 | ERROR | Missing function doc comment | | (PEAR.Commenting.FunctionComment.Missing) 6 | ERROR | Closing brace indented incorrectly; expected 8 spaces, found 12 | | (PEAR.WhiteSpace.ScopeClosingBrace.Indent) 8 | ERROR | Closing brace indented incorrectly; expected 8 spaces, found 12 | | (PEAR.WhiteSpace.ScopeClosingBrace.Indent) -------------------------------------------------------------------------------- Previous Comments: ------------------------------------------------------------------------ [2014-10-25 01:19:25] squiz Thanks, but as I said before, I can't replicate any error with your code. Are you able to provide a sample file that shows the problem, and also show me the output of PHP_CodeSniffer (please use the -s command line argument so I can see where the error messages come from). ------------------------------------------------------------------------ [2014-10-24 20:08:47] xmeltrut I just added the break to see if that fixed it, originally I was just using return and I had the same issue. ------------------------------------------------------------------------ [2014-10-24 13:21:39] squiz -Status: Open +Status: Feedback -Assigned To: +Assigned To: squiz I can't replicate the closing brace error, but I can tell you that the RETURN statement is actually the breaking statement of the case. Your BREAK line is unreachable code and should be removed. PHP_CodeSniffer recognises the RETURN as the closing statement for reach CASE, so you may be getting indentation errors because of that. So you'd write the code like this: switch { case 'a': return 'a'; case 'b': return 'b'; } Does that remove your error? If not, I'd need to see code around the switch statement because I can't replicate any indent errors with the switch statement you've provided. ------------------------------------------------------------------------ [2014-10-24 13:09:56] xmeltrut Description: ------------ When you use a return statement inside a switch case, CodeSniffer complains about indentation: Closing brace indented incorrectly; expected 16 spaces, found 20 Test script: --------------- switch { case 'a': return 'a'; break; case 'b': return 'b'; break; } ------------------------------------------------------------------------ -- Edit this bug report at https://pear.php.net/bugs/bug.php?id=20432&edit=1