Edit report at http://pear.php.net/bugs/bug.php?id=18190&edit=1
ID: 18190
Updated by: gsherwood@squiz.net
Reported By: ty_c at cybozu dot co dot jp
Summary: Analysis crashes on switch containing long sequence
of empty cases
-Status: Open
+Status: Feedback
Type: Bug
Package: PHP_CodeSniffer
Operating System: CentOS 5.5 x86_64
Package Version: 1.3.0RC1
PHP Version: 5.3.5
-Assigned To:
+Assigned To: squiz
Roadmap Versions:
New Comment:
-Status: Open
+Status: Feedback
-Assigned To:
+Assigned To: squiz
Any chance you can provide sample code because I cannot replicate this.
It's quite possible that your write case statements differently to me.
Previous Comments:
------------------------------------------------------------------------
[2011-01-13 08:50:02] ty_cybozu
Description:
------------
While analyzing production source code in conjunction with
Sonar, a PHP fatal error occurs reporting
that the maximum function nesting level of '100' has been
reached.
Running phpcs -vv on the offending source file revealed that
phpcs was barfing on a switch statement
containing several hundred empty case clauses in sequence.
Test script:
---------------
(attached)
Expected result:
----------------
I expect PHP_CodeSniffer will process such code segments
without trouble.
Actual result:
--------------
Registering sniffs in PEAR standard... DONE (26 sniffs
registered)
Processing system.php PHP Fatal error: Maximum function
nesting level of '100' reached, aborting! in
/usr/share/pear/PHP/CodeSniffer/File.php on line 1306
PHP Stack trace:
PHP 1. {main}() /usr/bin/phpcs:0
PHP 2. PHP_CodeSniffer_CLI->process() /usr/bin/phpcs:38
PHP 3. PHP_CodeSniffer->process()
/usr/share/pear/PHP/CodeSniffer/CLI.php:494
PHP 4. PHP_CodeSniffer->processFile()
/usr/share/pear/PHP/CodeSniffer.php:437
PHP 5. PHP_CodeSniffer->_processFile()
/usr/share/pear/PHP/CodeSniffer.php:1001
PHP 6. PHP_CodeSniffer_File->start()
/usr/share/pear/PHP/CodeSniffer.php:1087
PHP 7. PHP_CodeSniffer_File->_parse()
/usr/share/pear/PHP/CodeSniffer/File.php:376
PHP 8. PHP_CodeSniffer_File::tokenizeString()
/usr/share/pear/PHP/CodeSniffer/File.php:536
PHP 9. PHP_CodeSniffer_File::_createScopeMap()
/usr/share/pear/PHP/CodeSniffer/File.php:873
PHP 10. PHP_CodeSniffer_File::_recurseScopeMap()
/usr/share/pear/PHP/CodeSniffer/File.php:1261
PHP 11. PHP_CodeSniffer_File::_recurseScopeMap()
/usr/share/pear/PHP/CodeSniffer/File.php:1397
PHP 12. PHP_CodeSniffer_File::_recurseScopeMap()
/usr/share/pear/PHP/CodeSniffer/File.php:1397
PHP 13. PHP_CodeSniffer_File::_recurseScopeMap()
/usr/share/pear/PHP/CodeSniffer/File.php:1397
(... excerpted ...)
PHP 99. PHP_CodeSniffer_File::_recurseScopeMap()
/usr/share/pear/PHP/CodeSniffer/File.php:1397
------------------------------------------------------------------------