Package home | Report new bug | New search | Development Roadmap Status: Open | Feedback | All | Closed Since Version 3.7.2

Bug #17236 PHP Warning due to token_get_all() in DoubleQuoteUsageSniff
Submitted: 2010-03-17 04:02 UTC
From: ashnazg Assigned: squiz
Status: Closed Package: PHP_CodeSniffer (version SVN-20100322)
PHP Version: 5.2.4 OS: RHEL4
Roadmaps: (Not assigned)    
Subscription  


 [2010-03-17 04:02 UTC] ashnazg (Chuck Burgess)
Description: ------------ Odd edge case, but could be fairly typical for creating SQL statement strings, causes a PHP warning from the Squiz's Strings/DoubleQuoteUsageSniff. From experimenting with my test file, these characteristics seem necessary: - a string portion that contains a $variable inside literal singlequotes ===> bar = '$z', - a string portion that contains a variable outside of the doublequotes that is attached via concatenation, but whose surrounding string portions include the literal single quotes around it ===> baz = '" . $a . "'..." - the newline that splits the singlequoted variable piece from the doublequoted variable piece Test script: --------------- <?php $x = "bar = '$z', baz = '" . $a . "'..."; ?> Expected result: ---------------- phpcs --standard=Squiz --report=summary test.php PHP CODE SNIFFER REPORT SUMMARY -------------------------------------------------------------------------- FILE ERRORS WARNINGS -------------------------------------------------------------------------- test.php 4 0 -------------------------------------------------------------------------- A TOTAL OF 4 ERROR(S) AND 0 WARNING(S) WERE FOUND IN 1 FILE(S) -------------------------------------------------------------------------- Actual result: -------------- PHP Warning: Unexpected character in input: ''' (ASCII=39) state=1 in PHP/CodeSniffer/Standards/Squiz/Sniffs/Strings/DoubleQuoteUsageSniff.php on line 65 PHP Stack trace: PHP 1. {main}() phpcs:0 PHP 2. PHP_CodeSniffer_CLI->process() phpcs:30 PHP 3. PHP_CodeSniffer->process() PHP/CodeSniffer/CLI.php:429 PHP 4. PHP_CodeSniffer->processFile() PHP/CodeSniffer.php:376 PHP 5. PHP_CodeSniffer->_processFile() PHP/CodeSniffer.php:836 PHP 6. PHP_CodeSniffer_File->start() PHP/CodeSniffer.php:921 PHP 7. Squiz_Sniffs_Strings_DoubleQuoteUsageSniff->process() PHP/CodeSniffer/File.php:431 PHP 8. token_get_all() PHP/CodeSniffer/Standards/Squiz/Sniffs/Strings/DoubleQuoteUsageSniff.php:65 Warning: Unexpected character in input: ''' (ASCII=39) state=1 in PHP/CodeSniffer/Standards/Squiz/Sniffs/Strings/DoubleQuoteUsageSniff.php on line 66 Call Stack: 0.0004 50256 1. {main}() phpcs:0 0.0187 1018560 2. PHP_CodeSniffer_CLI->process() phpcs:30 0.0193 1022920 3. PHP_CodeSniffer->process() PHP/CodeSniffer/CLI.php:429 0.1363 4577440 4. PHP_CodeSniffer->processFile() PHP/CodeSniffer.php:376 0.1365 4577808 5. PHP_CodeSniffer->_processFile() PHP/CodeSniffer.php:836 0.1365 4578620 6. PHP_CodeSniffer_File->start() PHP/CodeSniffer.php:921 0.1514 4721892 7. Squiz_Sniffs_Strings_DoubleQuoteUsageSniff->process() PHP/CodeSniffer/File.php:431 0.1514 4721892 8. token_get_all() PHP/CodeSniffer/Standards/Squiz/Sniffs/Strings/DoubleQuoteUsageSniff.php:65 PHP CODE SNIFFER REPORT SUMMARY -------------------------------------------------------------------------- FILE ERRORS WARNINGS -------------------------------------------------------------------------- test.php 4 0 -------------------------------------------------------------------------- A TOTAL OF 4 ERROR(S) AND 0 WARNING(S) WERE FOUND IN 1 FILE(S) --------------------------------------------------------------------------

Comments

 [2010-03-17 04:09 UTC] ashnazg (Chuck Burgess)
That "Warning" line should be showing line 65, not 66, so that all references to DoubleQuoteUsageSniff.php should show 65.
 [2010-03-17 10:37 UTC] User who submitted this comment has not confirmed identity
If you submitted this note, check your email.If you do not have a message, click here to re-send
MANUAL CONFIRMATION IS NOT POSSIBLE.  Write a message to pear-dev@lists.php.net
to request the confirmation link.  All bugs/comments/patches associated with this

email address will be deleted within 48 hours if the account request is not confirmed!
 [2010-03-19 04:46 UTC] User who submitted this comment has not confirmed identity
If you submitted this note, check your email.If you do not have a message, click here to re-send
MANUAL CONFIRMATION IS NOT POSSIBLE.  Write a message to pear-dev@lists.php.net
to request the confirmation link.  All bugs/comments/patches associated with this

email address will be deleted within 48 hours if the account request is not confirmed!
 [2010-03-23 01:53 UTC] ashnazg (Chuck Burgess)
-Status: Feedback +Status: Open -Package Version: 1.2.2 +Package Version: SVN-20100322
The current SVN still throws the same PHP Warning against my test script. I think the recent change (February) that helps with bug #17237 was done directly in the other reported sniff (Generic.CodeAnalysis.UnusedFunctionParameter), whereas nothing has changed since October in this sniff (Squiz.Strings.DoubleQuoteUsage).
 [2010-04-06 09:27 UTC] User who submitted this comment has not confirmed identity
If you submitted this note, check your email.If you do not have a message, click here to re-send
MANUAL CONFIRMATION IS NOT POSSIBLE.  Write a message to pear-dev@lists.php.net
to request the confirmation link.  All bugs/comments/patches associated with this

email address will be deleted within 48 hours if the account request is not confirmed!
 [2010-04-07 09:11 UTC] User who submitted this comment has not confirmed identity
If you submitted this note, check your email.If you do not have a message, click here to re-send
MANUAL CONFIRMATION IS NOT POSSIBLE.  Write a message to pear-dev@lists.php.net
to request the confirmation link.  All bugs/comments/patches associated with this

email address will be deleted within 48 hours if the account request is not confirmed!
 [2010-04-07 18:51 UTC] ashnazg (Chuck Burgess)
Confirmed that this change clears the notices on the test file for me on PHP 5.2.4... thanks Greg!