Custom Issues
The plugin ships advanced Laravel-aware static analysis checks that extend Psalm’s built-in diagnostics:
- NoEnvOutsideConfig —
env()called outside the application’s config directory - InvalidConsoleArgumentName —
argument()references undefined console command argument - InvalidConsoleOptionName —
option()references undefined console command option - MissingView —
view()references a non-existent Blade template (opt-in) - MissingTranslation —
__()ortrans()references an undefined translation key (opt-in) - ModelMakeDiscouraged —
Model::make()used instead ofnew Model() - OctaneIncompatibleBinding —
singleton()closure resolves a request-scoped service such as Request, Session, or Auth (auto-enabled whenlaravel/octaneis installed) - PublicModelScope —
public#[Scope]Eloquent query scope, whose static call is a runtime fatal (reported at error levels 1 to 4) - PublicModelAccessor —
publiclegacygetXxxAttribute()/setXxxAttribute()accessor or mutator, a pure convention nit (reported at error level 1) - ImplicitQueryBuilderCall — a query builder or local scope method called directly on a model instead of through an explicit
query()entry point (opt-in) - UnknownModelAttribute — a typo’d key passed to a model’s
create()/fill()/update()that matches no known attribute - UnresolvableAppendedModelAttribute — an Eloquent
$appendsentry with no backing accessor or class cast, a runtimeBadMethodCallExceptionontoArray()/toJson() - UndefinedModelRelation — a relation name passed to
with(),load(),has(),whereHas(), and similar methods that does not resolve to a relationship on the model
Each issue page explains what it detects, why it matters, and how to fix it.