presseportale/app/Models
Kevin Adametz e783adc54e technik: Statische Analyse wieder aussagekräftig machen
phpstan lief mit 390 Meldungen außerhalb der Baseline, der größte Teil davon
Falschmeldungen. Ursache: Larastan löste keinen einzigen Cast auf, weil alle
Models ihre Casts über die casts()-METHODE deklarieren (Laravel-11-Stil).
Laravel führt die erst zur Laufzeit mit $casts zusammen, Larastan instanziiert
Models aber ohne Konstruktor — $pressRelease->status galt deshalb als string
und jeder Enum-Vergleich als "immer falsch". Dafür gibt es den Schalter
parseModelCastsMethod, dessen Larastan-Default false ist.

Zweite Sammelursache waren fehlende Generics an den Relations-Methoden: Ohne
sie landete phpstan auf Illuminate\Database\Eloquent\Model und meldete jede
Modell-Eigenschaft und jeden eigenen Scope als unbekannt. Alle 102
Relationen tragen jetzt ihr @return <Related, $this>; das verbessert
nebenbei die Vervollständigung in der IDE.

Zusammen fällt die Zahl von 390 auf 169. Die neu erzeugte Baseline umfasst 166
Einträge, überwiegend Closure-Parameter, die als blankes Builder typisiert
sind, sowie zwei nachgeprüfte Falschmeldungs-Gruppen: die Concerns unter
app/Livewire werden ausschließlich aus Volt-Komponenten eingebunden, die
phpstan nicht analysiert, und Cashier typisiert findBillable() gegen den TRAIT
Billable, was phpstan nicht mit User vereinbaren kann — die Laufzeitprüfung
dort ist richtig und bleibt.

Was die Analyse an echten toten Zweigen zutage gefördert hat, ist mit
entfernt: eine doppelte Null-Prüfung im Nachweis-PDF, Prüfungen gegen
NOT-NULL-Spalten in der Rechnungsstellung und im Vorschau-Controller, eine
immer wahre Bedingung im Logo-Pfad und in RetireAgencyCompanyType, ein
überflüssiges ?? [] auf einer Symfony-Methode, die immer ein Array liefert,
sowie der unerreichbare null-Arm in publicPortalLinks(). MigrateLegacyMedia
deklariert seine Medientypen jetzt als Literal-Union, womit das match ohne
default nachweislich vollständig ist statt nur faktisch.

