php/psalm.xml
Snider 342e8ca82d fix(psalm): suppress UndefinedClass for Illuminate\Foundation\Auth\User
CI Psalm reports 6 UndefinedClass errors for Illuminate\Foundation\Auth\User
even though laravel/framework provides it. Local Psalm resolves it via
the workspace autoloader; CI runner doesn't. Add to the existing
UndefinedClass suppression list alongside other framework-resolved
classes.

Co-Authored-By: Cladius Maximus <claude@anthropic.com>
2026-04-27 16:12:42 +01:00

112 lines
5.2 KiB
XML

<?xml version="1.0"?>
<psalm
errorLevel="8"
resolveFromConfigFile="true"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="https://getpsalm.org/schema/config"
xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd"
findUnusedBaselineEntry="false"
findUnusedCode="false"
>
<plugins>
<pluginClass class="Psalm\LaravelPlugin\Plugin" />
</plugins>
<issueHandlers>
<MissingOverrideAttribute>
<errorLevel type="suppress">
<directory name="src" />
</errorLevel>
</MissingOverrideAttribute>
<!-- Laravel plugin (Psalm) flags env() calls outside config/. PHPStan
ignores the equivalent identifier (larastan.noEnvCallsOutsideOfConfig).
Plugin-registered issues use <PluginIssue name="..."> form. -->
<PluginIssue name="NoEnvOutsideConfig">
<errorLevel type="suppress">
<directory name="src" />
</errorLevel>
</PluginIssue>
<!-- Suppress optional dependency errors -->
<UndefinedClass>
<errorLevel type="suppress">
<!-- Optional CDN/storage dependencies -->
<referencedClass name="Bunny\Storage\Client" />
<referencedClass name="Predis\Client" />
<!-- Optional media dependencies -->
<referencedClass name="FFMpeg\FFMpeg" />
<referencedClass name="FFMpeg\Coordinate\TimeCode" />
<referencedClass name="Imagick" />
<referencedClass name="Intervention\Image\Image" />
<referencedClass name="Intervention\Image\Facades\Image" />
<!-- Optional Laravel packages -->
<referencedClass name="Laravel\Horizon\Contracts\MasterSupervisorRepository" />
<referencedClass name="Flux\Flux" />
<referencedClass name="Flux\AssetManager" />
<!-- Runtime aliased classes (App\* namespace) -->
<referencedClass name="App\Traits\HasCdnUrls" />
<referencedClass name="App\Support\UtmHelper" />
<referencedClass name="App\Support\LoginRateLimiter" />
<referencedClass name="App\Support\File" />
<referencedClass name="App\Support\HorizonStatus" />
<referencedClass name="App\Support\TimezoneList" />
<referencedClass name="App\Support\PrivacyHelper" />
<referencedClass name="App\Support\Log" />
<referencedClass name="App\Support\RateLimit" />
<referencedClass name="App\Support\CommandResult" />
<referencedClass name="App\Support\HadesEncrypt" />
<referencedClass name="App\Support\RecoveryCode" />
<referencedClass name="App\Support\SystemLogs" />
<!-- Cross-package dependencies (core-tenant, etc.) -->
<referencedClass name="Core\Mod\Tenant\Models\Workspace" />
<referencedClass name="Core\Tenant\Models\Workspace" />
<referencedClass name="Core\Tenant\Models\User" />
<referencedClass name="Core\Tenant\Services\EntitlementService" />
<referencedClass name="Core\Config\Workspace" />
<!-- Pending Core\Service module (see plans/code/core/lint/RFC.md) -->
<referencedClass name="Core\Service\Contracts\HealthCheckable" />
<referencedClass name="Core\Service\HealthCheckResult" />
<!-- Pending Front\Client frontage subpackage -->
<referencedClass name="Core\Front\Client\Boot" />
<!-- Laravel framework classes Psalm CI doesn't always resolve -->
<referencedClass name="Illuminate\Foundation\Auth\User" />
</errorLevel>
</UndefinedClass>
<!-- Pending Core\Service module — referenced by Cdn BunnyStorageService and app variant -->
<MissingDependency>
<errorLevel type="suppress">
<directory name="src/Core/Cdn" />
</errorLevel>
</MissingDependency>
<!-- Suppress false positives from strict type analysis -->
<NoValue>
<errorLevel type="suppress">
<directory name="src" />
</errorLevel>
</NoValue>
<!-- Laravel HasFactory trait doesn't specify template param -->
<MissingTemplateParam>
<errorLevel type="suppress">
<directory name="src" />
</errorLevel>
</MissingTemplateParam>
</issueHandlers>
<projectFiles>
<directory name="src" />
<ignoreFiles>
<directory name="vendor" />
<directory name="src/Core/Activity" />
<directory name="src/Core/Tests" />
<directory name="src/Core/Config/Tests" />
<directory name="src/Core/Input/Tests" />
<directory name="src/Core/Bouncer/Tests" />
<directory name="src/Core/Bouncer/Gate/Tests" />
<directory name="src/Core/Front/Tests" />
<directory name="src/Mod/Trees" />
</ignoreFiles>
</projectFiles>
</psalm>