Это коллекция наших пользовательских фондовых нюханий php_codesniffer (3.x) для обнаружения потенциальных ошибок и неожиданного поведения в PHP -коде. Он может быть использован в качестве набора правил самостоятельно, но в основном предназначен как набор отдельных нюханий, которые могут быть интегрированы в другие стандарты.
Мы описали мотивацию некоторых из этих понюханий в нашем блоге.
Установить как зависимость разработки с помощью композитора:
$ composer require --dev moxio/php-codesniffer-sniffs
Проверьте свои файлы на этом наборе Sniffs:
$ ./vendor/bin/phpcs --standard=vendor/moxio/php-codesniffer-sniffs/MoxioSniffs path/to/your/files
Скоро будет добавлено больше нюхания.
Moxiosniffs.php.disallowbarecontinueinswitch : Devallows continue Opport без числового аргумента при использовании непосредственно в case switch . Это предотвращает молчаливые ошибки, вызванные PHP, учитывая switch , чтобы быть структурой цикла.
Moxiosniffs.php.disallowiMplicitloosecomparison : disallow неявные нетронутые сравнения по таким функциям, как in_array и array_search . Требуется, чтобы $strict -параметр для этих функций был явно установлен. Это предотвращает скрытые ошибки из-за нелогичного поведения нетронутого сравнения.
Moxiosniffs.php.disallowimplicitloosebase64decode : Disallow неявное нетронутое использование функции base64_decode . Требуется, чтобы $strict -параметр для этой функции был явно установлен.
Moxiosniffs.php.disallowuniqidwithoutmoreEntropy : Disallows призывы к uniqid() без $more_entropy = true . Когда $more_entropy является false (что является по умолчанию), uniqid() вызывает usleep() чтобы избежать столкновений, что может быть существенным ударом по производительности. Всегда вызывает uniqid() с $more_entropy = true избегает этих проблем.
Moxiosniffs.php.disallowarraycombinerswithsinglearray : Disallows призывы к функциям, которые объединяют два или более массива с одним массивом, приведенным в качестве аргумента. Это относится к таким функциям, как array_merge(_recursive) , array_replace(_recursive) и все варианты array_diff и array_intersect . Такой призыв не имеет смысла и, скорее всего, является результатом неуместной запятой или скобки. Чтобы повторно индекс одного массива, просто используйте array_values .
Moxiosniffs.php.disallowiMplicitemicrotimeasString : Disallows призывы к microtime() без явно установленного аргумента $get_as_float . По умолчанию microtime имеет строку в качестве возвращаемого значения («MSEC SEC»), которая неожиданна и не может быть наивно поднять, чтобы плавать, что делает его подверженным ошибкам. По -прежнему можно установить этот аргумент на false , но в этом случае вы, вероятно, подумали об этом.
Moxiosniffs.php.disallowiMplicititeratorToarrayWithUsekeys : Disallows призывы к iterator_to_array() без явно установленного аргумента $use_keys . По умолчанию iterator_to_array использует ключи, предоставленные итератором. Такое поведение часто требуется для ассоциативных массивов, но может привести к неожиданным результатам для «спископодобных» массивов. Явно требуя установленного параметра, гарантирует, что разработчик должен подумать о том, какое поведение желательно для ситуации.
Moxiosniffs.php.disallowdateTime : Devallows использование DateTime и способствует использованию DateTimeImmutable вместо этого. Первое, что было изменчивым, может привести к некоторым тонким, но неприятным ошибкам. Посмотрите этот пост, чтобы узнать больше о том, почему вы хотели бы отговорить с помощью DateTime .
Moxiosniffs.php.disallowmbdetectencoding : Disallows использование mb_detect_encoding . Эта функция имеет вводящее в заблуждение имя, которое подразумевает, что она может фактически обнаружить кодирование строки, проблема, которая, как правило, невозможна. Скорее он проверяет список кодировки, пока не найдет тот, который может быть правильным (то есть строка является допустимой последовательности байтов в соответствии с этой кодировкой). Использование mb_check_encoding (возможно, в цикле) вместо этого делает это гораздо более явным. Смотрите этот разговор для получения дополнительной информации по этой теме.
Moxiosniffs.php.disallowutf8encodedecode : Disallows вызовы в utf8_encode() и utf8_decode() . Эти функции можно считать вводящими в заблуждение, поскольку они конвертируются только в/из ISO-8859-1 и не «магически» обнаруживают кодирование источника/цели. Использование iconv() или mb_convert_encoding() вместо этого делает оба кодирования символов, которые играют роль в явной конверсии.
Moxiosniffs.php.disallowdatecreatefromformatwithunspecifiedtimeComponent : Disallows призывы к DateTime::createFromFormat , DateTimeImmutable::createFromFormat , Date_Create_FROM_FORMAT & DATE_CREATE_IMMUTABLE_FROM_FORMAT, DATE_CREATE_FROM_FORMAT & DATE_CREATE_IMMUTABLE_FROM_FORMAT date_create_from_format & date_create_immutable_from_format , которые не определяют время и не выполняют. В противном случае это создало бы объекты DateTime (неизменное) с компонентом времени, установленным в текущее время (создание), что, вероятно, никогда не то, что вы хотите, и может быть источником ошибок.
После установки зависимостей (включая зависимости развития) с использованием композитора, запустите
$ ./vendor/bin/phpunit
Из проекта корень рер.
Этот проект придерживается семантической версии.
Обратите внимание, что с точки зрения этой библиотеки в качестве коллекции Smatch Sniffs (а не полного стандарта кодирования), добавление новых Sniffs не будет считаться нарушающим изменением и, следовательно, не вызывает увеличения основного номера версии.
Эти нюхания выпускаются по лицензии MIT.