"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Correction des erreurs PHP_CodeSniffer Null Trim() dans les normes de codage WordPress

Correction des erreurs PHP_CodeSniffer Null Trim() dans les normes de codage WordPress

Publié le 2024-11-01
Parcourir:558

Lorsque vous travaillez sur des projets WordPress avec PHP 8.x, vous pouvez rencontrer l'erreur suivante :

Erreur fatale : PHP_CodeSniffer\Exceptions\RuntimeException : trim() : la transmission de null au paramètre n°1 ($string) de type chaîne est obsolète dans /path/...

Cette erreur se produit en raison d'un avertissement de dépréciation dans PHP 8.x, où la transmission de null à la fonction trim() n'est plus autorisée. Plus précisément, ce problème survient dans le cadre d'un reniflage des normes de codage WordPress (WPCS), qui fait partie de la configuration de PHP_CodeSniffer. À la date d’écriture de ces lignes, même avec les dernières versions de PHP_CodeSniffer et WordPress Coding Standards, ce problème persiste.

Comprendre PHP_CodeSniffer et WPCS

PHP_CodeSniffer est un outil qui aide les développeurs à maintenir les normes de codage en vérifiant leur code PHP pour détecter toute violation des règles spécifiées. Les normes de codage WordPress (WPCS) fournissent un ensemble de directives pour écrire du code cohérent et propre dans les projets WordPress. L'erreur mentionnée ci-dessus indique généralement qu'un extrait de code n'adhère pas à ces normes en raison de changements dans le comportement de PHP.

Fixation

Pour résoudre ce problème, nous pouvons modifier manuellement le fichier à l'origine du problème, localiser la ligne où trim() est appelé et mettre à jour le code pour garantir que les valeurs nulles sont correctement traitées lors de l'appel de trim().

Par exemple, dans le fichier vendor/wp-coding-standards/wpcs/WordPress/Sniffs/NamingConventions/PrefixAllGlobalsSniff.php, localisez la ligne 280 et remplacez la ligne suivante :

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

Cependant, comme dans de nombreuses décisions en matière de développement de logiciels, ce n'est pas parce que vous pouvez le faire que vous devriez le faire.

Fixing PHP_CodeSniffer Null Trim() Errors in WordPress Coding Standards

Bien que l'approche précédente puisse corriger l'erreur, il est important de se rappeler que la modification des fichiers du fournisseur n'est pas une solution durable. Les modifications seront perdues à chaque fois que vous mettrez à jour vos dépendances via Composer.

Une meilleure approche consiste donc à créer un fichier de correctif.

Création d'un fichier de correctif

Voici un guide étape par étape sur la façon de créer et d'appliquer un correctif pour le problème

Créer le fichier de correctif

Une solution plus robuste consiste à créer un fichier de correctif. Cette méthode vous permet d'appliquer automatiquement vos modifications à chaque fois que vous installez ou mettez à jour vos dépendances.

Un fichier de correctif est un fichier texte qui contient les différences entre deux versions d'un fichier : essentiellement un instantané « avant » et « après ».

Dans le répertoire de votre projet, créez un dossier pour contenir le fichier de correctif :

mkdir -p correctifs

Dans le dossier patches/, créez un nouveau fichier de correctif appelé fix-null-trim.patch. Vous pouvez le faire avec votre éditeur de texte :

toucher les patchs/fix-null-trim.patch

Ouvrez fix-null-trim.patch dans votre éditeur de texte et ajoutez le contenu suivant :

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

Ce correctif indique à Composer de remplacer la ligne problématique dans PrefixAllGlobalsSniff.php par une version plus sûre qui utilise l'opérateur de fusion nul (??) pour éviter de transmettre null à trim().

Modifiez composer.json pour appliquer le correctif

Ensuite, vous devez demander à Composer d'appliquer ce correctif automatiquement chaque fois que vous installez ou mettez à jour vos dépendances.

Ouvrez le fichier composer.json de votre projet. Ajoutez la configuration suivante dans la section "extra". Si la section "extra" n'existe pas déjà, vous devrez la créer.

    json

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

Cela indique à Composer d'appliquer le fichier fix-null-trim.patch au package wp-coding-standards/wpcs lorsqu'il installe ou met à jour les dépendances.

Installez le plugin Composer Patch

Pour appliquer des correctifs via Composer, vous avez besoin du plugin composer-patches. Exécutez la commande suivante pour installer :

le compositeur nécessite des cweagans/composer-patches

Appliquer le patch

Maintenant, vous pouvez appliquer le correctif en exécutant la commande suivante :

installation du compositeur

Lors de l'installation, Composer appliquera le correctif du dossier patches/ au fichier PrefixAllGlobalsSniff.php.

En créant et en appliquant un fichier de correctif, vous vous assurez que vos correctifs persistent dans les mises à jour de Composer, en respectant les meilleures pratiques en matière de développement logiciel. Surveillez régulièrement les mises à jour de PHP_CodeSniffer et des normes de codage WordPress, car ces problèmes pourraient être résolus dans les versions futures. Cette approche proactive améliore non seulement la qualité du code, mais améliore également votre flux de travail de développement dans les environnements PHP 8.x.

J'ai partagé le fichier de correctif dans ce Gist. N'hésitez pas à l'utiliser comme référence pour implémenter des correctifs similaires dans vos projets !

Déclaration de sortie Cet article est reproduit sur : https://dev.to/sarahcssiqueira/fixing-phpcodesniffer-null-trim-errors-in-wordpress-coding-standards-31k1?1 En cas de violation, veuillez contacter [email protected] pour le supprimer
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3