8
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

はじめに

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以外でも各種言語で簡単に手元でのチェックができるようになります。

8
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?