基于 Laravel 扩展包 LaraStan 实现对项目代码的静态编译检查
入门安装
LaraStan 是一个封装了 PHPStan(PHP Static Analysis Tool) 的 Laravel 扩展包,这是一个静态代码分析工具,可以帮助我们在运行代码之前排查可能存在的 bug,实现类似 Go、Java 这种静态语言的编译期检查。
目前 LaraStan 需要 PHP 7.1.3+ 环境才能正常运行,对 Laravel 版本的要求是 5.6+,支持最新发布的 Laravel 6.0 版本,下面我们以 laravel6
项目为基础来演示这个扩展包的安装和使用。
和 Telescope 类似,我们一般只会在开发环境使用这个扩展包,所以安装的时候指定了 --dev
选项:
composer require --dev nunomaduro/larastan
基本使用
安装完成后,即可通过如下命令对项目代码进行扫描分析:
默认检查的代码路径是 app
目录,还可以通过 --path
参数指定分析的目录路径:
php artisan code:analyse --paths="app,config"
还可以通过 --level
参数指定检查级别,PHPStan 支持 0-7 八个级别,级别越高越严格,每个级别检查的明细可以去 vendor/phpstan/phpstan/conf
目录下查看,LaraStan 默认级别是 5
,你还可以通过 max
指定使用最高级别(即7
)进行检查:
php artisan code:analyse --level=max
LaraStan 支持多种风格的错误显示格式,比如 checkstyle
、raw
、table
、json
、 prettyJson
,默认使用的是 table
,你可以通过 --error-format
参数进行指定:
php artisan code:analyse --error-format prettyJson
错误显示
当目前为止,我们检查的代码还没有任何问题,现在我们在 routes/web.php
新增如下路由定义:
Route::get('/user', function () {
$user = User::find(1);
dd($user);
});
其中 User
没有通过命名空间引入完整类名,此时运行代码分析命令检查包含 routes
目录的路径:
php artisan code:analyse --paths="app,routes"
结果如下,会显示代码错误信息,既包括之前的代码错误,也包括刚刚新增的代码:
自定义配置文件
除此之外,我们还可以在项目根目录下创建 phpstan.neon
或 phpstan.neon.dist
文件自定义代码分析配置文件,LaraStan 默认使用的是 vendor/nunomaduro/larastan
目录下的 extension.neon
配置文件,自定义的 phpstan.neon
可以在 extension.neon
的基础进行配置:
includes:
- ./vendor/nunomaduro/larastan/extension.neon
parameters:
level: 5
paths:
- src
更多自定义代码分析配置设置请参考 PHPStan 文档。
No Comments