Phan是一個PHP的靜態分析器,它傾向於最小化誤報。它試圖證實錯誤而不是正確。php
它會查找常見問題,並在類型信息可用或能夠推斷時驗證各類操做的類型兼容性。laravel
astgit
pecl install ast
pcntl.sogithub
## 安裝 composer require --dev phan/phan ## 初始化配置 vendor/bin/phan --init --init-level=3 ## 執行 vendor/bin/phan ## 執行(windows) sh vendor\bin\phan
return [ // 開啓的子進程數量,須要使用pcntl擴展,windows不支持,mac安裝後,能夠修改 'processes' => 1, // 開啓進度條 'progress_bar' => true, // 解析的目錄(包含依賴,依賴須要從exclude剔除) 'directory_list' => [ 'app', 'vendor' // 建議最小化原則,少加載文件 ], // 不須要解析的目錄 'exclude_analysis_directory_list' => [ 'vendor', '.phan', ], // 須要解析的單獨的文件 'file_list' => [], // 須要剔除的文件列表 'exclude_file_list' => [], // 自動加載的內部類庫,通常用於加載擴展stub,下面引入了laravel的stub 'autoload_internal_extension_signatures' => [ 'laravelIdeHelper' => '_ide_helper.php', 'laravelMeta' => '.phpstorm.meta.php' ], ]
suppress
忽略整個方法class D { /** * @suppress PhanUndeclaredClassMethod */ function g() { C::f(); } }
@phan-suppress-current-line
忽略當前行function test_line_suppression() { echo $undef1; // @phan-suppress-current-line PhanUndeclaredVariable echo $undef2 + missingFn(); }
@phan-suppress-next-line
忽略下一行function test_line_suppression() { // @phan-suppress-next-line PhanUndeclaredVariable, PhanUndeclaredFunction echo $undefVar2 + missing_function(); }