Maison  >  Article  >  développement back-end  >  Utiliser PHP CodeSniffer avec WordPress : installer et utiliser PHP CodeSniffer

Utiliser PHP CodeSniffer avec WordPress : installer et utiliser PHP CodeSniffer

PHPz
PHPzoriginal
2023-09-02 22:13:15576parcourir

Dans le premier article de cette série, nous avons défini les odeurs de code et examiné quelques exemples pour comprendre ce qu'elles sont et comment nous pouvons les refactoriser pour améliorer la qualité du code. Rappel :

[A] Les odeurs de code, également appelées mauvaises odeurs dans le code de programmation informatique, sont des symptômes dans le code source d'un programme qui peuvent indiquer un problème plus profond.

À terme, nous travaillons sur la mise en œuvre de règles de sniffing de code spécifiques à WordPress, mais avant cela, il est important de se familiariser avec PHP CodeSniffer.

Dans cet article, nous apprendrons ce qu'est PHP CodeSniffer, comment l'installer, comment l'exécuter sur un exemple de script et comment refactoriser ledit script. Nous verrons ensuite comment passer au code spécifique à WordPress.

Si vous avez mis en place un environnement de développement local, c'est très bien, sinon, ce n'est pas grave. Je vais vous fournir quelques liens pour vous aider à être opérationnel rapidement.

Cela étant dit, commençons.

Prérequis

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

Vous en avez peut-être déjà une copie

Veuillez noter que si vous utilisez une variante de Linux ou d'OS X, PHP est peut-être déjà installé. Si vous faites cela, vous n'avez à vous soucier de rien d'autre dans cette section. Pour déterminer si PHP est installé, exécutez la commande suivante sur la ligne de commande :

$ php -v

Vous devriez voir quelque chose de similaire à ce qui suit (bien que votre résultat puisse varier en fonction de la version de PHP que vous choisissez d'exécuter) :

PHP 5.6.10 (cli) (built: Jul  6 2015 14:28:54) 
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies

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

$ which php

Vous devriez voir quelque chose comme ceci :

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

Bien que votre résultat varie en fonction de l'endroit où votre copie de PHP est installée.

Mais si vous ne le faites pas, ce n'est pas grave !

Bien que cette série s'adresse principalement aux débutants, certains d'entre vous seront peut-être disposés à télécharger une copie de PHP et à l'installer sur votre système. Si tel est votre cas, récupérez une copie de PHP sur la page d'accueil du projet, installez-la et revenez à ce didacticiel.

Si, par contre, cela est nouveau pour vous, vous pouvez choisir d'utiliser l'un des programmes d'installation pour votre système d'exploitation à partir de la page d'accueil PHP liée ci-dessus ou l'un des utilitaires fournis ci-dessous.

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

Tous ces packages ont leurs propres installateurs et installeront PHP, MySQL et Apache. Comme mentionné précédemment, notre principale préoccupation est d'avoir une copie de PHP disponible sur notre système.

Une fois installé, essayez d'exécuter la commande mentionnée dans la première partie de cette section (ou l'équivalent pour votre système) et vous devriez voir un résultat similaire.

Si ce n'est pas le cas, vous devrez peut-être ajouter le chemin d'accès à PHP à vos variables d'environnement. Cela dépasse 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 pouvons commencer à détecter et nettoyer les odeurs de code.

Qu'est-ce que PHP CodeSniffer ?

Vous pouvez trouver le logiciel officiel PHP CodeSniffer sur GitHub.

使用PHP CodeSniffer与WordPress:安装和使用PHP CodeSniffer

D'après la documentation du projet :

PHP_CodeSniffer est un ensemble de deux scripts PHP ; le script principal phpcs 脚本对 PHP、JavaScript 和 CSS 文件进行标记,以检测是否违反已定义的编码标准,第二个 phpcbf est utilisé pour corriger automatiquement les violations des normes de codage. PHP_CodeSniffer est un outil de développement important qui garantit que votre code reste propre et cohérent.

Si vous n'avez jamais vu quelque chose de pareil auparavant, ça a l'air vraiment bien, n'est-ce pas ? Je veux dire, c'est un outil conçu pour garantir que votre code a un certain niveau de qualité !

Bien que le projet mentionne des langages comme CSS et JavaScript, nous nous concentrons sur PHP dans cette série. Mais cela ne veut pas dire qu’il n’est pas important de vérifier la qualité de ces fichiers spécifiques à une langue dans votre projet.

