Utiliser PHP CodeSniffer avec WordPress Installer et utiliser PHP CodeSniffer

Dans le premier article de cette série, nous avons défini les odeurs de code et examiné quelques exemples de ce qu’elles sont et de la manière dont nous pouvons les reformuler afin d’améliorer la qualité du code. Rappel:

[Une] odeur de code, également appelée mauvaise odeur, dans le code de programmation informatique, fait référence à tout symptôme du code source d'un programme pouvant indiquer un problème plus grave.. 

En fin de compte, nous travaillons à la mise en œuvre de règles de détection de code spécifiques à WordPress, mais avant cela, il est important de vous familiariser avec PHP CodeSniffer.. 

Dans cet article, nous allons examiner PHP CodeSniffer, son installation, son exécution, un exemple de script et le remaniement dudit script. Ensuite, nous verrons comment nous allons passer au code spécifique à WordPress..

Si vous avez un environnement de développement local mis en place, alors super; sinon, c'est bien. Je vous fournirai des liens qui vous permettront de démarrer rapidement. 

Cela dit, commençons.

Conditions préalables

Avant de commencer, il est important de disposer d’un type d’environnement de développement local, même s'il ne contient qu'une copie de l'interpréteur PHP..

Vous pouvez déjà avoir une copie

Notez que si vous utilisez une variante de Linux ou OS X, il est possible que PHP soit déjà installé. Si vous le faites, vous n’aurez à vous soucier de rien d’autre dans cette section. Pour déterminer si vous avez installé PHP, exécutez la commande suivante sur la ligne de commande:

$ php -v

Vous devriez voir quelque chose comme ce qui suit (bien que votre sortie puisse être différente en fonction de la version de PHP que vous avez choisi d’exécuter):

PHP 5.6.10 (cli) (construit: 6 juillet 2015 14:28:54) Copyright (c) 1997-2015 Le groupe PHP Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies

Si vous êtes plus avancé et avez plusieurs copies du projet installées, alors vous pouvez exécuter:

$ quel php

Et vous devriez voir quelque chose comme ça:

/Applications/MAMP/bin/php/php5.6.10/bin/php

Bien que votre sortie varie en fonction de l’emplacement de votre copie de PHP.

Mais si vous ne le faites pas, c'est bon!

Bien que cette série soit principalement destinée aux débutants, certains d'entre vous sont à l'aise avec le téléchargement d'une copie de PHP et son installation sur votre système. Si c'est votre cas, récupérez une copie de PHP sur la page d'accueil du projet, installez-la et revenez à ce didacticiel..

Si, d’autre part, ceci est nouveau pour vous, vous pouvez choisir d’utiliser l’un des programmes d’installation de votre système d’exploitation sur la page d’accueil PHP ci-dessus ou l’un des utilitaires fournis ci-dessous..

  • WAMP pour Windows
  • XAMPP pour Linux, Windows ou OS X
  • MAMP pour Windows et OS X

Tous ces paquets ont leurs propres installateurs et installeront PHP, MySQL et Apache. Comme mentionné précédemment, nous souhaitons principalement disposer d'une copie de PHP disponible sur notre système.. 

Une fois que ceux-ci sont installés, essayez d’exécuter les commandes mentionnées dans la première partie de cette section (ou l’équivalent de votre système) et vous devriez voir une sortie similaire.. 

Sinon, vous devrez probablement ajouter le chemin d'accès à PHP à vos variables d'environnement. Ceci n’entre pas dans le cadre de ce didacticiel. Veuillez donc consulter la documentation de la version du projet que vous avez installée..

Maintenant que PHP est installé, nous sommes prêts à commencer à détecter et à nettoyer nos odeurs de code.

Qu'est-ce que PHP CodeSniffer?

Vous pouvez trouver le logiciel officiel PHP CodeSniffer sur GitHub.

A partir de la documentation du projet:

PHP_CodeSniffer est un ensemble de deux scripts PHP; le principal phpcs script qui segmente les fichiers PHP, JavaScript et CSS pour détecter les violations d’une norme de codage définie, puis une seconde. phpcbf script pour corriger automatiquement les violations standard de codage. PHP_CodeSniffer est un outil de développement indispensable pour que votre code reste propre et cohérent..

Si vous n'avez jamais rien vu de tel auparavant, ça a l'air vraiment chouette, n'est-ce pas? Je veux dire, c'est un outil qui est conçu pour aider à assurer un certain niveau de qualité dans votre code!

Bien que le projet mentionne des langages tels que CSS et JavaScript, nous nous concentrons sur PHP dans cette série. Cela ne signifie pas qu'il n'est pas important de vérifier la qualité de ces fichiers de langue particuliers dans vos projets, bien que.

Aussi génial que cela puisse paraître, cela soulève toujours les questions suivantes: comment installer le logiciel et comment commencer à vérifier notre code?

Répondons maintenant à ces deux questions.

1. Installation du logiciel

Si vous deviez effectuer une recherche sur Google pour savoir comment installer PHP CodeSniffer, vous obtiendrez probablement une variété de résultats, dont beaucoup incluront l'utilisation de quelque chose appelé Pear.

