PHP開発環境でコーディング規約やコードチェックに関するツール群を整えたらvimプラグインもちゃんと使えないようにしないとね – PHP_CodeSniffer対応vimプラグイン編

前回はPHP CodeSnifferのインストールをして機能確認まで完了した。PHPを使うエンジニアとしては、かなり強力なツールとなりうる確信に至った。しかしvimerとしてはvimから便利に使えなければ意味がない。ということで、vimプラグインを探す旅に出た。

2017/11/01追記

vim-phpfmtについて、実は前もってインストールしていたPHP CodeSnifferのバージョン3.1.1で動いていたとおもいきや、デフォルトの設定だとvim-phpfmtにバンドルされた2.7系を使っていることがわかった。
これは.vimrcにphpfmt_command変数をグローバル定義して設定すればいいのだが、現状のvim-phpfmtは3系ではうまく機能しないことも同時にわかった。
この顛末については後日何かの形でブログでまとめられたらと思うが、とりあえずバンドルされた2.7系でも特に支障なく整形処理はできるはずだ。

「取り急ぎ使えるようにしたい」という人は、以下の差分を見て自分で手を入れてもらえばよいだろう。
phpcbf 3.x系を使いたいだけならautoload/phpfmt/fmt.vimの1行だけ修正すれば問題ない。それ以外にもphpfmt_optionsが設定どおり反映されないという問題もあったので、これに対応したい場合はplugin/phpfmt.vimの修正も行うとよいかと思う。

インストールしようと思った理由

このあたりは以前に書いているので、興味があったら読んでいただきたい。

vimプラグインの選択

PHP CodeSnifferに対応したプラグインを探しても、実はあまり見つからなかったのだが、もともと使っていた多言語対応の文法チェッカーSynプラグインtasticが対応しているので、これを使うことに。
Syntasticは有能で、PHPなら、このあとインストール予定の混乱性チェッカーのPHPMDも対応しているので、これを使うことにした。
PHP CodeSnifferは複数のプログラミング言語の文法チェックに対応したプラグインだけれど、書式の自動調整はしてくれない。そこで別途vim-phpfmtプラグインを導入することにした。

プラグインのインストール

プラグインはNeoBundledein.vimのインストールを済ませておく必要がある。
もはやvimプラグインの管理に、これらなくして語れない時代にきている。
NewBundleは開発が止まっているので、dein.vimをオススメしたい。私もdein.vimを使用しているので、ここではその前提で話を進める。
dein.vim自体のインストールはGitHubの説明(英語)を読むか、ぐぐってインストールを解説しているブログなどを参照されたい。

Syntastic

~/.vimrcに、以下を記述する。

これを書いた後に、以下のコマンドを実行する。

そのあと、プラグインをインストールする。

これでプラグインはインストールできた。
Syntasticの設定は各種あるが、私のPHPの設定は以下の通り。

syntastic_php_checkersの設定は配列なので、もし他の設定をしている場合は、カンマ区切りで指定していけばよい。
syntastic_php_phpcs_argsはphpcsへの引数だが、前回の記事で書いた–standardオプションへのコーディング規約を指定するなど、必要に応じてオプションを書けば良いだろう。

さて、ちゃんと動くかどうか、である。
ふたたび、あのクソコードさんにお出でいただこう。

テストとはいえ我ながら本当に見るも無残なクソコードであるが、これをチェックしていただくとしよう。
PHPファイルをロードすると、早速チェックが走ってくれる。

さて、ちゃんとコマンドラインで実行したものとあっているのだろうか。
一応、phpcsコマンドの出力と比較してみたい。

比較してみよう。

24エラーでメッセージも同じであることが確認された。Syntasticによるphpcsの実行は問題なく行われていることが確認できたとみていいだろう。
このあと、vim-phpfmtによって自動整形することになる。
前記事でも触れた通り、[x]の箇所は自動修正が可能な場所である。vim-phpfmtによってこれが解消され、手動でなければ解消できないエラーが残れば機能しているとみなして良いだろう。

vim-phpfmt

まず、一旦vimを終わらせてみよう。
そして、.vimrcを編集されたい。

これもdein.vimを使って管理していれば何の問題もない。
~/.vimrcに、以下を記述する。

先ほどと同様に、これを書いた後に、(:を入力してから)以下のコマンドを実行する。

さらに先ほどと同様、プラグインをインストールする。

余談だが、dein.vimを使って管理しているプラグインの最新アップデートは、以下のように行う。

かったるいという人は、キーマップを設定すれば良いだろう。ここでは割愛する。

インストールが終わったら、ふたたびあのクソコードを読みだしてもらいたい。
PHPクソコードをロードすると、PHP CodeSnifferによるチェックが行われているはずだ。

そのまま、一度単なる保存をしてみよう。
「:w」でよい。

すると、画面が一変するに違いない。

phpcsによるエラー出力が3行になった。
すでに編集中のファイルは自動保存されているので、実際にphpcsコマンドで確認をしても、そうなっているはずだ。

残ってしまったエラーは手動で対処するか、事情があればそのままにしておくということになるだろう。

次なるPHPコーディングサポートツールは…

次回はPHPMDを導入したい。
時間があれば、ここでまた記事を書いてみよう。

コメントを残す

メールアドレスが公開されることはありません。