blog

Java、Scala、PHP、C++、MySQL、Apache、Linux、UnixなどのTechを紹介

« 知って損はない! Webアプリケーションのリリース時に気をつける事 |  Mainへ  | Windowsの80番ポートを占有しているのは誰だ? »
PHP

PHPで品質の高いプログラムを作製するのが、私の夢として持ちつづけている。プログラマの個人能力に影響されず品質を高めるにはどうすべきか? システマチックに自動で品質をチェックして、問題点(既存bug)を指摘してくれるツールがないかと、探してみた。 PSAT(the PHP static analysis tool)というツールを発見したが、ネットで利用している人は殆ど発見できず、とりあえず実験してみた。下記がセットアップ&検証までの情報である

導入方法

  1. rpmのダウンロード

  2. 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
    
  3. 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
    
  4. 解析方法

    psat -i ***.php

    オプション一覧
    
    -l 解析するターゲットとなるPHPファイルの指定
    -o 解析結果を標準出力ではなく、ファイル出力先
    -r バージョンの指定(PHP4:4、PHP5:5) 
    
  5. 解析結果内容

  6. 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と比べて、チェックが甘いといったところだろうか

  7. 解析結果内容(クラスの場合)

  8. targetClass.phpというサンプルを使用

    psat -r 4 -i targetClass.php

    
    1. 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に関して、まだ実務レベルでは利用するのは難しそうだ、今後に期待しよう

 
投稿日:2009/03/03 | カテゴリ:PHP | コメント・TrackBack:(0)



Trackback URL

http://blog.fukaoi.org/2009/03/03/php-psat?tb=y&entry_id=1

コメントはこちらからどうぞ

 
 
 

入力された内容