>  기사  >  백엔드 개발  >  WordPress에서 PHP CodeSniffer 사용: PHP CodeSniffer 설치 및 사용

WordPress에서 PHP CodeSniffer 사용: PHP CodeSniffer 설치 및 사용

PHPz
PHPz원래의
2023-09-02 22:13:15579검색

이 시리즈의 첫 번째 기사에서는 코드 냄새를 정의하고 몇 가지 예를 살펴보며 코드 냄새가 무엇인지, 코드 품질을 개선하기 위해 리팩토링할 수 있는 방법을 이해했습니다. 회상:

[A] 컴퓨터 프로그래밍 코드에서 악취라고도 알려진 코드 냄새는 더 심각한 문제를 나타낼 수 있는 프로그램 소스 코드의 증상입니다.

결국 WordPress 전용 코드 스니핑 규칙을 구현하는 작업을 진행하고 있지만 그 전에 PHP CodeSniffer에 익숙해지는 것이 중요합니다.

이 기사에서는 PHP CodeSniffer가 무엇인지, 설치 방법, 샘플 스크립트에 대해 실행하는 방법, 해당 스크립트를 리팩터링하는 방법에 대해 알아봅니다. 그런 다음 WordPress 전용 코드로 이동하는 방법을 살펴보겠습니다.

로컬 개발 환경이 설정되어 있다면 괜찮습니다. 그렇지 않아도 괜찮습니다. 빠르게 시작하고 실행할 수 있도록 몇 가지 링크를 제공하겠습니다.

그렇다면 시작해 보겠습니다.

전제조건

시작하기 전에 PHP 인터프리터 사본만 포함되어 있더라도 일종의 로컬 개발 환경을 갖추는 것이 중요합니다.

이미 사본을 가지고 있을 수도 있습니다

Linux 또는 OS X 변형을 실행 중인 경우 이미 PHP가 설치되어 있을 수 있습니다. 이렇게 하면 이 섹션의 다른 사항에 대해 걱정할 필요가 없습니다. PHP가 설치되어 있는지 확인하려면 명령줄에서 다음 명령을 실행하세요.

으아아아

다음과 유사한 내용이 표시되어야 합니다(실행하기로 선택한 PHP 버전에 따라 출력이 다를 수 있음).

으아아아

더 발전했고 프로젝트 사본이 여러 개 설치되어 있는 경우 다음을 실행할 수 있습니다.

으아아아

다음과 같은 내용이 표시됩니다.

으아아아

PHP 사본이 설치된 위치에 따라 출력이 달라질 수 있습니다.

하지만 그렇지 않아도 괜찮습니다!

이 시리즈는 주로 초보자를 대상으로 하지만 PHP 사본을 다운로드하여 시스템에 설치하려는 분들도 있을 수 있습니다. 본인이라면 프로젝트 홈 페이지에서 PHP 사본을 가져와 설치한 후 이 튜토리얼로 돌아오세요.

이것이 처음이라면 위에 링크된 PHP 홈페이지에서 운영 체제에 맞는 설치 프로그램 중 하나를 사용하거나 아래에 제공된 유틸리티 중 하나를 사용하도록 선택할 수 있습니다.

  • Windows용 WAMP
  • XAMPP는 Linux, Windows 또는 OS X에서 작동합니다
  • Windows 및 OS X용 MAMP

이러한 모든 패키지에는 자체 설치 프로그램이 있으며 PHP, MySQL 및 Apache를 설치합니다. 앞서 언급했듯이 우리의 주요 관심사는 시스템에서 PHP 사본을 사용할 수 있는지 여부입니다.

설치한 후 이 섹션의 첫 번째 부분에서 언급한 명령(또는 시스템에 해당하는 명령)을 실행해 보면 비슷한 출력이 표시됩니다.

그렇지 않으면 환경 변수에 PHP 경로를 추가해야 할 수도 있습니다. 이는 이 튜토리얼의 범위를 벗어나므로 설치한 프로젝트 버전에 대한 설명서를 참조하세요.

이제 PHP가 설치되었으므로 코드 냄새를 포착하고 정리할 수 있습니다.

PHP CodeSniffer가 무엇인가요?

GitHub에서 공식 PHP CodeSniffer 소프트웨어를 찾을 수 있습니다.

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

프로젝트 문서에서:

PHP_CodeSniffer는 두 개의 PHP 스크립트 세트입니다. 기본 phpcs 脚本对 PHP、JavaScript 和 CSS 文件进行标记,以检测是否违反已定义的编码标准,第二个 phpcbf 스크립트는 코딩 표준 위반을 자동으로 수정하는 데 사용됩니다. PHP_CodeSniffer는 코드가 깔끔하고 일관되게 유지되도록 보장하는 중요한 개발 도구입니다.