Pear était autrefois le système de distribution de paquets de facto pour les bibliothèques PHP. Bien que de nombreux paquets restent disponibles via le logiciel, ils sont également retirés d'autres paquets populaires (tels que PHPUnit)..

Pour cette raison, je recommande souvent d'utiliser d'autres méthodes d'installation lorsqu'elles sont disponibles. Cela inclut l’utilisation d’outils tels que Composer, qui est sans doute le logiciel de gestion de la dépendance le plus populaire pour PHP..

Si vous n'avez jamais utilisé Composer auparavant, ne vous inquiétez pas. Je vous fournirai toutes les étapes nécessaires pour que PHP CodeSniffer soit opérationnel sur votre machine avec Composer et avec un minimum de travail. Si vous souhaitez en savoir plus, nous avons plusieurs tutoriels sur l’utilisation de Composer, alors n'hésitez pas à les consulter..

Installation du compositeur

Avant d'installer PHP CodeSniffer, nous devons installer Composer. Heureusement, il est très facile de le faire une fois que PHP est opérationnel sur votre machine locale..

Pour installer Composer, vous pouvez télécharger ce fichier, puis exécuter la commande suivante sur la ligne de commande, où que vous ayez téléchargé le programme d'installation de Composer:

$ php composer-setup.php --install-dir = bin --filename = composer

Une note des instructions d'installation de Composer:

Vous pouvez installer Composer dans un répertoire spécifique en utilisant le --rép_install option et le (re) nommer aussi en utilisant le --nom de fichier option. 

Pour plus d'informations, n'hésitez pas à vous reporter aux instructions de téléchargement ou à visualiser l'intégralité du projet sur GitHub..

Une fois installé, vous pouvez maintenant utiliser Composer pour installer des dépendances tierces, telles que PHP CodeSniffer, dans vos projets. Notez cependant où vous avez installé votre copie de Composer. Vous devrez vous y référer lors de son exécution car nous allons l'exécuter depuis la ligne de commande..

Quoi qu'il en soit, allons de l'avant et créons un répertoire à partir duquel nous allons exécuter nos scripts PHP. Bien que nous n’ayons encore rien dans ce répertoire, nous devons créer un fichier appelé composer.json.

Je vais appeler mon répertoire tutsplus-demo, et je vais inclure mon fichier Composer dans ce répertoire pour commencer.

Une fois le fichier créé, placez le code suivant dans le fichier JSON:

"require": "squizlabs / php_codesniffer": "2. *"

En bref, cela indique à Composer d'installer PHP CodeSniffer lorsque vous exécutez la commande appropriée. Notez que le exiger directive fait ce qui suit:

Répertorie les paquets requis par ce paquet. Le paquet ne sera pas installé à moins que ces exigences ne puissent être satisfaites.

Vous pouvez en savoir plus sur le schéma Composer dans la documentation..

Une fois Composer installé et une fois que vous avez votre composer.json fichier ressemblant au code ci-dessus, il est temps d'installer réellement PHP CodeSniffer. A partir de la ligne de commande, lancez la commande suivante:

$ mise à jour du compositeur

Notez que cela est fondé sur l'idée que Composer est disponible publiquement sur votre système. Sinon, vous pouvez l'exécuter en tapant le chemin complet du fichier installé ou vous pouvez l'ajouter à vos variables d'environnement, puis redémarrer votre session de terminal afin de recharger les variables..

Une fois que Composer a fini de travailler, vous devriez voir quelque chose comme ceci:

Et ton tutsplus-code Le répertoire devrait maintenant ressembler à ceci:

Notez spécifiquement que vous avez un répertoire de fournisseurs. Cela signifie que Composer a correctement installé PHP CodeSniffer. À ce stade, nous sommes prêts à évaluer notre code PHP.

2. Évaluation des scripts

Tout d’abord, prenons un exemple de script. Celui que nous allons examiner se trouve dans cette réponse sur Stack Overflow.

Créez un fichier dans votre tutsplus-demo répertoire et nommez-le sample.php. Ensuite, assurez-vous que le fichier contient le contenu suivant:

 

Enregistrez votre travail. Ensuite, nous pouvons exécuter PHP CodeSniffer à partir de la ligne de commande et lui demander d'évaluer le code dans le script ci-dessus à l'aide du jeu de règles standard.

Depuis votre terminal, entrez la commande suivante:

$ vendor / bin / phpcs sample.php

Cela devrait générer une sortie contenant les éléments suivants:

Skyhopper5: tutsplus-demo tommcfarlin $ vendor / bin / phpcs sample.php FICHIER: /Users/tommcfarlin/Desktop/tutsplus-demo/sample.php ------------------- -------------------------------------------------- - 4 ERREURS TROUVÉES AFFECTANT 4 LIGNES ------------------------------------------- --------------------------- 2 | ERREUR | [] Fichier manquant doc commentaire 5 | ERREUR | [x] Aucun espace trouvé après la virgule dans l'appel de fonction 7 | ERREUR | [] Attendu "si (…) \ n"; trouvé "si (…) \ n" 9 | ERREUR | [] Attendu "si (…) \ n"; trouvé "si (…) \ n" ------------------------------------------------ ------------------------------ PHPCBF PEUT FIXER LES 1 VIOLATIONS DE SNIFF MARQUES AUTOMATIQUEMENT ----------- -------------------------------------------------- --------- Heure: 46ms; Mémoire: 3.5Mb Skyhopper5: tutsplus-demo tommcfarlin $ 