Même si cela semble génial, cela soulève quand même quelques questions : comment installer le logiciel et comment commencer à vérifier notre code ?

Répondons maintenant à ces deux questions.

1. Installer le logiciel

Si vous recherchez sur Google 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 packages de facto pour les bibliothèques PHP, et bien que de nombreux packages soient toujours disponibles via le logiciel, il a également été retiré d'autres packages populaires tels que PHPUnit.

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

使用PHP CodeSniffer与WordPress:安装和使用PHP CodeSniffer

如果您以前从未使用过 Composer,请不要担心。我将提供您所需的所有步骤,以便通过 Composer 并以最少的工作在您的计算机上启动并运行 PHP CodeSniffer。如果您有兴趣了解更多信息,我们有很多有关如何使用 Composer 的教程,请随时查看。

安装 Composer

在安装 PHP CodeSniffer 之前,我们需要实际安装 Composer。幸运的是,一旦您在本地计算机上启动并运行了 PHP,就可以很容易地做到这一点。

要安装 Composer,您可以下载此文件,然后从下载 Composer 安装程序的位置在命令行上执行以下命令:

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

Composer 安装说明中的注释:

您可以使用 --install-dir 选项将 Composer 安装到特定目录,并使用 --filename 选项(重新)命名它。

有关更多信息,请随时参阅下载说明或在 GitHub 上查看整个项目。

安装完成后,您现在可以使用 Composer 将第三方依赖项(例如 PHP CodeSniffer)安装到您的项目中。不过,请记下您安装 Composer 副本的位置。运行它时您需要引用它,因为我们将从命令行运行它。

无论如何,让我们继续创建一个目录,我们将在其中运行 PHP 脚本。虽然此目录中还没有任何内容,但我们需要创建一个名为 composer.json 的文件。

我将调用我的目录 tutsplus-demo,并将我的 Composer 文件包含在该目录中以开始使用。

使用PHP CodeSniffer与WordPress:安装和使用PHP CodeSniffer

创建文件后,将以下代码放入 JSON 文件中:

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

简而言之,这告诉 Composer 在您执行正确的命令时安装 PHP CodeSniffer。请注意,require 指令执行以下操作:

列出该包所需的包。除非满足这些要求,否则不会安装该软件包。

您可以在文档中阅读有关 Composer 架构的更多信息。

一旦安装了 Composer,并且您的 composer.json 文件与上面的代码类似,就可以实际安装 PHP CodeSniffer 了。从命令行发出以下命令:

$ composer update

请注意,这是基于 Composer 在您的系统上公开可用的想法。如果没有,您可以通过键入已安装文件的完整路径来执行它,也可以将其添加到环境变量中,然后重新启动终端会话以重新加载变量。

Composer 完成工作后,您应该会看到如下内容:

使用PHP CodeSniffer与WordPress:安装和使用PHP CodeSniffer

您的 tutsplus-code 目录现在应如下所示:

使用PHP CodeSniffer与WordPress:安装和使用PHP CodeSniffer

特别注意,您有一个供应商目录。这意味着 Composer 正确安装了 PHP CodeSniffer。此时,我们已准备好评估 PHP 代码。

2。评估脚本

首先,我们来看一个示例脚本。我们要查看的内容可以在 Stack Overflow 上的这个答案中找到。

tutsplus-demo 目录中创建一个文件,并将其命名为 sample.php。然后,确保该文件包含以下内容:

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
    if($check !== false) {
        echo "File is an image - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "File is not an image.";
        $uploadOk = 0;
    }
}
?>

保存您的工作。接下来,我们可以从命令行运行 PHP CodeSniffer,并让它使用标准规则集评估上面脚本中的代码。

从您的终端输入以下命令:

$ vendor/bin/phpcs sample.php

这应该生成包含以下内容的输出:

Skyhopper5:tutsplus-demo tommcfarlin$ vendor/bin/phpcs sample.php 

FILE: /Users/tommcfarlin/Desktop/tutsplus-demo/sample.php
----------------------------------------------------------------------
FOUND 4 ERRORS AFFECTING 4 LINES
----------------------------------------------------------------------
 2 | ERROR | [ ] Missing file doc comment
 5 | ERROR | [x] No space found after comma in function call
 7 | ERROR | [ ] Expected "if (...) {\n"; found "if(...) {\n"
 9 | ERROR | [ ] Expected "if (...) {\n"; found "if(...) {\n"
