Open eithed opened 3 years ago
cc @caugner who added the --reset functionality here: https://github.com/psalm/psalm-plugin-laravel/pull/170
Hm, I'm experiencing the same issue, where the plugin (or ide-helper) doesn't automatically create @property
annotations for relationships, an adding those annotations manually doesn't solve the issue (because custom PHPDoc is not copied over to the model stubs, as per #170).
Unfortunately this is a dilemma, and the only solution I can see would be if the model stub generation (by ide-helper) would resolve types in existing PHPDoc, or just copied the imports as well. 🤔
@caugner I don't understand what you mean. Didn't you add '--reset' => true,
? This actually prevents the annotations from being copied from the stubs generated by barryvdh/laravel-ide-helper
@eithed So the reason I added '--reset' => true
was that barryvdh/laravel-ide-helper
does not copy the imports corresponding to the annotations, so if you use an imported type in one of your annotations, Psalm will always report that this type does not exist in the namespace of your model (because it doesn't, the import is just missing).
Ah, I see, thank you for the explanation - in my case I've used the class name including namespace hence it would work, but I can see now why that will not always be the case.
I guess the solution is to either:
--reset
(impractical, people won't do this)barryvdh/laravel-ide-helper
psalm/psalm-plugin-laravel
Will try to create a PR for barryvdh/laravel-ide-helper
to expand the annotation to full class name.
Is there any hope this issue can be resolved soon? Sadly, it renders psalm almost unusable for my use case (baked-in phpdoc generated from ide-helper vs generated from psalm-plugin).
@frostfire64 up for a PR?
Is your feature request related to a problem? Please describe. When investigating an issue that was ultimately reported on https://github.com/barryvdh/laravel-ide-helper/issues/1236 I've found that, within psalm plugin,
php artisan ide-helper:models
command is run with'--reset' => true,
parameter, thus removing phpdoc blocks that are provided ie withinModelStubProvider::generateStubFile
:In my case class for which I'm running psalm has following declaration:
(with
Serializer::get
returningmixed
type) and as such will be generated within_ide_helper_models.php
as this:But within
models.stubphp
, because phpdoc is ignored, it'll be generated as this:Currently I don't see any other issues when operating on the
$premium
parameter, but I can imagine that as soon as I'll try to access a property / method that exists on\App\DTO\QuoteGroup\Premium
I'll get a false positive about missing property / method when running analysis for mixed.Describe the solution you'd like
to change to:
Describe alternatives you've considered I don't think there are any alternatives