このシリーズの最初の記事では、コード臭を定義し、コード臭が何であるか、およびコード臭をリファクタリングしてコードの品質を向上させる方法についていくつかの例を検討しました。想起: ###
[A] コードの匂いは、コンピューター プログラミング コードの悪臭とも呼ばれ、プログラムのソース コードにある、より深刻な問題を示す可能性のある症状です。最終的には、WordPress 固有のコード スニッフィング ルールの実装に取り組んでいますが、その前に、PHP CodeSniffer について理解しておくことが重要です。
この記事では、PHP CodeSniffer とは何か、インストール方法、サンプル スクリプトに対して実行する方法、およびスクリプトをリファクタリングする方法について学びます。次に、WordPress 固有のコードに進む方法を見ていきます。
ローカル開発環境がセットアップされている場合は問題ありませんが、そうでない場合でも問題ありません。すぐに起動して実行できるように、いくつかのリンクを提供します。
そうは言っても、始めましょう。
前提条件
すでにコピーをお持ちかもしれません
次のような内容が表示されるはずです (ただし、実行することを選択した PHP のバージョンによって出力が異なる場合があります):
リーリーより上級で、プロジェクトの複数のコピーがインストールされている場合は、次のコマンドを実行できます。
リーリー次のような内容が表示されるはずです:
リーリーただし、出力は PHP のコピーがインストールされている場所によって異なります。
でも、そうでなくても大丈夫です!
一方、これが初めての場合は、上にリンクされている PHP ホームページにあるオペレーティング システム用のインストーラーの 1 つを使用するか、以下に提供されているユーティリティの 1 つを使用することを選択できます。
Windows 用 WAMP
インストールしたら、このセクションの最初の部分で説明したコマンド (またはシステムの同等のコマンド) を実行してみると、同様の出力が表示されるはずです。
そうでない場合は、PHP へのパスを環境変数に追加する必要がある場合があります。これはこのチュートリアルの範囲を超えているため、インストールしたプロジェクトのバージョンのドキュメントを参照してください。
PHP がインストールされたので、コードの臭いを捕らえて除去し始めることができます。
PHP コードスニッファーとは何ですか?
プロジェクト ドキュメントより:
PHP_CodeSniffer は 2 つの PHP スクリプトのセットです。プライマリの
phpcsスクリプトは PHP、JavaScript、および CSS ファイルにフラグを立てて、定義されたコーディング標準の違反を検出し、2 番目のプロジェクトでは CSS や JavaScript などの言語について言及していますが、このシリーズでは PHP に焦点を当てます。ただし、プロジェクト内の言語固有のファイルの品質をチェックすることが重要ではないという意味ではありません。phpcbf## スクリプトは、コーディング標準違反を修正します。 PHP_CodeSniffer は、コードをクリーンで一貫性のある状態に保つ重要な開発ツールです。
このようなものをこれまで見たことがなければ、とても良いものだと思いませんか?つまり、コードが一定レベルの品質を確保できるように設計されたツールです。
それは素晴らしく聞こえますが、それでもいくつかの疑問が生じます。ソフトウェアをどのようにインストールし、コードの検査をどのように開始するのでしょうか?
それでは、これら 2 つの質問に答えてみましょう。
###1。ソフトウェアをインストールする###
PHP CodeSniffer のインストール方法を Google で検索すると、おそらくさまざまな結果が表示されますが、その多くには Pear と呼ばれるものの使用が含まれています。Pear は、PHP ライブラリの事実上のパッケージ配布システムでした。多くのパッケージは今でもこのソフトウェアを通じて利用できますが、PHPUnit などの他の人気のあるパッケージからも廃止されました。
如果您以前从未使用过 Composer,请不要担心。我将提供您所需的所有步骤,以便通过 Composer 并以最少的工作在您的计算机上启动并运行 PHP CodeSniffer。如果您有兴趣了解更多信息,我们有很多有关如何使用 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 完成工作后,您应该会看到如下内容:
您的 tutsplus-code
目录现在应如下所示:
特别注意,您有一个供应商目录。这意味着 Composer 正确安装了 PHP CodeSniffer。此时,我们已准备好评估 PHP 代码。
首先,我们来看一个示例脚本。我们要查看的内容可以在 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$
请注意,它发现了四个错误。第一列告诉您错误发生在哪一行,第二列指出这是一个错误(而不是警告),然后其余的告诉您它期望看到的内容与实际看到的内容。
所以让我们根据这些错误清理文件。一般来说,我们需要做到以下几点:
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 のようなツールは、松葉杖として使用することを意図したものではありません。これは、別のツールがそれをキャッチするからといって、悪いコードを書く言い訳ができないことを意味します。
いつもそうとは限らないからです。
代わりに、2 回目のパスを意味します。つまり、その目的は、コードを書いた 1 回目、2 回目、または 9 回目に見逃した可能性のあるものを捕捉することです。この特定のプログラムの優れた点は、使用している環境、フレームワーク、またはライブラリに応じて、さまざまなルールを PHP CodeSniffer にロードできることです。
これはまさに次の記事で WordPress を使って行うことです。
###結論は###次に、Composer についてと、それをシステムにインストールする方法を学びました。私たちは、依存関係を取得するための最初の Composer ファイルである PHP CodeSniffer を作成し、ソフトウェアから得られた結果を評価して修正しました。
あなたが主に PHP 開発者である場合は、このシリーズの最初の 2 つの記事が役立つことを願っていますが、WordPress 開発者である場合は、さらに多くのことを取り上げます。
このシリーズの最後の記事では、WordPress に注目します。独自のコーディング標準セットがあるため、これらのルールを PHP CodeSniffer にロードする方法を検討し、プラグインやテーマ コードなどを評価して、それを日常業務でどのように使用できるかを確認します。今日のWordPressプロジェクトについて。
次の記事に進む前に、上記のコードを見て、PHP と PHP CodeSniffer がインストールされていることを確認し、すべてを結び付けることになるので、その仕組みをよく理解してください。
最後に、私のすべてのコースとチュートリアルは私のプロフィール ページでご覧いただけます。また、私のブログや Twitter (@tommcfarlin) で私をフォローしていただくこともできます。そこでは、特に WordPress 環境でのさまざまなソフトウェア開発の実践について議論しています。ご質問やコメントがございましたら、お気軽に以下のフィードに残してください。それぞれに最善を尽くしてお答えいたします。
参考文献
以上がWordPress での PHP CodeSniffer の使用: PHP CodeSniffer のインストールと使用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。