----------------------------------------------------------------------
PHPCBF CAN FIX THE 1 MARKED SNIFF VIOLATIONS AUTOMATICALLY
----------------------------------------------------------------------

Time: 46ms; Memory: 3.5Mb

Skyhopper5:tutsplus-demo tommcfarlin$ 

请注意,它发现了四个错误。第一列告诉您错误发生在哪一行,第二列指出这是一个错误(而不是警告),然后其余的告诉您它期望看到的内容与实际看到的内容。

所以让我们根据这些错误清理文件。一般来说,我们需要做到以下几点:

  1. 添加文件级文档注释。
  2. 在调用行文件中的函数时,在逗号后面添加一个空格。
  3. 在脚本中的 if 语句后添加空格。

最终结果如下所示:

<?php
/**
 * Determines if the file being uploaded is a legitimate image or not.
 * If so, allows the file to be uploaded. Otherwise, prevents the upload
 * from occurring.
 *
 * PHP Version 5
 *
 * @category Demo
 * @package  TutsPlus_Demo
 * @author   Tom McFarlin <tom@tommcfarlin.com>
 * @license  http://opensource.org/licenses/gpl-license.php GNU Public License
 * @link     http://is.gd/dq0DhO
 * @since    1.0.0
 */

$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file, PATHINFO_EXTENSION);
// Check if image file is a actual image or fake image
if (isset($_POST["submit"])) {
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
    if ($check !== false) {
        echo "File is an image - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "File is not an image.";
        $uploadOk = 0;
    }
}
?>

接下来,再次运行脚本,您应该不会得到任何输出。也就是说,您应该看到标准命令提示符。有时这意味着某些东西被破坏了,但在这种情况下,这意味着一切都按预期运行

不错吧?

现在想象一下这对于您每天使用的更大的代码库和脚本会有什么作用。

Ce n'est pas une béquille

Bien qu'il soit important d'évaluer notre code, d'éviter les odeurs de code et de rechercher la meilleure qualité possible, des outils comme PHP CodeSniffer ne sont pas destinés à être utilisés comme une béquille. Cela signifie que nous n’avons aucune excuse pour écrire du mauvais code car un autre outil le détectera.

Parce que ça ne marche pas toujours comme ça.

Au lieu de cela, cela signifie un deuxième passage. Autrement dit, son objectif est de capturer des éléments que nous aurions pu manquer la première, la deuxième ou la neuvième fois que nous avons codé. L'avantage 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 que vous utilisez.

C’est exactement ce que nous ferons avec WordPress dans le prochain article.

Conclusion

En ce qui concerne le matériel d'introduction, nous en couvrons beaucoup dans ce tutoriel. Cela dit, envisageons de mettre en place un environnement de développement de base avec PHP sur notre machine locale.

Ensuite, nous avons découvert Composer et comment l'installer sur notre système. Nous avons écrit notre premier fichier Composer pour récupérer les dépendances, le PHP CodeSniffer, et nous avons même évalué et corrigé les résultats que le logiciel nous a donnés.

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

Dans le dernier article de cette série, nous porterons notre attention sur WordPress. Parce qu'il possède son propre ensemble de normes de codage, nous verrons comment charger ces règles dans un PHP CodeSniffer, puis évaluerons les plugins, le code du thème, etc. pour voir comment nous pouvons l'utiliser au quotidien. sur nos projets WordPress aujourd'hui.

Avant de passer à l'article suivant, jetez un œil au code ci-dessus et assurez-vous que PHP et PHP CodeSniffer sont installés et que vous connaissez son fonctionnement, car nous allons tout relier ensemble

.

Enfin, vous pouvez consulter tous mes cours et tutoriels sur ma page de profil et vous pouvez me suivre sur mon blog et/ou Twitter (@tommcfarlin) où je discute de diverses pratiques de développement logiciel, notamment dans un environnement WordPress.

N'hésitez pas à laisser vos questions ou commentaires dans le fil ci-dessous et je ferai de mon mieux pour répondre à chacun.

Références

  • PHP
  • PHP CodeSniffer sur GitHub
  • Compositeur sur GitHub
  • Installer Composer
  • Architecture du compositeur
  • Tutoriel Tuts+ Composer
  • Exemple de script PHP de Stack Overflow

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn