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(); }