PHP_CodeSniffer で WordPressのコーディング規約をチェックする

WordPressでは、独自のコーディング規約があり、そのコーディング規約に沿っているかを自動でチェックするツールが PHP_CodeSnifferです。この記事では、PHP CodeSnifferをインストールしてphpcsコマンドで実行できるようにします。

PHP CodeSnifferをインストールする方法は、PHP_CodeSnifferの公式サイトでPEAR、Phive、Comporserを利用したインストール方法が紹介されていますが、今回はComposerを使用します。

Composerをインストールする

Composerがない場合は、まずComposerをインストールします。MacOS Xではbrewを使用します。
brewコマンドが登録されていない場合は、はじめにHomebrew公式サイトからHomebrewをインストールします。

$ brew install composer

インストールされたことを確認します。

$ composer -v
   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 1.9.0

環境変数PATHを通す

環境変数PATHを通すために、ホームにある.bash_profileを編集します。.bash_profileがない場合は、vi、もしくはテキストエディターアプリで新規作成して以下の行を記述して保存します。

export PATH="$PATH:$HOME/.composer/vendor/bin"

.bash_profile

ちなみに.bash_profileは不可視ファイルなのでファインダーからデフォルトでは見えません。ファインダーを開いた状態で、「command + shift + .」のショートカットキーを押して、非表示にしておきます。

PHP_CodeSnifferをインストールする

Comporserのコマンドが利用できるようになったら、ComposerコマンドでPHP_CodeSnifferをインストールします。

$ composer global require "squizlabs/php_codesniffer=*"

完了したらphpcsコマンドでインストールされているコーディング規約をみることができます。

$ phpcs -i
The installed coding standards are PEAR, Zend, PSR2, MySource, Squiz, PSR1 and PSR12

WordPressコーディング規約版をGitHubからインストールする

デフォルトにはWordPressのコーディング規約が入っていないので、GitHubからクローンして追加します。

$ git clone -b master https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards.git ~/.composer/vendor/squizlabs/php_codesniffer/Standards/WordPress

ここで、パスフレーズを聞かれてしまう場合は、GitHubにSSH接続できていないのが原因です。その場合は、まずはSSH接続の設定をする必要があります。
設定方法は「GitHubにSSH接続する方法」で紹介しています。

phpcsへ登録する

インストール後、phpcsへ登録します。

$ phpcs --config-set installed_paths ~/.composer/vendor/squizlabs/php_codesniffer/CodeSniffer/Standards/WordPress
Config value "installed_paths" added successfully

追加されたことを確認します。

$ phpcs -i
The installed coding standards are MySource, PEAR, PHPCS, PSR1, PSR2, Squiz, Zend, WordPress, WordPress-Core, WordPress-Docs, WordPress-Extra and WordPress-VIP

phpcsを実行する 

$ phpcs -p -s -v --standard=WordPress inde.php

エラーがあると以下のように表示されます。

------------------------------------------------------------------------------
FOUND 1 ERROR AFFECTING 1 LINE
------------------------------------------------------------------------------
 12 | ERROR | [x] Inline PHP statement must end with a semicolon
    |       |     (Squiz.PHP.EmbeddedPhp.NoSemicolon)
------------------------------------------------------------------------------
PHPCBF CAN FIX THE 1 MARKED SNIFF VIOLATIONS AUTOMATICALLY
------------------------------------------------------------------------------

このままでは、毎回ターミナルで実行しないといけないので面倒です。そこで、エディターからリアルタイムで実行できるようにエディター側で設定もしておくと便利です。

関連記事

Atomエディターで PHP_CodeSnifferを使ってエラーチェックできるようにする
GitHubにSSH接続する方法