😎

ファイルの修正個所、コミットの差分だけPHPCSを充てる方法

2021/08/25に公開

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