PHPのソースコードを解析するツールをつかってみた
PHPで品質の高いプログラムを作製するのが、私の夢として持ちつづけています。
プログラマの個人能力に影響されず品質を高めるにはどうすべきか? システマチックに自動で品質をチェックして、問題点(既存bug)を指摘してくれるツールがないかと、探しはじめました。 PSAT(the PHP static analysis tool)というツールを発見しましたが、ネットで利用している人は殆ど発見できず、とりあえず実験してみることにしました。下記がセットアップ&検証までの情報です。
プログラマの個人能力に影響されず品質を高めるにはどうすべきか? システマチックに自動で品質をチェックして、問題点(既存bug)を指摘してくれるツールがないかと、探しはじめました。 PSAT(the PHP static analysis tool)というツールを発見しましたが、ネットで利用している人は殆ど発見できず、とりあえず実験してみることにしました。下記がセットアップ&検証までの情報です。
- rpmのダウンロード
psat-0.1pre154-1.i386.rpm
※依存関係のある下記パッケージもダウンロードしておく
aterm-2.4.2-1.i586.rpm
sdf2-bundle-2.3.4pre15345-1.i586.rpm
strategoxt-0.17M2pre15559-1.i586.rpm - Linux(Cent OS4.4)にインストール
rpm -ivh aterm-2.4.2-1.i586.rpm
rpm -ivh sdf2-bundle-2.3.4pre15345-1.i586.rpm
rpm -ivh strategoxt-0.17M2pre15559-1.i586.rpm
rpm -ivh psat-0.1pre154-1.i386.rpm - 解析方法
psat -i ***.php
オプション一覧
-l解析するターゲットとなるPHPファイルの指定
-o解析結果を標準出力ではなく、ファイルに吐き出す場合の吐き出し先
-rバージョンの指定(PHP4:4、PHP5:5) - 解析結果内容
target.phpというサンプルを使用
psat -i target.php
1. if ($a) { 2. //何らかの処理を行う 3. } 4. 5. if (isset($a)) { 6. //何らかの処理を行う 7. } /** * PSAT check (Correctness) * If(variable) to check * the initialization of a variable */ if ($a){ } if (isset($a)){ } 処理結果から分かるように、 問題の箇所があった場合(脆弱)にその箇所の直前にコメント分で 問題内容が挿入されるようです。 ライン1のifは変数の正負判断しかしてないために、 ライン5のifと比べて、チェックが甘いといったところでしょうか
- 解析結果内容
targetClass.phpというサンプルを使用
psat -r 4 -i targetClass.php1. class targetClass 2. { 3. public function test() 4. { 5. //何らかの処理を行う 6. } 7. } [ psat | error ] targetClass.php: character 'p' unexpected at line 5, column 5 [ psat | error ] { [ psat | error ] public function test() [ psat | error ] 今回あえて、PHP4では実装されていない、メソッドの アクセス属性"public"をつけ実行してみましが、 今回の処理結果はツールのエラーで終わってしまいました。 ためしに、rオプションをPHP5を指し示す-r 5で 行ってみましたが同じくツールのエラーで終わってしまいました - 結論-psatに関して、まだ実務レベルでは利用するのは難しそうです、今後に期待しましょう
[Trackback URL for this entry]
XML

