[PHP] Composer で PHP_CodeSniffer + WordPress-Coding-Standards をかんたんインストールする
WordPress のコーディングスタンダードをチェックするツールをインストールします。
[markdown]
[以前の記事](https://www.d-wood.com/blog/2014/09/12_6884.html)が分かりづらかったので改訂版です。
## Installation
WordPress-Coding-Standards は、いまのところ PHP_CodeSniffer v2.9 系までにしか対応していないとのこと。
バージョン指定してインストールします。
> * [WordPress-Coding-Standards/WordPress-Coding-Standards: PHP_CodeSniffer rules (sniffs) to enforce WordPress coding conventions](https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards)
> * [squizlabs/PHP_CodeSniffer: PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.](https://github.com/squizlabs/PHP_CodeSniffer)
“`prettyprinted
% composer global require ‘squizlabs/php_codesniffer=2.9.*’
% composer global require ‘wp-coding-standards/wpcs=*’
“`
wp-coding-standards を `phpcs` に登録します。
“`prettyprinted
% 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
バージョン指定は不要になっています。
“`prettyprinted
% composer global require ‘squizlabs/php_codesniffer=*’
% composer global require ‘wp-coding-standards/wpcs=*’
“`
> * [WordPress-Coding-Standards/WordPress-Coding-Standards: PHP_CodeSniffer rules (sniffs) to enforce WordPress coding conventions](https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards#installation)
## Configuration
手軽に使えるように Ruleset を指定した alias を `.zshrc` あたりに用意しておきます。
> * [Rulesets: Standards subsets](https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards#standards-subsets)
“`bash:~/.zshrc
alias wpcs=”phpcs -p -s -v –standard=WordPress”
alias wpcbf=”phpcbf -p -v –standard=WordPress”
“`
こちらはお好みで調整下さい。
## Usage
`wpcs` でチェックします。
“`prettyprinted
% 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` で規約違反を自動修正します。
“`prettyprinted
% 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
“`
## 補遺
> – [php – How to add multiple paths for phpcs? – Stack Overflow](https://stackoverflow.com/questions/30933884/how-to-add-multiple-paths-for-phpcs)
“`prettyprinted
% phpcs –config-set installed_paths /Users/foo/.composer/vendor/wp-coding-standards/wpcs,/Users/foo/.composer/vendor/phpcompatibility/php-compatibility/PHPCompatibility
“`
[/markdown]