PHPStan static analysis
October 28, 2022
laravelToday I took the plunge and installed PHPStan, or rather larastan which is a static analysis tool to check code for errors and missing return types.
composer require nunomaduro/larastan:^2.0 --dev
create a rules file called 'phpstan.neon'
includes:
- ./vendor/nunomaduro/larastan/extension.neon
parameters:
paths:
- app/
# Level 9 is the highest level
level: 0
# ignoreErrors:
# - '#PHPDoc tag @var#'
#
# excludePaths:
# - ./*/*/FileToBeExcluded.php
#
# checkMissingIterableValueType: false
So i started at level 0, which is the lowest level and ran it thus:
./vendor/bin/phpstan analyse
and it passed
level 1 was my first failure
so i added
if (!isset($prefix)) {
abort(404);
}
and its green
how cool :)
level 5 started with more errors
so i added a return type for the views
use Illuminate\Contracts\View\View;
class BrandController extends Controller
{
public function index(): View
There was also redirects which needed
use Illuminate\Http\RedirectResponse;
class NWRController extends Controller
{
public function index(Request $request, $id): View|RedirectResponse
I added a few types in the function arguments and it is all green!
Level 8
this error is caused by this code
14 $route = (\Route::current());
16 $data['brand'] = $route->wheres['brand'];
and I am not sure of the solution to this as (string) doesnt work. Any ideas appreciated...
If you would like to contact me with this form on londinium.com, ilminster.net or via Twitter @andylondon