将PHP CodeSniffer与WordPress结合使用:安装和使用PHP CodeSniffer

本系列的第一篇文章中,我们定义了代码气味,并查看了它们的种类以及如何重构它们的几个示例,从而提高了代码的质量。 召回:

[A]代码气味,在计算机编程代码中也称为难闻的气味,是指程序源代码中任何可能表示更深层问题的症状。

最终,我们正在努力实现特定于WordPress的代码嗅探规则,但在执行此操作之前,熟悉PHP CodeSniffer非常重要。

在本文中,我们将了解什么是PHP CodeSniffer,如何安装,如何针对示例脚本运行它以及如何重构所述脚本。 然后,我们将研究如何前进到WordPress特定的代码。

如果您建立了本地开发环境,那就太好了; 如果没有,那很好。 我将提供一些链接,这些链接将使您快速启动并运行。

话虽如此,让我们开始吧。

先决条件

在开始之前,重要的是您必须具有某种类型的本地开发环境,即使该环境仅包括PHP解释器的副本。

您可能已经有副本

请注意,如果您正在运行Linux或OS X的变体,则可能已经安装了PHP。 如果这样做,则无需担心本节中的其他任何事情。 要确定您是否安装了PHP,请在命令行上运行以下命令:

$ php -v

您应该看到类似以下的内容(尽管输出可能会有所不同,具体取决于您选择运行的PHP版本):

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

如果您更高级并且安装了项目的多个副本,则可以运行:

$ which php

而且您应该看到类似以下内容:

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

尽管您的输出会根据PHP副本的安装位置而有所不同。

但是,如果不这样做,那就可以了!

尽管本系列文章主要是针对初学者的,但有些人可能会愿意下载PHP副本并将其安装在系统上。 如果您是您,请从项目的主页中获取PHP的副本,进行安装,然后返回本教程。

另一方面,如果这是您的新手,则可以选择在上面链接的PHP主页上使用一个安装程序来安装您的操作系统,或者在下面提供的其中一个使用实用程序。

所有这些软件包都有自己的安装程序,并将安装PHP,MySQL和Apache。 如前所述,我们主要关心的是在系统上提供PHP副本。

安装这些命令后,尝试运行本节第一部分提到的命令(或系统的等效命令),您将看到类似的输出。

如果您不这样做,则可能需要将PHP的路径添加到环境变量中。 这不在本教程的讨论范围内,因此请查阅文档以获取所安装项目的版本。

现在安装了PHP,我们就可以开始着手捕获和清理代码的味道了。

什么是PHP CodeSniffer?

您可以在GitHub上找到官方的PHP CodeSniffer软件

GitHub上的PHP CodeSniffer

从项目的文档中:

PHP_CodeSniffer是两个PHP脚本的集合; 主要的phpcs脚本可对PHP,JavaScript和CSS文件进行标记化,以检测是否违反了已定义的编码标准,而第二个phpcbf脚本可自动更正违反的编码标准。 PHP_CodeSniffer是必不可少的开发工具,可确保您的代码保持干净和一致。

如果您以前从未见过这样的东西,那听起来真的很整洁,不是吗? 我的意思是,这是一个工具,旨在帮助确保代码中存在一定水平的质量!

尽管该项目提到了诸如CSS和JavaScript之类的语言,但在本系列中我们主要关注PHP。 不过,这并不意味着检查项目中特定语言文件的质量并不重要。

听起来很不错,但仍然引发了一个问题:我们如何安装软件,以及如何开始检查代码?

现在让我们回答这两个问题。

1.安装软件

如果要对如何安装PHP CodeSniffer进行Google搜索,最终可能会得到各种各样的结果,其中许多结果将包括使用称为Pear的东西。

Pear曾经是PHP库的事实上的软件包分发系统,尽管该软件仍然可以使用许多软件包,但它也已从其他流行的软件包( 如PHPUnit中淘汰了

因此,我通常建议使用其他可用的安装方法。 这包括使用诸如Composer之类的工具,该工具可以说是最受欢迎的PHP依赖管理软件。

作曲家主页

如果您以前从未使用过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文件包含在该目录中以开始使用。

初始项目目录

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

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

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

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

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

安装完Composer之后,一旦您的composer.json文件看起来像上面的代码,就该实际安装PHP CodeSniffer了。 在命令行中,发出以下命令:

$ composer update

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

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

通过Composer成功安装了PHP CodeSniffer

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

tutsplus-demo,新的供应商目录包含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;
    }
}
?>

接下来,再次运行脚本,您将不会获得任何输出。 也就是说,应该显示标准命令提示符。 有时,这意味着有些问题,但是在这种情况下,这意味着一切都按预期运行

还不错吧?

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

这不是拐杖

评估我们的代码,避免代码异味并追求最高质量至关重要,因此,PHP CodeSniffer之类的工具并不适合用作拐杖。 这意味着我们没有写不好代码的借口,因为另一个工具可以捕获它。

因为它不会总是这样做。

相反,这是第二次通过。 也就是说,这是为了捕捉我们在第一次,第二次或第九次编写代码时可能会错过的事情。 这个特定程序的好处是,您可以根据要使用的环境,框架或库将不同的规则加载到PHP CodeSniffer中。

而这正是我们将在下一篇文章中使用WordPress的方式。

结论

就入门资料而言,本教程已经涵盖了相当多的基础。 也就是说,我们已经考虑在包含PHP的本地计算机上设置基本的开发环境。

接下来,我们研究了Composer以及如何在系统上安装它。 我们已经编写了第一个用于检索依赖关系的Composer文件,即PHP CodeSniffer,甚至还评估并纠正了该软件提供给我们的结果。

如果您主要是PHP开发人员,那么我希望本系列的前两篇文章对您有所帮助,但是如果您是WordPress开发人员,那么我们还要介绍更多内容。

在本系列的最后一篇文章中,我们将把注意力转向WordPress。 由于它具有一套自己的编码标准,因此我们将研究如何将这些规则加载到PHP CodeSniffer中,然后评估插件,主题代码等,以了解如何在当今的情况下使用它- WordPress项目的日常工作。

在继续下一篇文章之前,请查看上面的代码,并确保您已安装PHP和PHP CodeSniffer,并且熟悉其工作方式,因为我们将所有这些都结合在一起。

最后,您可以在个人资料页面上查看我的所有课程和教程,还可以在@tommcfarlin的 博客和/或Twitter上关注我,在其中我讨论了各种软件开发实践,尤其是在WordPress方面。

请不要在下面的提要中留下任何问题或评论,我将尽力回答每个问题或评论。

翻译自: https://code.tutsplus.com/tutorials/using-php-codesniffer-with-wordpress-installing-and-using-php-codesniffer--cms-26394

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值