やりたいこと
PHP7へのバージョンアップに向けて問題箇所の洗い出しを行いたい。
PHPConferenceで紹介されていたPhanを試してみたい。
紹介の詳しい内容は http://inside.pixiv.net/entry/2016/11/11/202656
導入についても参考にさせていただきました!
環境
CentOS6.7
PHP5.6.6
問題点
PhanはPHP7系が必要
やったこと
PHP7を既存のPHP5.6と別に入れる
epel,remiリポジトリを追加してphp7.0とphanで必要となるphp-ast,php-sqlite3を入れます。
$ sudo yum -y install epel-release
$ sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
$ sudo yum install php70 php70-php-ast php70-php-sqlite3 --enablerepo=epel,remi
別で入れたphp7.0は下記のように実行できます。
$ php70 --version
PHP 7.0.13 (cli) (built: Nov 8 2016 21:32:10) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
Phanを入れる
今回はphar形式で導入してみます。
$ curl -L https://github.com/etsy/phan/releases/download/0.6/phan.phar -o phan.phar;
$ php70 phan.phar
エラーが出なければインストールはOKです。
Phanを動かしてみる
設定ファイルを記述する必要があります。
.phan/config.php を作成します。
https://github.com/etsy/phan/wiki/Getting-Started#creating-a-config-file
公式のものを参考に。
解析対象のディレクトリはdirectory_list, 対象から外してほしいディレクトリは exclude_analysis_directory_listにそれぞれ追加します。
$ php70 ~/phan.phar
これで静的解析を実行できます。
また、実行時に -o[ファイル名] を指定するとアウトプットを指定ファイルに出力してくれます。