我对出了什么问题完全感到困惑。我有一个正在成功运行的代码版本,在进行了添加;s到endforeach和endif语句的结尾(使其与php 5.2兼容)之后,我得到了大量错误。不过,它们都是相同的错误:
09-Jul-2015 07:47:26 US/Pacific] PHP Notice: Undefined index: in /Applications/MAMP/bin/php/php5.6.2/lib/php/PHP/CodeSniffer/File.php on line 3476
[09-Jul-2015 07:47:26 US/Pacific] PHP Stack trace:
[09-Jul-2015 07:47:26 US/Pacific] PHP 1. {main}() /Applications/MAMP/bin/php/php5.6.2/bin/phpcs:0
[09-Jul-2015 07:47:26 US/Pacific] PHP 2. PHP_CodeSniffer_CLI->runphpcs() /Applications/MAMP/bin/php/php5.6.2/bin/phpcs:25
[09-Jul-2015 07:47:26 US/Pacific] PHP 3. PHP_CodeSniffer_CLI->process() /Applications/MAMP/bin/php/php5.6.2/lib/php/PHP/CodeSniffer/CLI.php:95
[09-Jul-2015 07:47:26 US/Pacific] PHP 4. PHP_CodeSniffer->processFiles() /Applications/MAMP/bin/php/php5.6.2/lib/php/PHP/CodeSniffer/CLI.php:867
[09-Jul-2015 07:47:26 US/Pacific] PHP 5. PHP_CodeSniffer->processFile() /Applications/MAMP/bin/php/php5.6.2/lib/php/PHP/CodeSniffer.php:619
[09-Jul-2015 07:47:26 US/Pacific] PHP 6. PHP_CodeSniffer->_processFile() /Applications/MAMP/bin/php/php5.6.2/lib/php/PHP/CodeSniffer.php:1679
[09-Jul-2015 07:47:26 US/Pacific] PHP 7. PHP_CodeSniffer_File->start() /Applications/MAMP/bin/php/php5.6.2/lib/php/PHP/CodeSniffer.php:1801
[09-Jul-2015 07:47:26 US/Pacific] PHP 8. Generic_Sniffs_WhiteSpace_ScopeIndentSniff->process() /Applications/MAMP/bin/php/php5.6.2/lib/php/PHP/CodeSniffer/File.php:567
每次运行代码时,它都会给我带来大约200次错误。我使用的是安装了phpcs的崇高文本3。我尝试过将phpcs从我的php文件夹中删除,但是它似乎丝毫没有影响它。
有人有这方面的经验吗?知道是什么引起的吗?
编辑的
此后,我从崇高文本3中删除了代码嗅探器包,并删除了错误消息中提到的CodeSniffer文件夹,并且仍然得到了完全相同的错误消息。
发布于 2015-07-09 07:22:13
很明显,您在phpCS中碰到了一个bug,因此很可能应该在github问题页面上报告它。见CodeSniffer/issues。您将需要提供尽可能小的代码示例,以便可靠地再现问题。
当然,这个错误只是一个“注意事项”,所以PHP很高兴地在phpCS程序发生后继续运行。这可能是好事,也可能不是好事。在某些情况下,这类问题的发生可能会在程序中引起严重的问题,而在其他情况下,则完全没有区别。如果不对phpCS代码库做一些深入分析(不幸的是,我没有时间),就很难确定这一特殊情况的哪一边会掉下来。
不管简单地看一下File.php的代码,似乎错误都发生在findFirstOnLine()
函数中,并且可能是由于它的参数之一($start
)被空白传递而导致的,在这里,它期望接收一个整数。
如果没有看到问题发生在我自己身上,就很难确定这一点,但是如果这就是问题所在,那么快速的解决办法就是在函数的开头添加一行代码,这样的话
$start = (int)$start;
如果我的粗略分析是正确的,那就应该阻止通知的发生。
然而,这个参数是以一个意想不到的值传入的,这可能会指向phpCS中其他地方的一个更深层次的错误,因此我建议,在进行上述工作之前,需要进行更多的分析。
但在这一切结束时,我会重复我早些时候所做的评论。之所以会发生这种情况,是因为您已经使代码PHP5.2兼容。我强烈建议你重新考虑你是否真的需要这样做。今天,没有人应该使用PHP5.2的原因是没有的:它已经失去了支持,已经有近五年没有安全补丁了。如果您正在运行它,那么它可能也意味着您也在运行一个不受支持的OS版本,因为它对于任何最新的OS版本都是不可用的,所以这意味着您还有很多安全问题。请不要使用它,也不要鼓励别人使用它。
发布于 2015-07-09 07:00:36
Undefined index:
通常意味着您试图通过数组元素的键(其“索引”)访问数组元素,而数组中的键不存在。
$array = array(
'a' => 'apple',
'c' => 'cat',
);
var_dump($array['c']); //cat
var_dump($array['b']); //null
// and notice: Undefined index: b in ...
代码的有趣之处在于它没有告诉您索引是什么。
https://stackoverflow.com/questions/31321018
复制