[PHP] Composer で PHP_CodeSniffer + WordPress-Coding-Standards をかんたんインストールする

WordPress のコーディングスタンダードをチェックするツールをインストールします。

以前の記事が分かりづらかったので改訂版です。

Installation

WordPress-Coding-Standards は、いまのところ PHP_CodeSniffer v2.9 系までにしか対応していないとのこと。

バージョン指定してインストールします。

% composer global require 'squizlabs/php_codesniffer=2.9.*'
% composer global require 'wp-coding-standards/wpcs=*'

wp-coding-standards を phpcs に登録します。

% phpcs --config-set installed_paths /Users/foo/.composer/vendor/wp-coding-standards/wpcs
% phpcs -i
The installed coding standards are MySource, PEAR, PHPCS, PSR1, PSR2, Squiz, Zend, WordPress, WordPress-Core, WordPress-Docs, WordPress-Extra and WordPress-VIP

以上で終了です。

追記: 2019/05/17

バージョン指定は不要になっています。

% composer global require 'squizlabs/php_codesniffer=*'
% composer global require 'wp-coding-standards/wpcs=*'

Configuration

手軽に使えるように Ruleset を指定した alias を .zshrc あたりに用意しておきます。

~/.zshrc
alias wpcs="phpcs -p -s -v --standard=WordPress"
alias wpcbf="phpcbf -p -v --standard=WordPress"

こちらはお好みで調整下さい。

Usage

wpcs でチェックします。

% wpcs **/*.php
    :
FILE: ...e/wordpress.dev/wordpress/wp-content/themes/foo/sidebar.php
----------------------------------------------------------------------
FOUND 1 ERROR AFFECTING 1 LINE
----------------------------------------------------------------------
 31 | ERROR | [x] When an array uses associative keys, each value should
    |       |     start on a new line.
    |       |     (WordPress.Arrays.ArrayDeclarationSpacing.AssociativeKeyFound)
----------------------------------------------------------------------
PHPCBF CAN FIX THE 1 MARKED SNIFF VIOLATIONS AUTOMATICALLY
----------------------------------------------------------------------
Time: 208ms; Memory: 8Mb

wpcbf で規約違反を自動修正します。

% wpcbf sidebar.php
Changing into directory /Users/foo/projects/foo/wordpress.dev/wordpress/wp-content/themes/foo
Processing sidebar.php [PHP => 203 tokens in 49 lines]... DONE in 6ms (1 fixable violations)
        => Fixing file: 0/1 violations remaining [made 5 passes]... DONE in 15ms
Patched 1 file
Time: 75ms; Memory: 4Mb

補遺

% phpcs --config-set installed_paths /Users/foo/.composer/vendor/wp-coding-standards/wpcs,/Users/foo/.composer/vendor/phpcompatibility/php-compatibility/PHPCompatibility