«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Исправление ошибок PHP_CodeSniffer Null Trim() в стандартах кодирования WordPress

Исправление ошибок PHP_CodeSniffer Null Trim() в стандартах кодирования WordPress

Опубликовано 1 ноября 2024 г.
Просматривать:396

При работе над проектами WordPress с использованием PHP 8.x вы можете столкнуться со следующей ошибкой:

Неустранимая ошибка: неперехваченный PHP_CodeSniffer\Exceptions\RuntimeException: trip(): передача значения null в параметр № 1 ($string) типа string не рекомендуется в /path/...

Эта ошибка возникает из-за предупреждения об устаревании в PHP 8.x, где передача значения null в функцию обрезки() больше не разрешена. В частности, эта проблема возникает при анализе стандартов кодирования WordPress (WPCS), который является частью настройки PHP_CodeSniffer. На момент написания этой статьи эта проблема сохраняется даже при использовании последних версий PHP_CodeSniffer и стандартов кодирования WordPress.

Понимание PHP_CodeSniffer и WPCS

PHP_CodeSniffer — это инструмент, который помогает разработчикам поддерживать стандарты кодирования, проверяя их PHP-код на предмет нарушений указанных правил. Стандарты кодирования WordPress (WPCS) предоставляют набор рекомендаций по написанию согласованного и чистого кода в проектах WordPress. Упомянутая выше ошибка обычно указывает на то, что фрагмент кода не соответствует этим стандартам из-за изменений в поведении PHP.

Исправление

Чтобы это исправить, мы можем вручную изменить файл, вызывающий проблему, найти строку, в которой вызывается функция Trim(), и обновить код, чтобы обеспечить правильную обработку нулевых значений при вызове функции Trim().

Например, в файле vendor/wp-coding-standards/wpcs/WordPress/Sniffs/NamingConventions/PrefixAllGlobalsSniff.php найдите строку 280 и замените следующую строку:

// this 
$cl_prefixes = trim( PHPCSHelper::get_config_data( 'prefixes' );

// to this 

$cl_prefixes = is_null( PHPCSHelper::get_config_data( 'prefixes' ) ) ? '' : trim( PHPCSHelper::get_config_data( 'prefixes' ) );

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

Fixing PHP_CodeSniffer Null Trim() Errors in WordPress Coding Standards

Хотя предыдущий подход может исправить ошибку, важно помнить, что изменение файлов поставщиков не является устойчивым решением. Изменения будут потеряны каждый раз, когда вы обновляете свои зависимости через Composer.

Лучшим подходом будет создание файла патча.

Создание файла исправления

Вот пошаговое руководство по созданию и применению исправления для устранения проблемы.

Создайте файл исправления

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

Файл исправления — это текстовый файл, содержащий различия между двумя версиями файла — по сути, снимок «до» и «после».

В каталоге вашего проекта создайте папку для хранения файла патча:

mkdir -p патчи

В папке patches/ создайте новый файл исправления с именем fix-null-trim.patch. Вы можете сделать это с помощью текстового редактора:

touch patches/fix-null-trim.patch

Откройте fix-null-trim.patch в текстовом редакторе и добавьте следующий контент:

  --- a/vendor/wp-coding-standards/wpcs/WordPress/Sniffs/NamingConventions/PrefixAllGlobalsSniff.php
    b/vendor/wp-coding-standards/wpcs/WordPress/Sniffs/NamingConventions/PrefixAllGlobalsSniff.php
@@ -280,7  280,7 @@

        // Original code with `trim()`
        // Update this line:
-       $cl_prefixes = trim( PHPCSHelper::get_config_data( 'prefixes' ) );
        $cl_prefixes = is_null( PHPCSHelper::get_config_data( 'prefixes' ) ) ? '' : trim( PHPCSHelper::get_config_data( 'prefixes' ) );

--- a/vendor/wp-coding-standards/wpcs/WordPress/Sniffs/WP/I18nSniff.php
    b/vendor/wp-coding-standards/wpcs/WordPress/Sniffs/WP/I18nSniff.php
@@ -194,7  194,7 @@

        // Original code with `trim()`
        // Update this line:
-       $cl_text_domain = trim( PHPCSHelper::get_config_data( 'text_domain' ) );
        $cl_text_domain = is_null(PHPCSHelper::get_config_data( 'text_domain' )) ? '' : trim( PHPCSHelper::get_config_data( 'text_domain' ) );

--- a/vendor/wp-coding-standards/wpcs/WordPress/Sniffs/Sniff.php
    b/vendor/wp-coding-standards/wpcs/WordPress/Sniffs/Sniff.php
@@ -1144,7  1144,7 @@

        // Original code with `trim()`
        // Update this line:
-       $cl_supported_version = trim( PHPCSHelper::get_config_data( 'minimum_supported_wp_version' ) );
        $cl_supported_version = is_null(PHPCSHelper::get_config_data( 'minimum_supported_wp_version' )) ? '' : trim( PHPCSHelper::get_config_data( 'minimum_supported_wp_version' ) );

Этот патч сообщает Composer заменить проблемную строку в PrefixAllGlobalsSniff.php более безопасной версией, которая использует оператор объединения значений null (??), чтобы избежать передачи значения null в функцию обрезки().

Измените композитор.json, чтобы применить исправление.

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

Откройте файл композитора.json вашего проекта. Добавьте следующую конфигурацию в раздел «Дополнительно». Если «дополнительный» раздел еще не существует, вам необходимо его создать.

    json

    "extra": {
        "patches": {
            "wp-coding-standards/wpcs": {
                "Fix null trim() issue": "patches/fix-null-trim.patch"
            }
        }
    }

Это указывает Composer применять файл fix-null-trim.patch к пакету wp-coding-standards/wpcs при установке или обновлении зависимостей.

Установите плагин Composer Patch.

Чтобы применять патчи через Composer, вам понадобится плагин композитор-патчи. Для установки выполните следующую команду:

композитору требуются cweagans/composer-patches

Применить патч

Теперь вы можете применить патч, выполнив следующую команду:

установка композитора

Во время установки Composer применит патч из папки patches/ к файлу PrefixAllGlobalsSniff.php.

Создавая и применяя файл исправлений, вы гарантируете, что ваши исправления сохраняются во всех обновлениях Composer, придерживаясь лучших практик в разработке программного обеспечения. Регулярно отслеживайте обновления PHP_CodeSniffer и стандартов кодирования WordPress, так как эти проблемы могут быть решены в будущих выпусках. Этот упреждающий подход не только повышает качество кода, но и улучшает рабочий процесс разработки в средах PHP 8.x.

Я поделился файлом патча в этом Gist. Не стесняйтесь использовать его в качестве справочника для реализации подобных исправлений в ваших проектах!

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/sarahcssiqueira/fixing-phpcodesniffer-null-trim-errors-in-wordpress-coding-standards-31k1?1 Если есть какие-либо нарушения, пожалуйста, свяжитесь с [email protected] удалить его
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3