Audit: dev/sicherheit/SICHERHEITSAUDIT-2026-10-07.md, Plan und Entscheidungen: dev/sicherheit/ENTWICKLUNGSPLAN-SICHERHEIT-2026-10-07.md. - S-01 Legacy-Rechnungen fremder Kunden nur mit billing:manage (auch Kundenroute). - S-02 Kontaktzuordnung auf der Firmenanzeige verlangt companies:write, $id gesperrt. - S-03 CompanyMembershipObserver: automatische Firmenrechte werden bei jeder Adress-/Zuordnungsänderung sofort neu bewertet; memberships:resync-auto. - S-04 Passwortwechsel beendet alle anderen Sessions (PasswordChanger), Reset alle Sessions und offene Login-Links; Fortify PUT /user/password abgeschaltet. API-Tokens bleiben bestehen. - S-05 Google: email_verified Pflicht, feste Bindung über die Provider-ID; Erstverknüpfung bestehender Konten außerhalb gmail/hd nur per Bestätigungslink in derselben Browser-Session. - S-06 Frischer Identitätsnachweis (Passwort, App-Code, E-Mail-Code oder Passkey) vor E-Mail-Wechsel, erster 2FA-Einrichtung und Token-Erzeugung; Hinweis-Mails an die (bisherige) Kontoadresse. - Entscheidung 5: Passkeys (Fortify, @laravel/passkeys) für alle; Super-Admins und Admins bestätigen die Session für den Admin-Bereich per Passkey oder App-Code (EnsureStrongAdminAuthentication, Notfallschalter AUTH_REQUIRE_STRONG_ADMIN); Reset des zweiten Faktors durch Super-Admins. Neue Migration: create_passkeys_table. Suite 2.403 grün (1 übersprungen), Larastan ohne Meldung. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
859 lines
31 KiB
Text
859 lines
31 KiB
Text
parameters:
|
|
ignoreErrors:
|
|
-
|
|
message: '#^Expression on left side of \?\? is not nullable\.$#'
|
|
identifier: nullCoalesce.expr
|
|
count: 1
|
|
path: app/Console/Commands/FixLegacyTimestamps.php
|
|
|
|
-
|
|
message: '#^Using nullsafe property access on non\-nullable type App\\Enums\\Portal\. Use \-\> instead\.$#'
|
|
identifier: nullsafe.neverNull
|
|
count: 1
|
|
path: app/Console/Commands/MigrateLegacyAgencyNames.php
|
|
|
|
-
|
|
message: '#^Offset ''priority'' on array\{path\: string, priority\: 0\|10\|20\|30\|40\|50\} on left side of \?\? always exists and is not nullable\.$#'
|
|
identifier: nullCoalesce.offset
|
|
count: 1
|
|
path: app/Console/Commands/MigrateLegacyMedia.php
|
|
|
|
-
|
|
message: '#^Call to static method chunk\(\) on an unknown class App\\Models\\Legacy\\Presseecho\\Article\.$#'
|
|
identifier: class.notFound
|
|
count: 1
|
|
path: app/Console/Commands/MigratePresseData.php
|
|
|
|
-
|
|
message: '#^Call to static method chunk\(\) on an unknown class App\\Models\\Legacy\\Presseecho\\User\.$#'
|
|
identifier: class.notFound
|
|
count: 1
|
|
path: app/Console/Commands/MigratePresseData.php
|
|
|
|
-
|
|
message: '#^Call to static method count\(\) on an unknown class App\\Models\\Legacy\\Presseecho\\Article\.$#'
|
|
identifier: class.notFound
|
|
count: 1
|
|
path: app/Console/Commands/MigratePresseData.php
|
|
|
|
-
|
|
message: '#^Call to static method count\(\) on an unknown class App\\Models\\Legacy\\Presseecho\\User\.$#'
|
|
identifier: class.notFound
|
|
count: 1
|
|
path: app/Console/Commands/MigratePresseData.php
|
|
|
|
-
|
|
message: '#^Call to static method create\(\) on an unknown class App\\Models\\Article\.$#'
|
|
identifier: class.notFound
|
|
count: 1
|
|
path: app/Console/Commands/MigratePresseData.php
|
|
|
|
-
|
|
message: '#^Call to static method where\(\) on an unknown class App\\Models\\Brand\.$#'
|
|
identifier: class.notFound
|
|
count: 1
|
|
path: app/Console/Commands/MigratePresseData.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property App\\Models\\Company\:\:\$has_contacts\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: app/Console/Commands/RetireAgencyCompanyType.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property App\\Models\\Company\:\:\$has_payment_option_links\.$#'
|
|
identifier: property.notFound
|
|
count: 2
|
|
path: app/Console/Commands/RetireAgencyCompanyType.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property App\\Models\\Company\:\:\$has_press_releases\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: app/Console/Commands/RetireAgencyCompanyType.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property App\\Models\\Company\:\:\$has_third_party_members\.$#'
|
|
identifier: property.notFound
|
|
count: 2
|
|
path: app/Console/Commands/RetireAgencyCompanyType.php
|
|
|
|
-
|
|
message: '#^Using nullsafe property access on non\-nullable type App\\Enums\\Portal\. Use \-\> instead\.$#'
|
|
identifier: nullsafe.neverNull
|
|
count: 1
|
|
path: app/Console/Commands/RetireAgencyCompanyType.php
|
|
|
|
-
|
|
message: '#^Using nullsafe property access "\?\-\>legacy_id" on left side of \?\? is unnecessary\. Use \-\> instead\.$#'
|
|
identifier: nullsafe.neverNull
|
|
count: 1
|
|
path: app/Console/Commands/SeedLegacyApiTestdata.php
|
|
|
|
-
|
|
message: '#^Using nullsafe property access on non\-nullable type App\\Enums\\Portal\. Use \-\> instead\.$#'
|
|
identifier: nullsafe.neverNull
|
|
count: 1
|
|
path: app/Http/Controllers/Api/Legacy/LegacyContactController.php
|
|
|
|
-
|
|
message: '#^Using nullsafe property access on non\-nullable type App\\Enums\\Portal\. Use \-\> instead\.$#'
|
|
identifier: nullsafe.neverNull
|
|
count: 1
|
|
path: app/Http/Controllers/Api/Legacy/LegacyPressReleaseController.php
|
|
|
|
-
|
|
message: '#^Instanceof between App\\Enums\\PressReleaseStatus and App\\Enums\\PressReleaseStatus will always evaluate to true\.$#'
|
|
identifier: instanceof.alwaysTrue
|
|
count: 1
|
|
path: app/Http/Controllers/Api/V1/PressReleaseImageController.php
|
|
|
|
-
|
|
message: '#^Method App\\Http\\Controllers\\Auth\\GoogleController\:\:redirect\(\) should return Illuminate\\Http\\RedirectResponse but returns Symfony\\Component\\HttpFoundation\\RedirectResponse\.$#'
|
|
identifier: return.type
|
|
count: 1
|
|
path: app/Http/Controllers/Auth/GoogleController.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property Laravel\\Cashier\\Payment\:\:\$id\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: app/Http/Controllers/CheckoutController.php
|
|
|
|
-
|
|
message: '#^Using nullsafe property access on non\-nullable type App\\Enums\\Portal\. Use \-\> instead\.$#'
|
|
identifier: nullsafe.neverNull
|
|
count: 1
|
|
path: app/Http/Controllers/LegalRequestController.php
|
|
|
|
-
|
|
message: '#^Using nullsafe property access on non\-nullable type App\\Enums\\Portal\. Use \-\> instead\.$#'
|
|
identifier: nullsafe.neverNull
|
|
count: 1
|
|
path: app/Http/Controllers/Web/PressReleaseReportController.php
|
|
|
|
-
|
|
message: '#^Using nullsafe property access "\?\-\>value" on left side of \?\? is unnecessary\. Use \-\> instead\.$#'
|
|
identifier: nullsafe.neverNull
|
|
count: 1
|
|
path: app/Http/Controllers/Web/ReportFormController.php
|
|
|
|
-
|
|
message: '#^Call to function method_exists\(\) with Laravel\\Sanctum\\PersonalAccessToken and ''getKey'' will always evaluate to true\.$#'
|
|
identifier: function.alreadyNarrowedType
|
|
count: 1
|
|
path: app/Http/Middleware/EnsureApiTokenRateLimit.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property App\\Http\\Resources\\CategoryResource\:\:\$id\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: app/Http/Resources/CategoryResource.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property App\\Http\\Resources\\CategoryResource\:\:\$is_active\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: app/Http/Resources/CategoryResource.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property App\\Http\\Resources\\CategoryResource\:\:\$legacy_id\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: app/Http/Resources/CategoryResource.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property App\\Http\\Resources\\CategoryResource\:\:\$legacy_portal\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: app/Http/Resources/CategoryResource.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property App\\Http\\Resources\\CategoryResource\:\:\$portal\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: app/Http/Resources/CategoryResource.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property App\\Http\\Resources\\CategoryResource\:\:\$translations\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: app/Http/Resources/CategoryResource.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property App\\Http\\Resources\\CompanyResource\:\:\$country_code\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: app/Http/Resources/CompanyResource.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property App\\Http\\Resources\\CompanyResource\:\:\$created_at\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: app/Http/Resources/CompanyResource.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property App\\Http\\Resources\\CompanyResource\:\:\$email\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: app/Http/Resources/CompanyResource.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property App\\Http\\Resources\\CompanyResource\:\:\$id\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: app/Http/Resources/CompanyResource.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property App\\Http\\Resources\\CompanyResource\:\:\$is_active\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: app/Http/Resources/CompanyResource.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property App\\Http\\Resources\\CompanyResource\:\:\$legacy_id\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: app/Http/Resources/CompanyResource.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property App\\Http\\Resources\\CompanyResource\:\:\$legacy_portal\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: app/Http/Resources/CompanyResource.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property App\\Http\\Resources\\CompanyResource\:\:\$name\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: app/Http/Resources/CompanyResource.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property App\\Http\\Resources\\CompanyResource\:\:\$phone\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: app/Http/Resources/CompanyResource.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property App\\Http\\Resources\\CompanyResource\:\:\$portal\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: app/Http/Resources/CompanyResource.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property App\\Http\\Resources\\CompanyResource\:\:\$slug\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: app/Http/Resources/CompanyResource.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property App\\Http\\Resources\\CompanyResource\:\:\$type\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: app/Http/Resources/CompanyResource.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property App\\Http\\Resources\\CompanyResource\:\:\$updated_at\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: app/Http/Resources/CompanyResource.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property App\\Http\\Resources\\CompanyResource\:\:\$website\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: app/Http/Resources/CompanyResource.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property App\\Http\\Resources\\PressReleaseResource\:\:\$backlink_url\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: app/Http/Resources/PressReleaseResource.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property App\\Http\\Resources\\PressReleaseResource\:\:\$created_at\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: app/Http/Resources/PressReleaseResource.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property App\\Http\\Resources\\PressReleaseResource\:\:\$hits\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: app/Http/Resources/PressReleaseResource.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property App\\Http\\Resources\\PressReleaseResource\:\:\$id\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: app/Http/Resources/PressReleaseResource.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property App\\Http\\Resources\\PressReleaseResource\:\:\$keywords\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: app/Http/Resources/PressReleaseResource.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property App\\Http\\Resources\\PressReleaseResource\:\:\$language\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: app/Http/Resources/PressReleaseResource.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property App\\Http\\Resources\\PressReleaseResource\:\:\$legacy_id\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: app/Http/Resources/PressReleaseResource.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property App\\Http\\Resources\\PressReleaseResource\:\:\$legacy_portal\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: app/Http/Resources/PressReleaseResource.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property App\\Http\\Resources\\PressReleaseResource\:\:\$no_export\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: app/Http/Resources/PressReleaseResource.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property App\\Http\\Resources\\PressReleaseResource\:\:\$portal\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: app/Http/Resources/PressReleaseResource.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property App\\Http\\Resources\\PressReleaseResource\:\:\$published_at\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: app/Http/Resources/PressReleaseResource.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property App\\Http\\Resources\\PressReleaseResource\:\:\$slug\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: app/Http/Resources/PressReleaseResource.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property App\\Http\\Resources\\PressReleaseResource\:\:\$status\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: app/Http/Resources/PressReleaseResource.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property App\\Http\\Resources\\PressReleaseResource\:\:\$teaser_begin\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: app/Http/Resources/PressReleaseResource.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property App\\Http\\Resources\\PressReleaseResource\:\:\$teaser_end\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: app/Http/Resources/PressReleaseResource.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property App\\Http\\Resources\\PressReleaseResource\:\:\$text\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: app/Http/Resources/PressReleaseResource.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property App\\Http\\Resources\\PressReleaseResource\:\:\$title\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: app/Http/Resources/PressReleaseResource.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property App\\Http\\Resources\\PressReleaseResource\:\:\$updated_at\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: app/Http/Resources/PressReleaseResource.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property App\\Http\\Resources\\PressReleaseResource\:\:\$uuid\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: app/Http/Resources/PressReleaseResource.php
|
|
|
|
-
|
|
message: '#^Instanceof between Illuminate\\Http\\Request and Illuminate\\Http\\Request will always evaluate to true\.$#'
|
|
identifier: instanceof.alwaysTrue
|
|
count: 1
|
|
path: app/Http/Responses/RoleAwareLoginResponse.php
|
|
|
|
-
|
|
message: '#^Instanceof between Laravel\\Cashier\\Billable\|null and App\\Models\\User will always evaluate to false\.$#'
|
|
identifier: instanceof.alwaysFalse
|
|
count: 3
|
|
path: app/Listeners/ProcessStripeWebhook.php
|
|
|
|
-
|
|
message: '#^Method App\\Listeners\\ProcessStripeWebhook\:\:localSubscription\(\) is unused\.$#'
|
|
identifier: method.unused
|
|
count: 1
|
|
path: app/Listeners/ProcessStripeWebhook.php
|
|
|
|
-
|
|
message: '#^Method App\\Listeners\\ProcessStripeWebhook\:\:snapshotAddress\(\) is unused\.$#'
|
|
identifier: method.unused
|
|
count: 1
|
|
path: app/Listeners/ProcessStripeWebhook.php
|
|
|
|
-
|
|
message: '#^Property App\\Listeners\\ProcessStripeWebhook\:\:\$activityLog is never read, only written\.$#'
|
|
identifier: property.onlyWritten
|
|
count: 1
|
|
path: app/Listeners/ProcessStripeWebhook.php
|
|
|
|
-
|
|
message: '#^Property App\\Listeners\\ProcessStripeWebhook\:\:\$numbers is never read, only written\.$#'
|
|
identifier: property.onlyWritten
|
|
count: 1
|
|
path: app/Listeners/ProcessStripeWebhook.php
|
|
|
|
-
|
|
message: '#^Unreachable statement \- code above always terminates\.$#'
|
|
identifier: deadCode.unreachable
|
|
count: 3
|
|
path: app/Listeners/ProcessStripeWebhook.php
|
|
|
|
-
|
|
message: '#^Using nullsafe property access "\?\-\>address1" on left side of \?\? is unnecessary\. Use \-\> instead\.$#'
|
|
identifier: nullsafe.neverNull
|
|
count: 1
|
|
path: app/Listeners/ProcessStripeWebhook.php
|
|
|
|
-
|
|
message: '#^Using nullsafe property access "\?\-\>city" on left side of \?\? is unnecessary\. Use \-\> instead\.$#'
|
|
identifier: nullsafe.neverNull
|
|
count: 1
|
|
path: app/Listeners/ProcessStripeWebhook.php
|
|
|
|
-
|
|
message: '#^Using nullsafe property access "\?\-\>country_code" on left side of \?\? is unnecessary\. Use \-\> instead\.$#'
|
|
identifier: nullsafe.neverNull
|
|
count: 1
|
|
path: app/Listeners/ProcessStripeWebhook.php
|
|
|
|
-
|
|
message: '#^Using nullsafe property access "\?\-\>name" on left side of \?\? is unnecessary\. Use \-\> instead\.$#'
|
|
identifier: nullsafe.neverNull
|
|
count: 1
|
|
path: app/Listeners/ProcessStripeWebhook.php
|
|
|
|
-
|
|
message: '#^Using nullsafe property access "\?\-\>postal_code" on left side of \?\? is unnecessary\. Use \-\> instead\.$#'
|
|
identifier: nullsafe.neverNull
|
|
count: 1
|
|
path: app/Listeners/ProcessStripeWebhook.php
|
|
|
|
-
|
|
message: '#^Using nullsafe property access "\?\-\>name" on left side of \?\? is unnecessary\. Use \-\> instead\.$#'
|
|
identifier: nullsafe.neverNull
|
|
count: 1
|
|
path: app/Listeners/RecordMailActivity.php
|
|
|
|
-
|
|
message: '#^Trait App\\Livewire\\Concerns\\ConfirmsIdentity is used zero times and is not analysed\.$#'
|
|
identifier: trait.unused
|
|
count: 1
|
|
path: app/Livewire/Concerns/ConfirmsIdentity.php
|
|
|
|
-
|
|
message: '#^Trait App\\Livewire\\Concerns\\HandlesAdminPressReleaseActions is used zero times and is not analysed\.$#'
|
|
identifier: trait.unused
|
|
count: 1
|
|
path: app/Livewire/Concerns/HandlesAdminPressReleaseActions.php
|
|
|
|
-
|
|
message: '#^Trait App\\Livewire\\Concerns\\HasFullTextSearch is used zero times and is not analysed\.$#'
|
|
identifier: trait.unused
|
|
count: 1
|
|
path: app/Livewire/Concerns/HasFullTextSearch.php
|
|
|
|
-
|
|
message: '#^Trait App\\Livewire\\Concerns\\HasSortableTable is used zero times and is not analysed\.$#'
|
|
identifier: trait.unused
|
|
count: 1
|
|
path: app/Livewire/Concerns/HasSortableTable.php
|
|
|
|
-
|
|
message: '#^Trait App\\Livewire\\Concerns\\InteractsWithAiDeclaration is used zero times and is not analysed\.$#'
|
|
identifier: trait.unused
|
|
count: 1
|
|
path: app/Livewire/Concerns/InteractsWithAiDeclaration.php
|
|
|
|
-
|
|
message: '#^Trait App\\Livewire\\Concerns\\InteractsWithPressReleaseContacts is used zero times and is not analysed\.$#'
|
|
identifier: trait.unused
|
|
count: 1
|
|
path: app/Livewire/Concerns/InteractsWithPressReleaseContacts.php
|
|
|
|
-
|
|
message: '#^Trait App\\Livewire\\Concerns\\InteractsWithPressReleaseScheduling is used zero times and is not analysed\.$#'
|
|
identifier: trait.unused
|
|
count: 1
|
|
path: app/Livewire/Concerns/InteractsWithPressReleaseScheduling.php
|
|
|
|
-
|
|
message: '#^Trait App\\Livewire\\Concerns\\InteractsWithPressReleaseTags is used zero times and is not analysed\.$#'
|
|
identifier: trait.unused
|
|
count: 1
|
|
path: app/Livewire/Concerns/InteractsWithPressReleaseTags.php
|
|
|
|
-
|
|
message: '#^Trait App\\Livewire\\Concerns\\ProvidesPressReleaseFormRules is used zero times and is not analysed\.$#'
|
|
identifier: trait.unused
|
|
count: 1
|
|
path: app/Livewire/Concerns/ProvidesPressReleaseFormRules.php
|
|
|
|
-
|
|
message: '#^Trait App\\Livewire\\Concerns\\ProvidesPressReleasePresubmitChecks is used zero times and is not analysed\.$#'
|
|
identifier: trait.unused
|
|
count: 1
|
|
path: app/Livewire/Concerns/ProvidesPressReleasePresubmitChecks.php
|
|
|
|
-
|
|
message: '#^Trait App\\Livewire\\Concerns\\ProvidesUserFormRules is used zero times and is not analysed\.$#'
|
|
identifier: trait.unused
|
|
count: 1
|
|
path: app/Livewire/Concerns/ProvidesUserFormRules.php
|
|
|
|
-
|
|
message: '#^Using nullsafe property access "\?\-\>name" on left side of \?\? is unnecessary\. Use \-\> instead\.$#'
|
|
identifier: nullsafe.neverNull
|
|
count: 1
|
|
path: app/Models/Category.php
|
|
|
|
-
|
|
message: '#^Using nullsafe property access on non\-nullable type App\\Enums\\Portal\. Use \-\> instead\.$#'
|
|
identifier: nullsafe.neverNull
|
|
count: 1
|
|
path: app/Models/Company.php
|
|
|
|
-
|
|
message: '#^Using nullsafe property access "\?\-\>version" on left side of \?\? is unnecessary\. Use \-\> instead\.$#'
|
|
identifier: nullsafe.neverNull
|
|
count: 1
|
|
path: app/Models/LegalDocument.php
|
|
|
|
-
|
|
message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Builder\:\:forPlacement\(\)\.$#'
|
|
identifier: method.notFound
|
|
count: 1
|
|
path: app/Models/PressRelease.php
|
|
|
|
-
|
|
message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Builder\:\:published\(\)\.$#'
|
|
identifier: method.notFound
|
|
count: 1
|
|
path: app/Models/PressRelease.php
|
|
|
|
-
|
|
message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Builder\<Illuminate\\Database\\Eloquent\\Model\>\:\:active\(\)\.$#'
|
|
identifier: method.notFound
|
|
count: 1
|
|
path: app/Models/PressRelease.php
|
|
|
|
-
|
|
message: '#^Method App\\Models\\PressRelease\:\:embargoAtLocal\(\) should return Illuminate\\Support\\Carbon\|null but returns Carbon\\Carbon\|null\.$#'
|
|
identifier: return.type
|
|
count: 1
|
|
path: app/Models/PressRelease.php
|
|
|
|
-
|
|
message: '#^Method App\\Models\\PressRelease\:\:scheduledAtLocal\(\) should return Illuminate\\Support\\Carbon\|null but returns Carbon\\Carbon\|null\.$#'
|
|
identifier: return.type
|
|
count: 1
|
|
path: app/Models/PressRelease.php
|
|
|
|
-
|
|
message: '#^Using nullsafe property access "\?\-\>balance_credits" on left side of \?\? is unnecessary\. Use \-\> instead\.$#'
|
|
identifier: nullsafe.neverNull
|
|
count: 1
|
|
path: app/Models/User.php
|
|
|
|
-
|
|
message: '#^Using nullsafe property access "\?\-\>press_release_quota" on left side of \?\? is unnecessary\. Use \-\> instead\.$#'
|
|
identifier: nullsafe.neverNull
|
|
count: 2
|
|
path: app/Models/User.php
|
|
|
|
-
|
|
message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Builder\:\:grandfatheredNow\(\)\.$#'
|
|
identifier: method.notFound
|
|
count: 1
|
|
path: app/Models/UserPaymentOption.php
|
|
|
|
-
|
|
message: '#^Method App\\Services\\Admin\\AdminSlowRequestReporter\:\:entries\(\) should return Illuminate\\Support\\Collection\<int, array\<string, mixed\>\> but returns Illuminate\\Support\\Collection\<int, non\-empty\-array\<string, mixed\>\>\.$#'
|
|
identifier: return.type
|
|
count: 1
|
|
path: app/Services/Admin/AdminSlowRequestReporter.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$requests\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: app/Services/Api/ApiUsageReporter.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$value\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: app/Services/Api/ApiUsageReporter.php
|
|
|
|
-
|
|
message: '#^Using nullsafe method call on non\-nullable type Carbon\\Carbon\. Use \-\> instead\.$#'
|
|
identifier: nullsafe.neverNull
|
|
count: 1
|
|
path: app/Services/Api/ApiUsageReporter.php
|
|
|
|
-
|
|
message: '#^Offset ''status'' on array\{0\: non\-falsy\-string, client_ip\: non\-empty\-string, 1\: non\-empty\-string, method\: ''DELETE''\|''GET''\|''HEAD''\|''OPTIONS''\|''PATCH''\|''POST''\|''PUT'', 2\: ''DELETE''\|''GET''\|''HEAD''\|''OPTIONS''\|''PATCH''\|''POST''\|''PUT'', target\: non\-empty\-string, 3\: non\-empty\-string, status\: non\-falsy\-string&numeric\-string, \.\.\.\} on left side of \?\? always exists and is not nullable\.$#'
|
|
identifier: nullCoalesce.offset
|
|
count: 1
|
|
path: app/Services/Api/LegacyApiAccessLogAnalyzer.php
|
|
|
|
-
|
|
message: '#^Using nullsafe property access on non\-nullable type App\\Enums\\Portal\. Use \-\> instead\.$#'
|
|
identifier: nullsafe.neverNull
|
|
count: 2
|
|
path: app/Services/Api/LegacyApiCustomerReporter.php
|
|
|
|
-
|
|
message: '#^Using nullsafe property access on non\-nullable type App\\Enums\\RegistrationType\. Use \-\> instead\.$#'
|
|
identifier: nullsafe.neverNull
|
|
count: 1
|
|
path: app/Services/Api/LegacyApiCustomerReporter.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Relations\\Pivot\:\:\$role\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: app/Services/Auth/ContactAccessService.php
|
|
|
|
-
|
|
message: '#^Using nullsafe property access "\?\-\>id" on left side of \?\? is unnecessary\. Use \-\> instead\.$#'
|
|
identifier: nullsafe.neverNull
|
|
count: 1
|
|
path: app/Services/Auth/MagicLinkGenerator.php
|
|
|
|
-
|
|
message: '#^Using nullsafe property access "\?\-\>currency" on left side of \?\? is unnecessary\. Use \-\> instead\.$#'
|
|
identifier: nullsafe.neverNull
|
|
count: 1
|
|
path: app/Services/Billing/ManualInvoiceService.php
|
|
|
|
-
|
|
message: '#^Using nullsafe property access "\?\-\>price_cents" on left side of \?\? is unnecessary\. Use \-\> instead\.$#'
|
|
identifier: nullsafe.neverNull
|
|
count: 1
|
|
path: app/Services/Billing/ManualInvoiceService.php
|
|
|
|
-
|
|
message: '#^Access to property \$id on an unknown class Laravel\\Cashier\\Concerns\\Stripe\\TaxId\.$#'
|
|
identifier: class.notFound
|
|
count: 1
|
|
path: app/Services/Billing/StripeCheckoutService.php
|
|
|
|
-
|
|
message: '#^Access to property \$type on an unknown class Laravel\\Cashier\\Concerns\\Stripe\\TaxId\.$#'
|
|
identifier: class.notFound
|
|
count: 1
|
|
path: app/Services/Billing/StripeCheckoutService.php
|
|
|
|
-
|
|
message: '#^Access to property \$value on an unknown class Laravel\\Cashier\\Concerns\\Stripe\\TaxId\.$#'
|
|
identifier: class.notFound
|
|
count: 1
|
|
path: app/Services/Billing/StripeCheckoutService.php
|
|
|
|
-
|
|
message: '#^Using nullsafe property access "\?\-\>timestamp" on left side of \?\? is unnecessary\. Use \-\> instead\.$#'
|
|
identifier: nullsafe.neverNull
|
|
count: 1
|
|
path: app/Services/Billing/SubscriptionPeriodResolver.php
|
|
|
|
-
|
|
message: '#^Unsafe access to private property App\\Services\\CurrentPortalContext\:\:\$portal through static\:\:\.$#'
|
|
identifier: staticClassAccess.privateProperty
|
|
count: 4
|
|
path: app/Services/CurrentPortalContext.php
|
|
|
|
-
|
|
message: '#^Using nullsafe property access "\?\-\>role" on left side of \?\? is unnecessary\. Use \-\> instead\.$#'
|
|
identifier: nullsafe.neverNull
|
|
count: 1
|
|
path: app/Services/Customer/CustomerCompanyContext.php
|
|
|
|
-
|
|
message: '#^Offset ''filename'' on array\{dirname\?\: string, basename\: string, extension\?\: string, filename\: string\} on left side of \?\? always exists and is not nullable\.$#'
|
|
identifier: nullCoalesce.offset
|
|
count: 1
|
|
path: app/Services/Image/ImageService.php
|
|
|
|
-
|
|
message: '#^Using nullsafe property access "\?\-\>slug" on left side of \?\? is unnecessary\. Use \-\> instead\.$#'
|
|
identifier: nullsafe.neverNull
|
|
count: 1
|
|
path: app/Services/Import/PressReleaseImporter.php
|
|
|
|
-
|
|
message: '#^Using nullsafe property access "\?\-\>uuid" on left side of \?\? is unnecessary\. Use \-\> instead\.$#'
|
|
identifier: nullsafe.neverNull
|
|
count: 1
|
|
path: app/Services/Import/PressReleaseImporter.php
|
|
|
|
-
|
|
message: '#^Using nullsafe property access "\?\-\>translations" on left side of \?\? is unnecessary\. Use \-\> instead\.$#'
|
|
identifier: nullsafe.neverNull
|
|
count: 2
|
|
path: app/Services/PressRelease/BoostService.php
|
|
|
|
-
|
|
message: '#^Using nullsafe property access on non\-nullable type App\\Enums\\Portal\. Use \-\> instead\.$#'
|
|
identifier: nullsafe.neverNull
|
|
count: 1
|
|
path: app/Services/PressRelease/CorrectionService.php
|
|
|
|
-
|
|
message: '#^Instanceof between App\\Enums\\PressReleaseStatus and App\\Enums\\PressReleaseStatus will always evaluate to true\.$#'
|
|
identifier: instanceof.alwaysTrue
|
|
count: 1
|
|
path: app/Services/PressRelease/PressReleaseService.php
|
|
|
|
-
|
|
message: '#^Method App\\Services\\PressRelease\\PressReleaseService\:\:resolvePublishedAt\(\) should return Illuminate\\Support\\Carbon but returns Carbon\\Carbon\.$#'
|
|
identifier: return.type
|
|
count: 3
|
|
path: app/Services/PressRelease/PressReleaseService.php
|
|
|
|
-
|
|
message: '#^Using nullsafe property access "\?\-\>name" on left side of \?\? is unnecessary\. Use \-\> instead\.$#'
|
|
identifier: nullsafe.neverNull
|
|
count: 1
|
|
path: app/Services/PressRelease/PressReleaseService.php
|
|
|
|
-
|
|
message: '#^Comparison operation "\<" between int\<1, max\> and 1 is always false\.$#'
|
|
identifier: smaller.alwaysFalse
|
|
count: 2
|
|
path: app/Services/PressRelease/ProofPdfRenderer.php
|
|
|
|
-
|
|
message: '#^Instanceof between App\\Enums\\Portal and App\\Enums\\Portal will always evaluate to true\.$#'
|
|
identifier: instanceof.alwaysTrue
|
|
count: 1
|
|
path: app/Services/PressRelease/ProofPdfRenderer.php
|
|
|
|
-
|
|
message: '#^Result of \|\| is always false\.$#'
|
|
identifier: booleanOr.alwaysFalse
|
|
count: 1
|
|
path: app/Services/PressRelease/ProofPdfRenderer.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property App\\Models\\Company\:\:\$recent_releases_count\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: app/Services/Web/CategoryPageData.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property App\\Models\\Company\:\:\$today_releases_count\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: app/Services/Web/CategoryPageData.php
|
|
|
|
-
|
|
message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Builder\:\:forPortalValues\(\)\.$#'
|
|
identifier: method.notFound
|
|
count: 2
|
|
path: app/Services/Web/CategoryPageData.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property App\\Models\\Company\:\:\$recent_releases_count\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: app/Services/Web/HomePageData.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property App\\Models\\Company\:\:\$today_releases_count\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: app/Services/Web/HomePageData.php
|
|
|
|
-
|
|
message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Builder\:\:forPortalValues\(\)\.$#'
|
|
identifier: method.notFound
|
|
count: 5
|
|
path: app/Services/Web/HomePageData.php
|
|
|
|
-
|
|
message: '#^Using nullsafe property access "\?\-\>name" on left side of \?\? is unnecessary\. Use \-\> instead\.$#'
|
|
identifier: nullsafe.neverNull
|
|
count: 1
|
|
path: app/Services/Web/HomePageData.php
|
|
|
|
-
|
|
message: '#^Call to function is_array\(\) with list\<array\{label\: string, value\: string, delta\: string, positive\: bool\}\> will always evaluate to true\.$#'
|
|
identifier: function.alreadyNarrowedType
|
|
count: 1
|
|
path: app/Services/Web/MarketDataService.php
|
|
|
|
-
|
|
message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Builder\:\:forPortalValues\(\)\.$#'
|
|
identifier: method.notFound
|
|
count: 1
|
|
path: app/Services/Web/NewsroomDetailPageData.php
|
|
|
|
-
|
|
message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Builder\:\:forPortalValues\(\)\.$#'
|
|
identifier: method.notFound
|
|
count: 1
|
|
path: app/Services/Web/NewsroomsPageData.php
|
|
|
|
-
|
|
message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Builder\:\:forPortalValues\(\)\.$#'
|
|
identifier: method.notFound
|
|
count: 1
|
|
path: app/Services/Web/ReleaseDetailPageData.php
|
|
|
|
-
|
|
message: '#^Call to an undefined method Illuminate\\Support\\Collection\<\(int\|string\), mixed\>\:\:modelKeys\(\)\.$#'
|
|
identifier: method.notFound
|
|
count: 1
|
|
path: app/Services/Web/ReleaseDetailPageData.php
|
|
|
|
-
|
|
message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Builder\:\:forPortalValues\(\)\.$#'
|
|
identifier: method.notFound
|
|
count: 1
|
|
path: app/Services/Web/VeroeffentlichenPageData.php
|
|
|
|
-
|
|
message: '#^Method App\\Support\\CategoryNavigation\:\:query\(\) should return Illuminate\\Support\\Collection\<int, array\{label\: string, slug\: string, href\: string\}\> but returns Illuminate\\Support\\Collection\<int, array\{label\: string, slug\: non\-falsy\-string, href\: string\}\>\.$#'
|
|
identifier: return.type
|
|
count: 1
|
|
path: app/Support/CategoryNavigation.php
|
|
|
|
-
|
|
message: '#^Call to function is_array\(\) with array\<string, mixed\> will always evaluate to true\.$#'
|
|
identifier: function.alreadyNarrowedType
|
|
count: 1
|
|
path: app/Support/DomainAssetContext.php
|
|
|
|
-
|
|
message: '#^Call to an undefined method Faker\\Generator\:\:secondaryAddress\(\)\.$#'
|
|
identifier: method.notFound
|
|
count: 1
|
|
path: database/factories/BillingAddressFactory.php
|
|
|
|
-
|
|
message: '#^Call to an undefined method Faker\\Generator\:\:secondaryAddress\(\)\.$#'
|
|
identifier: method.notFound
|
|
count: 1
|
|
path: database/factories/InvoiceBillingAddressFactory.php
|