[PHP] Composer で PHP_CodeSniffer + WordPress-Coding-Standards をかんたんインストールする
WordPress のコーディングスタンダードをチェックするツールをインストールします。
以前の記事が分かりづらかったので改訂版です。
Contents
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
あたりに用意しておきます。
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