Windows 10 IIS環境下で PHP_CodeSniffer を実装する方法
WordPressのテーマを公式テーマにアップロードしたところ、PHP_CodeSnifferでエラーが出ていますといわれました。PHP_CodeSniffer?なんだそりゃと思って調べてみると、PHPの構文チェックしてくれるツールだということが分かりました。いろいろ調べていくと、Windows 10 IIS環境下では、pearを使ってインストールできなかったので、composerを使ってインストールすることにしました。
composerのインストール
まず、
Composer-Setup.exeをダウンロードしてダブルクリックするとインストールが始まります。
Nextをクリックするとphpのインストール環境を聞いてきます。
普通はそのままで大丈夫です。Nextをクリックします。すると今度はプロキシサーバーの設定を聞いてきます。
設定されている方は、入力をしてください。そうでないならNextをクリックします。
最後確認画面でるのでinstallをクリックするとインストールが開始されます。
PHP_CodeSnifferのインストール
composerをインストールすると、今度はPHP_CodeSnifferのインストールです。
ここからはコマンドラインで行うので、コマンドプロンプトかWindows PowerShellを起動します。(起動の仕方が分からない場合はコルタナで検索してください。)
以下のコマンドを入力するとPHP_CodeSnifferがインストールされます。
composer global require "squizlabs/php_codesniffer=2.*"
(もしインストールできないときは、PHPのphp_openssl.dllが有効になっていないからです。PHPのインストールフォルダにあるphp.iniのファイルを開けて、exteinsion=php_openssl.dllを有効にしてください。)
少し時間がかかりますがインストールが終了します。
きちんとインストールできたかは、
phpcs --version
と入力すると、
phpcs --version
PHP_CodeSniffer version 2.9.1 (stable) by Squiz (http://www.squiz.net)
という風に確認できます。
WordPress-Coding-Standardsのインストール
これでphpの構文チェックはできるのですがせっかくなのでWordpressの構文チェックも調べられるようにしましょう。
WordPress用の構文チェックである
ダウンロードしたWordPress-Coding-Standards-develop.zipを解凍し、D:¥などの適当なところに移動させます。
このダウンロードしたWordPress-Coding-Standards-developをPHP_CodeSnifferに認識させます。
コマンドラインで
phpcs --config-set installed_paths D:¥WordPress-Coding-Standards-develop
と入力してください。後半のフォルダは移動したフォルダを選択してください。そうするとすぐに
phpcs --config-set installed_paths D:¥WordPress-Coding-Standards-develop
Config value "installed_paths" added successfully
と成功すると思います。ちゃんとインストールできているか確認するには、
phpcs -i
と入力すると
phpcs -i
The installed coding standards are MySource, PEAR, PHPCS, PSR1, PSR2, Squiz, Zend, WordPress, WordPress-Core, WordPress-Docs, WordPress-Extra and WordPress-VIP
となって、WordPress, WordPress-Core, WordPress-Docs, WordPress-Extraが出てくれば成功です。
使い方
さてこれで、準備は終了です。後は、使っていくだけですが、コマンドラインで、自分のwordpressのテーマフォルダに移動して調べたいphpファイル名を入力して
phpcs --standard=WordPress loop.php
とすると、
phpcs --standard=WordPress loop.php
FILE: D:\www\wp-content\themes\four-leaf-clover\loop.php
----------------------------------------------------------------------
FOUND 3 ERRORS AFFECTING 2 LINES
----------------------------------------------------------------------
1 | ERROR | Missing file doc comment
24 | ERROR | Expected next thing to be an escaping function (see
| | Codex for 'Data Validation'), not '__'
24 | ERROR | A gettext call containing placeholders was found, but
| | was not accompanied by a "translators:" comment on the
| | line above to clarify the meaning of the placeholders.
----------------------------------------------------------------------
とちゃんとエラーが出てきます。