2015-07-09 3 views
0

Я полностью сбитый с толку, что происходит не так. У меня была версия моего кода, которая работала успешно, и после внесения незначительных изменений в добавление: до конца моих endforeach и endif-заявлений (чтобы сделать его совместимым с php 5.2), я получил массу ошибок. Они все те же ошибки:PHP CodeSniffer ошибка несколько раз

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 раз каждый раз, когда я запускаю код. Я использую Sublime Text 3 с установленным phpcs. Я пробовал unistalling phpcs, а также удалял его из папки php, но, похоже, это вообще не затрагивает его.

У кого-нибудь есть опыт? Любая идея, что может быть причиной этого?

EDITED:

С тех пор я снятом код сниффера пакета из Sublime Text 3, а также удалить папку CodeSniffer упоминалась в сообщении об ошибке, и я все еще получаю точно такое же сообщение об ошибке.

+0

Я не могу ответить на вопрос, но я хотел бы задать вопрос о целесообразности внесения изменений в ваш код, чтобы сделать его совместимым с PHP 5.2. 5.2 не поддерживается более четырех с половиной лет, и в результате он пронизан дырами в безопасности. Вы не должны использовать его, и вы не должны поощрять кого-либо еще использовать его. – Simba

+0

Кстати, какая версия phpCS вы используете? – Simba

+0

с использованием версии 2.3.2 – jldavis76

ответ

2

Вы явно попадаете в ошибку в phpCS, поэтому, вероятно, ее следует сообщать на странице проблем github. См. https://github.com/squizlabs/PHP_CodeSniffer/issues. Вам нужно предоставить как можно меньше примеров кода, которые могут достоверно воспроизвести проблему.

Ошибка, конечно же, просто «уведомление», поэтому PHP счастливо продолжает запускать программу phpCS после ее возникновения. Это может быть или не быть хорошо. Некоторые случаи, когда такая проблема возникает, могут вызвать серьезную проблему дальше по программе, тогда как в других она не имеет никакого значения. Мне нелегко определить, какая сторона забора находится в этом конкретном случае, не делая глубокого анализа базы кода phpCS (к сожалению, у меня нет времени).

Однако кратко глядя на код для file.php, оказывается, что ошибка происходит внутри функции findFirstOnLine(), и может быть вызвана одной из его параметров ($start) передается пустой, где он ожидает получить целое число.

Не видя проблему происходит для себя, это трудно быть уверенным в этом, но если это проблема, то быстрое решение было бы добавить строку в начале этой функции говоря что-то вроде

$start = (int)$start; 

Если мой грубый и готовый анализ верен, это должно прекратить появление уведомлений.

Однако тот факт, что параметр передается с неожиданным значением, может указывать на более глубокую ошибку в другом месте в phpCS, поэтому я бы предположил, что потребуется больше анализа, прежде чем просто перейти к рассмотрению выше.

Но в конце всего этого, я бы повторил повторение комментария, который я сделал ранее. Это происходит потому, что вы сделали свой код совместимым с PHP5.2. Я бы настоятельно советовал вам подумать, действительно ли вам нужно это делать. Есть нулевые причины, почему кто-то должен использовать PHP5.2 сегодня: он был вне поддержки и не имел патчей безопасности почти пол-десятилетия.И если вы его запускаете, то это, вероятно, означает, что вы также используете неподдерживаемую версию ОС, поскольку она просто недоступна для любой новой версии ОС, так что это означает, что у вас есть целая куча проблем с безопасностью. Пожалуйста, не используйте его, и, пожалуйста, не поощряйте других использовать его.

+0

Спасибо за помощь и совет! – jldavis76

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 ... 

Что интересного в вашем коде, так это то, что он не говорит вам, что такое индекс.

+0

Это неприятная вещь. Сообщение об ошибке не дает мне много работы. – jldavis76