LoginSignup
3
1

More than 5 years have passed since last update.

PHP5系のプロジェクトにPhanでの静的解析を導入してみた

Posted at

やりたいこと

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[ファイル名] を指定するとアウトプットを指定ファイルに出力してくれます。

3
1
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
3
1