Notez qu'il a trouvé quatre erreurs. La première colonne vous indique la ligne sur laquelle l'erreur est allumée, la deuxième colonne indique qu'il s'agit d'une erreur (par opposition à un avertissement), et le reste vous indique ce qu'elle s'attend à voir par rapport à ce qu'elle a réellement vu..

Nettoyons donc le fichier en fonction de ces erreurs. De manière générale, nous devons procéder comme suit:

  1. Ajouter un commentaire sur la documentation au niveau des fichiers.
  2. Ajouter un espace après une virgule dans un appel à une fonction sur un fichier en ligne.
  3. Ajouter des espaces après si déclarations dans le script.

Le résultat final ressemblerait à ceci:

 * @license http://opensource.org/licenses/gpl-license.php Licence publique GNU * @link http://is.gd/dq0DhO * @since 1.0.0 * / $ target_dir = "uploads /"; $ target_file = $ target_dir. nom de base ($ _ FILES ["fileToUpload"] ["name"]); $ uploadOk = 1; $ imageFileType = pathinfo ($ target_file, PATHINFO_EXTENSION); // Vérifie si le fichier image est une image réelle ou une image fausse if (isset ($ _ POST ["submit"])) $ check = getimagesize ($ _ FILES ["fileToUpload"] ["nom_mpT"]); if ($ check! == false) echo "Le fichier est une image -". $ chèque ["mime"]. "."; $ uploadOk = 1;  else echo "Le fichier n'est pas une image."; $ uploadOk = 0; ?> 

Ensuite, relancez le script et vous ne devriez obtenir aucune sortie. Autrement dit, l'invite de commande standard devrait vous être présentée. Parfois, cela signifie que quelque chose est cassé, mais dans ce cas, cela signifie que tout fonctionne comme prévu

Pas mal, droit? 

Maintenant, imaginez ce que cela pourrait faire pour de plus grandes bases de code et des scripts avec lesquels vous travaillez quotidiennement..

Ce n'est pas une béquille

Aussi important qu'il soit d'évaluer notre code, d'éviter les odeurs de code et de rechercher la meilleure qualité possible, des outils tels que PHP CodeSniffer ne sont pas conçus pour être utilisés comme des béquilles. Cela signifie que nous n'avons pas d'excuse pour écrire du code incorrect, car un autre outil le détectera..

Parce qu'il ne le fera pas toujours.

Au lieu de cela, ceci est conçu comme une seconde passe. C'est-à-dire qu'il est destiné à intercepter des choses que nous pourrions manquer lors de l'écriture du code la première, deuxième ou neuvième fois. La bonne chose à propos de ce programme particulier est que vous pouvez charger différentes règles dans PHP CodeSniffer en fonction de l'environnement, du framework ou de la bibliothèque avec laquelle vous travaillez..

Et c'est exactement ce que nous allons faire avec WordPress dans le prochain article.

Conclusion

En ce qui concerne le matériel d'introduction, nous avons couvert pas mal de terrain dans ce tutoriel. C’est-à-dire que nous avons envisagé de mettre en place un environnement de développement de base sur notre machine locale incluant PHP.

Ensuite, nous avons examiné Composer et comment l’installer sur notre système. Nous avons écrit notre premier fichier Composer pour récupérer les dépendances, à savoir PHP CodeSniffer, et nous avons même évalué et corrigé les résultats fournis par le logiciel..

Si vous êtes principalement un développeur PHP, j'espère que les deux premiers articles de la série ont été utiles, mais si vous êtes un développeur WordPress, nous avons un peu plus à couvrir.

Dans le dernier article de la série, nous allons nous intéresser à WordPress. Comme il a son propre ensemble de normes de codage, nous allons voir comment charger ces règles dans PHP CodeSniffer, puis évaluer les plugins, le code de thème, etc., pour avoir une idée de la façon de les utiliser au quotidien. travail quotidien dans nos projets WordPress.

Avant de passer à l'article suivant, passez en revue le code ci-dessus et assurez-vous que PHP et CodeSniffer sont installés et que vous savez comment cela fonctionne, car nous allons tout mettre ensemble..

Enfin, vous pouvez passer en revue tous mes cours et tutoriels sur ma page de profil, et vous pouvez me suivre sur mon blog et / ou Twitter à @tommcfarlin où je parle de différentes pratiques de développement de logiciels, en particulier dans le contexte de WordPress..

S'il vous plaît n'hésitez pas à laisser des questions ou des commentaires dans le flux ci-dessous, et je vais essayer de répondre à chacun d'eux.

Références

  • PHP
  • PHP CodeSniffer sur GitHub
  • Compositeur sur GitHub
  • Installation du compositeur
  • Le schéma du compositeur
  • Tutoriels Tuts + Compositeur
  • Exemple de script PHP à partir du débordement de la pile