PHP CodeSniffer 多次出错
PHP CodeSniffer error multiple times
我完全不知道出了什么问题。我的代码版本 运行ning 成功,并且在添加 ;'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 的 Sublime Text 3。我尝试卸载 phpcs 以及将其从我的 php 文件夹中删除,但它似乎根本没有影响它。
有人对此有经验吗?知道是什么原因造成的吗?
已编辑:
我已经从 Sublime Text 3 中删除了代码嗅探器包,并删除了错误消息中提到的 CodeSniffer 文件夹,但我仍然收到完全相同的错误消息。
Undefined index:
通常意味着您正试图通过其键(其 "index")访问数组元素,而数组中的键不存在。
$array = array(
'a' => 'apple',
'c' => 'cat',
);
var_dump($array['c']); //cat
var_dump($array['b']); //null
// and notice: Undefined index: b in ...
您的代码有趣的是它没有告诉您索引是什么。
您显然遇到了 phpCS 中的错误,因此应该在他们的 github 问题页面上报告它。参见 https://github.com/squizlabs/PHP_CodeSniffer/issues。您需要提供尽可能小的代码示例,以便能够可靠地重现该问题。
错误当然只是一个"notice",所以PHP在发生错误后愉快地进行运行phpCS程序。这可能是好事,也可能不是好事。发生此类问题的某些情况可能会导致程序进一步出现严重问题,而在其他情况下则完全没有区别。如果不对 phpCS 代码库进行深入分析(不幸的是,我没有时间分析),我很难确定这个特定案例属于哪一边。
但是简单地看一下 File.php 的代码,错误似乎是在 findFirstOnLine()
函数中发生的,并且可能是由它的一个参数 ($start
) 引起的被传递为空白,它期望收到一个整数。
我自己没有看到问题发生,很难确定这一点,但如果这是问题所在,那么快速解决方法是在该函数的开头添加一行,如
$start = (int)$start;
如果我粗略的分析是正确的,那应该可以阻止通知的发生。
然而,参数以意外值传递的事实可能指向 phpCS 中其他地方的更深层次的错误,因此我建议在简单地继续上述操作之前进行更多分析。
但最后,我要重申我之前发表的评论。发生这种情况是因为您已使代码与 PHP5.2 兼容。我强烈建议您重新考虑是否真的需要这样做。今天任何人都应该使用 PHP5.2 的理由为零:近五年来它一直不受支持并且没有安全补丁。如果你是 运行 它,那么它可能意味着你也是 运行 一个不受支持的 OS 版本,因为它根本不适用于任何最近的 OS 版本,所以这意味着你有一大堆更多的安全问题。请不要使用它,也请不要鼓励其他人使用它。
我完全不知道出了什么问题。我的代码版本 运行ning 成功,并且在添加 ;'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 的 Sublime Text 3。我尝试卸载 phpcs 以及将其从我的 php 文件夹中删除,但它似乎根本没有影响它。
有人对此有经验吗?知道是什么原因造成的吗?
已编辑:
我已经从 Sublime Text 3 中删除了代码嗅探器包,并删除了错误消息中提到的 CodeSniffer 文件夹,但我仍然收到完全相同的错误消息。
Undefined index:
通常意味着您正试图通过其键(其 "index")访问数组元素,而数组中的键不存在。
$array = array(
'a' => 'apple',
'c' => 'cat',
);
var_dump($array['c']); //cat
var_dump($array['b']); //null
// and notice: Undefined index: b in ...
您的代码有趣的是它没有告诉您索引是什么。
您显然遇到了 phpCS 中的错误,因此应该在他们的 github 问题页面上报告它。参见 https://github.com/squizlabs/PHP_CodeSniffer/issues。您需要提供尽可能小的代码示例,以便能够可靠地重现该问题。
错误当然只是一个"notice",所以PHP在发生错误后愉快地进行运行phpCS程序。这可能是好事,也可能不是好事。发生此类问题的某些情况可能会导致程序进一步出现严重问题,而在其他情况下则完全没有区别。如果不对 phpCS 代码库进行深入分析(不幸的是,我没有时间分析),我很难确定这个特定案例属于哪一边。
但是简单地看一下 File.php 的代码,错误似乎是在 findFirstOnLine()
函数中发生的,并且可能是由它的一个参数 ($start
) 引起的被传递为空白,它期望收到一个整数。
我自己没有看到问题发生,很难确定这一点,但如果这是问题所在,那么快速解决方法是在该函数的开头添加一行,如
$start = (int)$start;
如果我粗略的分析是正确的,那应该可以阻止通知的发生。
然而,参数以意外值传递的事实可能指向 phpCS 中其他地方的更深层次的错误,因此我建议在简单地继续上述操作之前进行更多分析。
但最后,我要重申我之前发表的评论。发生这种情况是因为您已使代码与 PHP5.2 兼容。我强烈建议您重新考虑是否真的需要这样做。今天任何人都应该使用 PHP5.2 的理由为零:近五年来它一直不受支持并且没有安全补丁。如果你是 运行 它,那么它可能意味着你也是 运行 一个不受支持的 OS 版本,因为它根本不适用于任何最近的 OS 版本,所以这意味着你有一大堆更多的安全问题。请不要使用它,也请不要鼓励其他人使用它。