😎
ファイルの修正個所、コミットの差分だけPHPCSを充てる方法
diff-snifferがよさそう
------------------- ↓ 前書はここから ↓-------------------
PHP_CodeSniffer (以下phpcs)は最早説明不要なぐらい当たり前のように使われるようになった。
phpcsについてはphp-cs-fixerと同様何度も私の記事に登場した。
これらのツールはファイル単位でチェックしてくれるのだが、
すでにあるコードを少し修正する場合、
修正箇所だけチェックしてほしいと思うことが多々ある。
ツールないかなと調べてみたら以下の二つがあった。
やりたいことの中に、
gitのpre-commitあたりに加えたいのもあったので、
今回はDiff Snifferを採用
ヾ(・ω<)ノ" 三三三● ⅱⅲ コロコロ♪
------------------- ↓ 本題はここから ↓-------------------
インストール
最新版pharをダウンロードして適当なディレクトリに置いておく
wget https://github.com/diff-sniffer/diff-sniffer/releases/latest/download/diff-sniffer.phar
php ./diff-sniffer.phar --version
Diff Sniffer version 0.5.1
コマンドラインで使用する
コーディング規約をPSR12とすると
php ./diff-sniffer.phar -- --standard=PSR12
FILE: /home/dozo/Abc.php
----------------------------------------------------------------------
FOUND 4 ERRORS AFFECTING 1 LINE
----------------------------------------------------------------------
249 | ERROR | [x] Expected at least 1 space before "."; 0 found
249 | ERROR | [x] Expected at least 1 space after "."; 0 found
249 | ERROR | [x] Expected at least 1 space before "."; 0 found
249 | ERROR | [x] Expected at least 1 space after "."; 0 found
----------------------------------------------------------------------
PHPCBF CAN FIX THE 4 MARKED SNIFF VIOLATIONS AUTOMATICALLY
----------------------------------------------------------------------
たぶんPHP_CodeSnifferのコマンドラインオプションはそのまま使えると思う。
gitのpre-commitで使用する
Gitのコミット実行前に動作するpre-commitにコマンドを登録する
$ cat > .git/hooks/pre-commit << 'EOF'
#!/usr/bin/env bash
php ./diff-sniffer.phar --staged "$@" -- --standard=PSR12
EOF
Discussion