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ファイルにパスを記述します。

echo 'export PATH=$HOME/.composer/vendor/bin:$PATH' >> ~/.bash_profile

ファインダーから直接.bash_profileを編集してパスを追記することも可能です。

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

ちなみに、.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
------------------------------------------------------------------------------

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

関連記事

VS CodeでPHP_CodeSnifferを利用してWordPressのコーディング規約をチェックする
Atomエディターで PHP_CodeSnifferを使ってエラーチェックできるようにする
GitHubにSSH接続する方法

石井秀幸@WEBデザイナー
WordPress公式『横浜 WordPress Meetup』主宰/株式会社ノクチ基地 取締役/モンゼンクリエイティブ合同会社 代表。WEB制作に関する技術や役立つ情報を発信していきます。10年にわたるWordPress歴を背景に、幅広いアイデアを形にするお手伝いをしています。