vim から PHP_CodeSniffer を利用する方法
ノートパソコンを、自転車に乗りながら持ち運べるように、バッグを買った tanaka です。
今日は、PhpStorm で CakePHP のコーディングスタイルを自動チェックする - バシャログ。に関連して、vim で PHP_CodeSniffer を実行する方法を紹介します
bpearson/vim-phpcs ・ GitHub を使う
実際使うにあたっては、プロジェクトごとにコーディングルールが自動設定できるか?という点が重要だと思います。bpearson/vim-phpcs ・ GitHubというプラグインを試したところ、後述する、vimrcの設定と組み合わせることで、できました。
とりあえずこれをインストールします。
インストールについては一般的なインストール方法と同じなので省略します。GitHubなので、Shougo/neobundle.vim ・ GitHubを使って簡単にインストールすることもできます。
インストール後は、どのコーディングルールを使うかをvimrcに以下のように追記しましょう
let Vimphpcs_Standard='CakePHP'
設定後PHPファイルを開いて、:CodeSniff[Enter]
とタイプすれば、QuickFixバッファが開いて、ルール違反リストが表示されます。(次の画像を参照ください)基本的な使い方は以上のようです。
プロジェクトごとにコーディングルールを切り替えたい
先ほどのvimrcの設定だとCakePHP以外のコーディングルールを使いたいときはvimrcを修正したり、ファイルを開くたびに設定をする必要がありそうです。それはちょっと面倒なので、プロジェクトごとに設定が自動で変更されるようにしましょう。
Vim-users.jp - Hack #112: 場所ごとに設定を用意するの方法を使います。
まず、次の内容をvimrcに追加します。(Vim-users.jp - Hack #112: 場所ごとに設定を用意するから転載)
" Load settings for each location.
augroup vimrc-local
autocmd!
autocmd BufNewFile,BufReadPost * call s:vimrc_local(expand(':p:h'))
augroup END
function! s:vimrc_local(loc)
let files = findfile('.vimrc.local', escape(a:loc, ' ') . ';', -1)
for i in reverse(filter(files, 'filereadable(v:val)'))
source `=i`
endfor
endfunction
このコードを追加しておくと、ファイルを開いたときに、最上位ディレクトリから順番に「.vimrc.local」というファイルがないかチェックして、vimの設定ファイルとして読み込んでくれます。
そこで次にPHPアプリケーションのプロジェクトのルートディレクトリに、「.vimrc.local」という
名前のファイルを作成し、次の内容を追加します。
let Vimphpcs_Standard='CakePHP'
コーディングルールが異なるプロジェクトの場合はこの変数に入れる文字列を変更すれば、ファイルを開いたときに、切り替わってくれます。
まとめ
vim からPHP_CodeSnifferを使うプラグインの紹介、プロジェクトごとにルールを切り替える方法を紹介しました。