codesniffer_wordpress

【メモ】PHPCS ( PHP_CodeSniffer ) + WordPress-Coding-Standards

Macがぶっ飛んでから設定してなかったのでメモ。

PHP_CodeSnifferを使ってWordPressのプラグインやテーマがコーディングスタンダードに準拠しているかチェックする | Firegoby

PHP_CodeSniffer + WordPress-Coding-Standards をインストールする | deadwood

以前、宮さんの記事を参考に設定して、同じよーなエラー出て、修正できてたのに、今回また同じよーにエラー出たので、これやったらいかん…のにやっちまったので…(^0^;)

エラー

[code]
$ wpcs post-notifier.php
ERROR: the "WordPress" coding standard is not installed. The installed coding standards are MySource, PEAR, PHPCS, PSR1, PSR2, Squiz and Zend
[/code]

“WordPress” coding standardないよ?あるのはMySource, PEAR, PHPCS, PSR1, PSR2, Squiz and Zendだけだよ?ってやつ。。

でも、ディレクトリにはちゃんとある。

codesniffer_wordpress
あるのに…

~/.composer/vendor/squizlabs/php_codesniffer/composer.jsonの中身を見てみると、

[code]
"autoload": {
"classmap": [
"CodeSniffer.php",
"CodeSniffer/CLI.php",
"CodeSniffer/Exception.php",
"CodeSniffer/File.php",
"CodeSniffer/Fixer.php",
"CodeSniffer/Report.php",
"CodeSniffer/Reporting.php",
"CodeSniffer/Sniff.php",
"CodeSniffer/Tokens.php",
"CodeSniffer/Reports/",
"CodeSniffer/Tokenizers/",
"CodeSniffer/DocGenerators/",
"CodeSniffer/Standards/AbstractPatternSniff.php",
"CodeSniffer/Standards/AbstractScopeSniff.php",
"CodeSniffer/Standards/AbstractVariableSniff.php",
"CodeSniffer/Standards/IncorrectPatternException.php",
"CodeSniffer/Standards/Generic/Sniffs/",
"CodeSniffer/Standards/MySource/Sniffs/",
"CodeSniffer/Standards/PEAR/Sniffs/",
"CodeSniffer/Standards/PSR1/Sniffs/",
"CodeSniffer/Standards/PSR2/Sniffs/",
"CodeSniffer/Standards/Squiz/Sniffs/",
"CodeSniffer/Standards/Zend/Sniffs/"
]
},
[/code]

となってた。WordPress入ってない。
結局、Google先生に聞いて、前に参考にさせてもらった記事を発見。

PHP_CodeSniffer + WordPress-Coding-Standards をインストールする | deadwood

登録して、

[code]
$ phpcs –config-set installed_paths ~/.composer/vendor/squizlabs/php_codesniffer/CodeSniffer/Standards/WordPress
[/code]

無事完了 🙂

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

~/.composer/vendor/squizlabs/php_codesniffer/CodeSniffer.conf 内に

[code]
<?php $phpCodeSnifferConfig = array ( ‘installed_paths’ => ‘/Users/NAME/.composer/vendor/squizlabs/php_codesniffer/CodeSniffer/Standards/WordPress’,
)
?>
[/code]

ができてた。今からチェックスタートな所っす。

Using custom ruleset

If you need to further customize selection of sniffs for your project — you can create custom ruleset.xml standard. See provided project.ruleset.xml.example file and fully annotated example in PHP_CodeSniffer documentation.

WordPress-Coding-Standards/WordPress-Coding-Standards

っとruleset.xmlのサンプルもあるみたいなので、これも試してみた方がいいかもなぁ…(^0^;)

PhpstormだとWordPress-Coding-StandardsのCode Sniffer使えるんすね

PhpStormにWordPress-Coding-StandardsのCode Snifferを設定する。Mac編 – Qiita

~/.composer/vendor/squizlabs/php_codesniffer/CodeSniffer/Standards/WordPress/README.md

↑↑に

PhpStorm

Please see “PHP Code Sniffer with WordPress Coding Standards Integration” in PhpStorm documentation.

Sublime Text

Install the sublime-phpcs package, then use the “Switch coding standard” command in the Command Palette to switch between coding standards.

の記載がありました。
早速設定してみると、

スクリーンショット 2016-01-07 22.29.26

のようにハイライトしてくれます。
しかし、ターミナルからチェックした方が圧倒的に突っ込みが多いです。。

[code]
———————————————————————-
FOUND 82 ERRORS AND 3 WARNINGS AFFECTING 62 LINES
———————————————————————-
11 | ERROR | [ ] Missing @package tag in file comment
| | (Squiz.Commenting.FileComment.MissingPackageTag)
13 | ERROR | [x] Space after opening control structure is
| | required
| | (WordPress.WhiteSpace.ControlStructureSpacing.NoSpaceAfterStructureOpen)
13 | ERROR | [x] Inline control structures are not allowed
| | (Generic.ControlStructures.InlineControlStructure.NotAllowed)
13 | ERROR | [x] Expected 1 space after IF keyword; 0 found
| | (Squiz.ControlStructures.ControlSignature.SpaceAfterKeyword)
17 | ERROR | [ ] Missing class doc comment
| | (Squiz.Commenting.ClassComment.Missing)
19 | ERROR | [ ] Missing function doc comment
| | (Squiz.Commenting.FunctionComment.Missing)
[/code]

……まだまだ大量にあります…(*_*)
スペースやコメントとかスゲーチェック入るんすね。。あとコメントスタイルは、”/**”を使えよ?とも言われました。。

ふぅ…。一度やってしまえば多分後は楽なはず!!
後もう少しっすな 🙂

おわた

[code]
$ wpcs post-notifier.php
Registering sniffs in the WordPress standard… DONE (81 sniffs registered)
Creating file list… DONE (1 files in queue)
Changing into directory /vccw/www/wordpress/wp-content/plugins/post-notifier
Processing post-notifier.php [PHP => 2552 tokens in 365 lines]… DONE in 183ms (0 errors, 0 warnings)
Time: 240ms; Memory: 8.75Mb
[/code]
0になりました 🙂
パラメータの説明はピリオドで終われよ?とか、結構細かいチェック入りましたが、いい勉強になりました (^^)