はじめに
phpの構文チェック、phpcsなどを入れて本格的にチェックしたい場合もあるでしょうが、とりあえずローカルとかでもちょこっとだけやっておきたいときってありますよね。
そんなときの小ネタです。
単一phpファイルの構文チェック
実は単一のファイルに対するphpの構文チェックは php -l [ターゲットファイル]
で実施できます。
# php -l example.php
No syntax errors detected in example.php
ディレクトリ全体の構文チェック1
では、特定のディレクトリの下を全部チェックしたい場合はfindと組み合わせれば再帰的にチェックしてくれます。
$ find ./ -name "*.php" | xargs -n1 php -l
No syntax errors detected in ./example1.php
No syntax errors detected in ./example2.php
No syntax errors detected in ./example3.php
No syntax errors detected in ./dir1/example1.php
No syntax errors detected in ./dir1/example2.php
No syntax errors detected in ./dir1/example3.php
No syntax errors detected in ./dir2/example1.php
No syntax errors detected in ./dir2/example2.php
PHP Parse error: syntax error, unexpected '{' in ./dir2/example3.php on line 14
Errors parsing ./dir2/example3.php
xargs: php: exited with status 255; aborting
途中でどこかエラーがあったら止まりますが、少し出力内容が多いので邪魔ですね。
ディレクトリ全体の構文チェック2
成功した行を捨ててしまいましょう。
$ find ./ -name "*.php" | xargs -n1 php -l > /dev/null
PHP Parse error: syntax error, unexpected '{' in ./dir2/example3.php on line 14
Errors parsing ./dir2/example3.php
xargs: php: exited with status 255; aborting
aliasに登録しておこう
ついでにこれを.bashrcなどにalias登録しておきましょう。
.bashrc
~中略~
alias phplint='find ./ -name "*.php" | xargs -n1 php -l > /dev/null'
$ phplint
PHP Parse error: syntax error, unexpected '{' in ./dir2/example3.php on line 14
Errors parsing ./dir2/example3.php
xargs: php: exited with status 255; aborting
便利ですね。
もちろん、同様のaliasを登録しておけばphp以外でも各種言語で簡単に手元でのチェックができるようになります。