Windowsで静的解析ツールPhanを使ってみたので、手順の覚え書き。
環境
- OS: Windows 10
- PHP: 7.4.11
→ PHP7.2以上である必要あり - Phan 4.0.4
→ 今回インストールされたバージョン
手順
ほとんど公式GitHubの
- Getting Started・phan/phan Wiki | GitHub
- Tutorial for Analyzing a Large Sloppy Code Base・phan/phan Wiki | GitHub
辺りに従った内容となります。
1. composerのインストール
phanのインストール方法はいくつかありますが、今回はcomposerを用いました。
未導入の場合は、
Download Composer | getcomposer.org
のComposer-Setup.exe のリンクをクリックして、インストーラをダウンロード。
その後、ウィザードの内容に従ってインストール。
2. php-astのダウンロードと設定
(1) まず、PHPのバージョンを確認します。
> php -v
ast 1.0.10 for Windows | pecl.php.netより、対応バージョンのzipファイルをダウンロード。
Non Thread Safe(NTS)とThread Safe(TS)がありますが、間違った方を選ぶと実行時にエラーになるので、環境にあった方を選択。
自分の場合は、Thread Safe(TS)が正解でした。
(2) 続いて、ダウンロードしたzipファイルを展開し、php_ast.dllをextension_dirに移動させます(他のファイルは配置しなくて大丈夫)。
extension_dirの確認コマンドは以下の通り。
> php -i | findstr /I extension_dir
(3) php.iniに、php-astに関する記述を追記します。
どこにあるか確認したい場合は、ルートフォルダに移動して、dirコマンドで検索。
/sをつけることで、サブディレクトリ込で探してくれます。
> cd /
> dir /s php.ini
php.iniに追記する内容は以下の通り。
extension=php_ast.dll
3. phanのインストールと設定
(1) 任意の場所で、以下のコマンドを実行してphanをインストールします。
専用のフォルダで行うのがよいでしょう。
> composer require --dev "phan/phan:4.x"
(2) 設定ファイルを作成します。
(1) のコマンドを実行したフォルダで以下のコマンドを実行。
--init-levelは、1から5の任意の数字を設定してください。
解析レベルは、1が最も厳密で、5が最少となります。
> vendor\bin\phan --init --init-level=5
今回は最低限でよいので、5をチョイス。
完了すると、同フォルダ配下に、
.phan\config.php
という設定ファイルができあがっています。
(3) 解析対象の設定
(2) で作成された.phan\config.phpを開き、directory_listで検索、その中に解析対象を記入しましょう。
依存関係のあるフォルダ or ファイルも記入します。
解析対象がC:\php\srcで、C:\php\lib配下のファイルに依存している場合は以下の通り。
'directory_list' => [
'C:\php\src',
'C:\php\lib',
'vendor',
],
(4) 解析対象外の設定
解析結果出力対象以外は、exclude_analysis_directory_listに記載しておくことで、除外できます。
今回は、C:\php\srcのみ解析したいので以下の通り記述。
'exclude_analysis_directory_list' => [
'C:\php\lib',
'vendor',
],
4. 解析の実行
解析を実行します。
analyze.txtファイルに解析結果を出力する場合は以下の通り。
> phan -p -o analyze.txt
※コマンド実行でファイルも作成されるので、あらかじめ作っておく必要はありません。
以上!
終わりに
プログラムの整合性チェックや、バージョンアップなどに重宝しそう♪