1

I have a web application which is running on CakePHP 4.4.4

I have recently started using PHPStan with the codebase running at level 1. This level is specified in our configuration file, phpstan.neon

After generating a baseline with

vendor/bin/phpstan analyse --configuration phpstan.neon src/ tests/ --generate-baseline 

this added approx 80 errors to phpstan-baseline.neon. There was a message saying some errors couldn't be baselined and the advice was to re-run PHPStan.

On running vendor/bin/phpstan analyse src/ --memory-limit=1G it reported 6 errors about a CakePHP class which is being used in a few different files inside src/Command/. One such example is:

Class App\Command\AlertsCommand extends unknown class Cake\Console\Command.

If I open the file it's referring to, src/Command/AlertsCommand.php, we have this:

<?php
namespace App\Command;

use Cake\Console\Command;

class AlertsCommand extends Command
{
    public function initialize(): void
    {
        parent::initialize();
        // ...
    }
 
    // Other functions for this command defined here onwards

}

VSCode red-underlines "Command" (as in extends Command) and a tooltip says

Undefined type 'Cake\Console\Command'

When referring to the CakePHP 4 docs here https://book.cakephp.org/4/en/console-commands/commands.html I noticed it has use Cake\Command\Command; as opposed to use Cake\Console\Command;. I updated this and re-ran PHPStan.

The number of errors increased from 6 to 7 with a message specifically about this change which said:

Ignored error pattern #^App\Command\AlertsCommand::initialize() calls parent::initialize() but App\Command\AlertsCommand does not extend any class.$# in path src/Command/AlertsCommand.php was not matched in reported errors.

This doesn't make any sense. It says - quote - "AlertsCommand does not extend any class" but clearly it does:

class AlertsCommand **extends Command** 

The application itself works so none of the original code - before making the use modification - is stopping anything from working.

1 Answer 1

2

PHPStan tells you:

Ignored error pattern … was not matched in reported errors.

This means you’re ignoring something that’s no longer happening. You can just remove this ignored error from config/baseline.

You can also set reportUnmatchedIgnoredErrors: false and this is not going to be reported. See the documentation: https://phpstan.org/user-guide/ignoring-errors#reporting-unused-ignores

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.