이런 걸 본 적이 없다면 정말 좋을 것 같죠? 즉, 이는 코드의 품질을 일정 수준으로 유지하는 데 도움이 되도록 설계된 도구입니다!

프로젝트에서는 CSS 및 JavaScript와 같은 언어를 언급하지만 이 시리즈에서는 PHP에 중점을 둡니다. 하지만 그렇다고 프로젝트에서 이러한 언어별 파일의 품질을 확인하는 것이 중요하지 않다는 의미는 아닙니다.

훌륭해 보이지만 여전히 몇 가지 질문이 제기됩니다. 소프트웨어를 어떻게 설치하고 코드 확인을 어떻게 시작합니까?

이제 이 두 가지 질문에 답해 보겠습니다.

1. 소프트웨어 설치

Google에서 PHP CodeSniffer 설치 방법을 검색하면 아마도 다양한 결과를 얻게 될 것입니다. 그 중 상당수는 Pear라는 것을 사용하는 것을 포함합니다.

Pear는 PHP 라이브러리를 위한 사실상의 패키지 배포 시스템이었으며 소프트웨어를 통해 여전히 많은 패키지를 사용할 수 있지만 PHPUnit과 같은 다른 인기 패키지에서는 폐기되었습니다.

이 때문에 사용 가능한 다른 설치 방법을 사용하는 것이 좋습니다. 여기에는 아마도 가장 인기 있는 PHP 종속성 관리 소프트웨어인 Composer와 같은 도구를 사용하는 것이 포함됩니다.

使用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;
    }
}
?>

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

不错吧?

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

이것은 목발이 아닙니다

코드를 평가하고, 코드 냄새를 피하고, 가능한 최고 품질을 위해 노력하는 것이 중요하지만, PHP CodeSniffer와 같은 도구를 버팀목으로 사용해서는 안 됩니다. 이는 다른 도구가 이를 잡아낼 것이기 때문에 나쁜 코드를 작성할 변명의 여지가 없다는 것을 의미합니다.

항상 그런 식으로 작동하는 것은 아니니까요.

대신 두 번째 패스를 의미합니다. 즉, 그 목적은 우리가 코드를 처음, 두 번째, 아홉 번째 작성할 때 놓쳤을 수 있는 내용을 포착하는 것입니다. 이 특정 프로그램의 좋은 점은 사용 중인 환경, 프레임워크 또는 라이브러리에 따라 PHP CodeSniffer에 다양한 규칙을 로드할 수 있다는 것입니다.

이것이 바로 다음 글에서 WordPress로 할 일입니다.

결론

소개 자료에 관한 한, 이 튜토리얼에서는 꽤 많은 내용을 다룹니다. 즉, 로컬 컴퓨터에서 PHP를 사용하여 기본 개발 환경을 설정하는 것을 고려해 보겠습니다.

다음으로 Composer에 대해 알아보고 이를 시스템에 설치하는 방법을 알아봤습니다. 우리는 종속성을 검색하기 위한 첫 번째 Composer 파일인 PHP CodeSniffer를 작성했으며 소프트웨어가 제공한 결과를 평가하고 수정하기도 했습니다.

주로 PHP 개발자라면 이 시리즈의 처음 두 기사가 도움이 되었기를 바랍니다. 하지만 WordPress 개발자라면 다루어야 할 내용이 더 많습니다.

이 시리즈의 마지막 기사에서는 WordPress에 주목하겠습니다. 자체 코딩 표준 세트가 있기 때문에 해당 규칙을 PHP CodeSniffer에 로드하는 방법을 살펴본 다음 플러그인, 테마 코드 등을 평가하여 일상에서 어떻게 사용할 수 있는지 살펴보겠습니다. 오늘 WordPress 프로젝트에 대해 알아보겠습니다.

다음 기사로 넘어가기 전에 위의 코드를 살펴보고 PHP와 PHP CodeSniffer가 설치되어 있는지 확인하고 작동 방식을 잘 알고 있는지 확인하세요. 왜냐하면 모든 코드를 하나로 묶을 것이기 때문입니다.

마지막으로, 내 프로필 페이지에서 내 모든 강좌와 튜토리얼을 확인할 수 있으며 내 블로그 및/또는 Twitter(@tommcfarlin)에서 나를 팔로우할 수 있습니다. 여기에서는 특히 WordPress 환경에서 다양한 소프트웨어 개발 방식에 대해 논의합니다.

아래 피드에 질문이나 댓글을 남겨주시면 최선을 다해 답변해드리겠습니다.

참고자료

    PHP
  • GitHub의 PHP CodeSniffer
  • GitHub의 작곡가
  • 컴포저 설치
  • 컴포저 아키텍처
  • Tuts+ 작곡가 튜토리얼
  • 스택 오버플로의 PHP 스크립트 예

위 내용은 WordPress에서 PHP CodeSniffer 사용: PHP CodeSniffer 설치 및 사용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.