"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Corrigindo erros PHP_CodeSniffer Null Trim() nos padrões de codificação do WordPress

Corrigindo erros PHP_CodeSniffer Null Trim() nos padrões de codificação do WordPress

Publicado em 01/11/2024
Navegar:534

Ao trabalhar em projetos WordPress com PHP 8.x, você pode encontrar o seguinte erro:

Erro fatal: PHP_CodeSniffer não detectado\Exceptions\RuntimeException: trim(): Passar null para o parâmetro #1 ($string) do tipo string está obsoleto em /path/...

Este erro ocorre devido a um aviso de descontinuação no PHP 8.x, onde passar null para a função trim() não é mais permitido. Especificamente, esse problema surge em um sniff do WordPress Coding Standards (WPCS), parte da configuração do PHP_CodeSniffer. Na data em que este livro foi escrito, mesmo com as versões mais recentes do PHP_CodeSniffer e dos padrões de codificação do WordPress, esse problema persistia.

Compreendendo PHP_CodeSniffer e WPCS

PHP_CodeSniffer é uma ferramenta que ajuda os desenvolvedores a manter os padrões de codificação, verificando seu código PHP em busca de violações de regras especificadas. Os Padrões de Codificação do WordPress (WPCS) fornecem um conjunto de diretrizes para escrever código consistente e limpo em projetos WordPress. O erro mencionado acima normalmente indica que um trecho de código não está aderindo a esses padrões devido a mudanças no comportamento do PHP.

Consertando

Para corrigir isso, podemos modificar manualmente o arquivo que está causando o problema, localizar a linha onde trim() é chamado e atualizar o código para garantir que os valores nulos sejam tratados corretamente ao chamar trim().

Por exemplo, no arquivo vendor/wp-coding-standards/wpcs/WordPress/Sniffs/NamingConventions/PrefixAllGlobalsSniff.php, localize a linha 280 e substitua a seguinte linha:

// 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' ) );

No entanto, como em muitas decisões no desenvolvimento de software, só porque você pode fazer isso, não significa que você deva.

Fixing PHP_CodeSniffer Null Trim() Errors in WordPress Coding Standards

Embora a abordagem anterior possa corrigir o erro, é importante lembrar que modificar os arquivos do fornecedor não é uma solução sustentável. As alterações serão perdidas sempre que você atualizar suas dependências via Composer.

Uma abordagem melhor, então, é criar um arquivo de patch.

Criando um arquivo de patch

Aqui está um guia passo a passo sobre como criar e aplicar um patch para o problema

Crie o arquivo de patch

Uma solução mais robusta é criar um arquivo de patch. Este método permite que você aplique suas alterações automaticamente sempre que instalar ou atualizar suas dependências.

Um arquivo de patch é um arquivo de texto que contém as diferenças entre duas versões de um arquivo - essencialmente um instantâneo "antes" e "depois".

No diretório do seu projeto, crie uma pasta para armazenar o arquivo de patch:

mkdir -p patches

Dentro da pasta patches/, crie um novo arquivo de patch chamado fix-null-trim.patch. Você pode fazer isso com seu editor de texto:

toque em patches/fix-null-trim.patch

Abra fix-null-trim.patch em seu editor de texto e adicione o seguinte conteúdo:

  --- 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' ) );

Este patch diz ao Composer para substituir a linha problemática em PrefixAllGlobalsSniff.php por uma versão mais segura que usa o operador de coalescência nulo (??) para evitar passar nulo para trim().

Modifique compositor.json para aplicar o patch

Em seguida, você precisa instruir o Composer para aplicar este patch automaticamente sempre que você instalar ou atualizar suas dependências.

Abra o arquivo compositor.json do seu projeto. Adicione a seguinte configuração na seção "extra". Se a seção "extra" ainda não existir, você precisará criá-la.

    json

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

Isso diz ao Composer para aplicar o arquivo fix-null-trim.patch ao pacote wp-coding-standards/wpcs quando ele instala ou atualiza dependências.

Instale o plugin Composer Patch

Para aplicar patches via Composer, você precisa do plugin compositor-patches. Execute o seguinte comando para instalar:

compositor requer cweagans/composer-patches

Aplicar o patch

Agora, você pode aplicar o patch executando o seguinte comando:

instalação do compositor

Durante a instalação, o Composer aplicará o patch da pasta patches/ ao arquivo PrefixAllGlobalsSniff.php.

Ao criar e aplicar um arquivo de patch, você garante que suas correções persistam nas atualizações do Composer, aderindo às melhores práticas no desenvolvimento de software. Monitore regularmente as atualizações do PHP_CodeSniffer e dos padrões de codificação do WordPress, pois esses problemas podem ser resolvidos em versões futuras. Essa abordagem proativa não apenas melhora a qualidade do código, mas também melhora seu fluxo de trabalho de desenvolvimento em ambientes PHP 8.x.

Compartilhei o arquivo de patch neste Gist. Sinta-se à vontade para usá-lo como referência para implementar correções semelhantes em seus projetos!

Declaração de lançamento Este artigo está reproduzido em: https://dev.to/sarahcssiqueira/fixing-phpcodesniffer-null-trim-errors-in-wordpress-coding-standards-31k1?1 Caso haja alguma infração, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3