PHP CodeSniffer错误多次

时间:2015-07-09 14:50:52

标签: php codesniffer phpcodesniffer

我完全不知道出了什么问题。我有一个成功运行的代码版本,并且在添加了一些微小的更改之后;在我的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。我试过unistalling phpcs以及从我的php文件夹中删除它,但它似乎根本没有影响它。

任何人都有这方面的经验吗?知道可能导致它的原因吗?

EDITED

我已经从Sublime Text 3中删除了代码嗅探器包,并删除了错误消息中提到的CodeSniffer文件夹,我仍然得到完全相同的错误消息。

2 个答案:

答案 0 :(得分:2)

您明确地遇到了phpCS中的错误,因此可能应该在他们的github问题页面上报告。见https://github.com/squizlabs/PHP_CodeSniffer/issues。您需要提供尽可能小的代码示例,以便可靠地重现该问题。

错误当然只是一个" notice",所以PHP很乐意继续运行phpCS程序。这可能是也可能不是好事。发生此类问题的某些情况可能会导致程序进一步严重问题,而在其他情况下则完全没有任何区别。如果不对phpCS代码库进行深入分析(不幸的是,我没有时间),我很难确定这个特定情况下哪个方面落入了这个特定情况。

然而,简单地查看File.php的代码,似乎错误发生在findFirstOnLine()函数中,并且可能是由于其中一个参数($start)被传递为空白,期望收到整数的地方。

如果没有看到自己发生的问题,很难确定这一点,但如果这是问题所在,那么快速修复就是在该函数的开头添加一行代表< / p>

$start = (int)$start;

如果我的粗略分析是正确的,那么应该停止通知。

但是,参数传入时带有意外值的事实可能会指向phpCS中其他地方的更深层次的错误,因此我建议在继续上述操作之前需要进行更多分析。

但最后,我重复了我之前发表的评论。发生这种情况是因为您已经使您的代码与PHP5.2兼容。我真的强烈建议你重新考虑一下你是否真的需要那样做。今天任何人都应该使用PHP5.2没有任何理由:它已经失去了支持,并且近半年没有安全补丁。如果你正在运行它,那么它可能意味着你也运行了一个不受支持的操作系统版本,因为它根本不适用于任何最新的操作系统版本,所以这意味着你有一个整体一堆更多的安全问题。请不要使用它,也请不要鼓励其他人使用它。

答案 1 :(得分:0)

Undefined index:通常意味着您尝试通过其键(“索引”)访问数组元素,并且数组中的键不存在。

$array = array(
  'a' => 'apple',
  'c' => 'cat',
);
var_dump($array['c']); //cat
var_dump($array['b']); //null
// and notice: Undefined index: b in ...

你的代码有趣的是它没有告诉你索引是什么。