Damit das nicht wieder abdriftet — die Baseline stand seit Mai unverändert —
läuft die Analyse ab jetzt als eigener Schritt in der Test-Pipeline.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-01 11:07:51 +00:00
..
Concerns press-releases: Publish-Rechte, Quota-Races & Slug vereinheitlichen 2026-07-14 13:47:51 +00:00
ActivityEvent.php technik: Statische Analyse wieder aussagekräftig machen 2026-09-01 11:07:51 +00:00
AdminPreset.php 12-05-2026 Frontend dev 2026-05-12 18:32:33 +02:00
ApiUsageLog.php technik: Statische Analyse wieder aussagekräftig machen 2026-09-01 11:07:51 +00:00
AppSetting.php technik: Aufrufe über ein Ereignis-Log zählen statt im Request 2026-09-01 11:05:28 +00:00
BillingAddress.php technik: Statische Analyse wieder aussagekräftig machen 2026-09-01 11:07:51 +00:00
BookingConfirmation.php technik: Statische Analyse wieder aussagekräftig machen 2026-09-01 11:07:51 +00:00
Boost.php technik: Statische Analyse wieder aussagekräftig machen 2026-09-01 11:07:51 +00:00
Category.php technik: Statische Analyse wieder aussagekräftig machen 2026-09-01 11:07:51 +00:00
CategoryTranslation.php technik: Statische Analyse wieder aussagekräftig machen 2026-09-01 11:07:51 +00:00
Company.php technik: Statische Analyse wieder aussagekräftig machen 2026-09-01 11:07:51 +00:00
Contact.php technik: Statische Analyse wieder aussagekräftig machen 2026-09-01 11:07:51 +00:00
ContactMessage.php technik: Statische Analyse wieder aussagekräftig machen 2026-09-01 11:07:51 +00:00
CreditTopup.php technik: Statische Analyse wieder aussagekräftig machen 2026-09-01 11:07:51 +00:00
CreditTransaction.php technik: Statische Analyse wieder aussagekräftig machen 2026-09-01 11:07:51 +00:00
CreditWallet.php technik: Statische Analyse wieder aussagekräftig machen 2026-09-01 11:07:51 +00:00
EmailNotificationOptOut.php technik: Statische Analyse wieder aussagekräftig machen 2026-09-01 11:07:51 +00:00
FooterCode.php technik: Statische Analyse wieder aussagekräftig machen 2026-09-01 11:07:51 +00:00
Invoice.php technik: Statische Analyse wieder aussagekräftig machen 2026-09-01 11:07:51 +00:00
InvoiceBillingAddress.php technik: Statische Analyse wieder aussagekräftig machen 2026-09-01 11:07:51 +00:00
KiAudit.php technik: Statische Analyse wieder aussagekräftig machen 2026-09-01 11:07:51 +00:00
LegacyImportMap.php 12-05-2026 Frontend dev 2026-05-12 18:32:33 +02:00
LegacyInvoice.php technik: Statische Analyse wieder aussagekräftig machen 2026-09-01 11:07:51 +00:00
LegalDocument.php E3: Rechtstext-Versionierung in der DB (legal_documents) 2026-07-06 09:21:52 +00:00
LegalRequest.php technik: Statische Analyse wieder aussagekräftig machen 2026-09-01 11:07:51 +00:00
MagicLink.php technik: Statische Analyse wieder aussagekräftig machen 2026-09-01 11:07:51 +00:00
NewsletterCampaign.php technik: Statische Analyse wieder aussagekräftig machen 2026-09-01 11:07:51 +00:00
NewsletterCampaignRecipient.php technik: Statische Analyse wieder aussagekräftig machen 2026-09-01 11:07:51 +00:00
NewsletterSubscription.php technik: Statische Analyse wieder aussagekräftig machen 2026-09-01 11:07:51 +00:00
PaymentOption.php technik: Statische Analyse wieder aussagekräftig machen 2026-09-01 11:07:51 +00:00
PaymentOptionTranslation.php technik: Statische Analyse wieder aussagekräftig machen 2026-09-01 11:07:51 +00:00
Plan.php Paket-Vorteile: dynamische, im Admin pflegbare Vorteilsliste je Tarif 2026-06-18 16:36:09 +00:00
PressRelease.php technik: Statische Analyse wieder aussagekräftig machen 2026-09-01 11:07:51 +00:00
PressReleaseAiDeclaration.php technik: Statische Analyse wieder aussagekräftig machen 2026-09-01 11:07:51 +00:00
PressReleaseAttachment.php technik: Statische Analyse wieder aussagekräftig machen 2026-09-01 11:07:51 +00:00
PressReleaseEvent.php PM-Tracking: Ereignis-Log fuer Aufrufe + Shares (press_release_events) 2026-07-10 09:56:42 +00:00
PressReleaseImage.php technik: Statische Analyse wieder aussagekräftig machen 2026-09-01 11:07:51 +00:00
PressReleaseRedactionSnapshot.php technik: Statische Analyse wieder aussagekräftig machen 2026-09-01 11:07:51 +00:00
PressReleaseSearchIndex.php technik: Volltext-Indizes von press_releases in eine eigene Suchtabelle auslagern 2026-09-01 11:04:43 +00:00
PressReleaseStatusLog.php technik: Statische Analyse wieder aussagekräftig machen 2026-09-01 11:07:51 +00:00
Profile.php technik: Statische Analyse wieder aussagekräftig machen 2026-09-01 11:07:51 +00:00
RejectionCategory.php Ablehnungskategorien live aus der DB (rejection_categories) 2026-07-06 09:25:16 +00:00
ReviewCheck.php technik: Statische Analyse wieder aussagekräftig machen 2026-09-01 11:07:51 +00:00
SinglePurchase.php technik: Statische Analyse wieder aussagekräftig machen 2026-09-01 11:07:51 +00:00
TerminationRequest.php Recht: Kuendigungsbutton nach Par. 312k BGB - Backend + Admin-Queue 2026-07-03 11:32:43 +00:00
User.php technik: Statische Analyse wieder aussagekräftig machen 2026-09-01 11:07:51 +00:00
UserFilterPreset.php technik: Statische Analyse wieder aussagekräftig machen 2026-09-01 11:07:51 +00:00
UserPayment.php technik: Statische Analyse wieder aussagekräftig machen 2026-09-01 11:07:51 +00:00
UserPaymentOption.php technik: Statische Analyse wieder aussagekräftig machen 2026-09-01 11:07:51 +00:00
WithdrawalRequest.php Admin: Widerrufe laufen in der Recht-&-Compliance-Queue auf 2026-07-03 10:29:32 +00:00