Classes

Bubble size = executable lines. Hover for details, click to navigate.

0% 20% 40% 60% 80% 100% 0 5 10 15 Line Coverage (%) Cyclomatic Complexity App\Domain\Notification\Service\SmtpEmailService — Coverage: 2.7% | Lines: 37 | Complexity: 7 App\Domain\Notification\Repository\SentEmailRepository — Coverage: 91.2% | Lines: 34 | Complexity: 12 App\Domain\Notification\Service\CronEmailNotifier — Coverage: 100.0% | Lines: 31 | Complexity: 6 App\Domain\Notification\Service\NotificationDispatcher — Coverage: 100.0% | Lines: 30 | Complexity: 9 App\Domain\Notification\Service\NotificationPreferenceService — Coverage: 100.0% | Lines: 30 | Complexity: 10 App\Domain\Notification\Repository\NotificationPreferenceRepository — Coverage: 100.0% | Lines: 27 | Complexity: 6 App\Domain\Notification\Data\SentEmailData — Coverage: 55.0% | Lines: 20 | Complexity: 3 App\Domain\Notification\Service\CurlHealthcheckClient — Coverage: 0.0% | Lines: 19 | Complexity: 7 App\Domain\Notification\Service\HealthcheckPinger — Coverage: 100.0% | Lines: 16 | Complexity: 7 App\Domain\Notification\Service\RecordingEmailService — Coverage: 100.0% | Lines: 9 | Complexity: 3 App\Domain\Notification\Data\NotificationPreference — Coverage: 87.5% | Lines: 8 | Complexity: 2 App\Domain\Notification\Data\NotificationType — Coverage: 75.0% | Lines: 8 | Complexity: 4 App\Domain\Notification\Data\EmailMessage — Coverage: 100.0% | Lines: 1 | Complexity: 1

Methods

Bubble size = executable lines. Hover for details, click to navigate.

0% 20% 40% 60% 80% 100% 0 2 4 6 8 Line Coverage (%) Cyclomatic Complexity App\Domain\Notification\Service\SmtpEmailService::send — Coverage: 0.0% | Lines: 36 | Complexity: 6 App\Domain\Notification\Service\CurlHealthcheckClient::get — Coverage: 0.0% | Lines: 19 | Complexity: 7 App\Domain\Notification\Service\NotificationDispatcher::dispatch — Coverage: 100.0% | Lines: 18 | Complexity: 4 App\Domain\Notification\Repository\SentEmailRepository::record — Coverage: 93.3% | Lines: 15 | Complexity: 5 App\Domain\Notification\Service\CronEmailNotifier::notifyJobFailure — Coverage: 100.0% | Lines: 14 | Complexity: 1 App\Domain\Notification\Service\NotificationPreferenceService::getPreferencesForUser — Coverage: 100.0% | Lines: 14 | Complexity: 3 App\Domain\Notification\Service\NotificationPreferenceService::updatePreferences — Coverage: 100.0% | Lines: 12 | Complexity: 4 App\Domain\Notification\Service\NotificationDispatcher::resolveRecipients — Coverage: 100.0% | Lines: 11 | Complexity: 4 App\Domain\Notification\Data\SentEmailData::fromRow — Coverage: 100.0% | Lines: 10 | Complexity: 1 App\Domain\Notification\Repository\SentEmailRepository::findByInvestorId — Coverage: 90.0% | Lines: 10 | Complexity: 3 App\Domain\Notification\Data\SentEmailData::toArray — Coverage: 0.0% | Lines: 9 | Complexity: 1 App\Domain\Notification\Repository\NotificationPreferenceRepository::upsert — Coverage: 100.0% | Lines: 9 | Complexity: 2 App\Domain\Notification\Repository\NotificationPreferenceRepository::getEnabledRecipientsForAdminType — Coverage: 100.0% | Lines: 9 | Complexity: 1 App\Domain\Notification\Repository\NotificationPreferenceRepository::getByUserId — Coverage: 100.0% | Lines: 8 | Complexity: 2 App\Domain\Notification\Repository\SentEmailRepository::resolveInvestorId — Coverage: 87.5% | Lines: 8 | Complexity: 3 App\Domain\Notification\Service\RecordingEmailService::send — Coverage: 100.0% | Lines: 8 | Complexity: 2 App\Domain\Notification\Data\NotificationPreference::__construct — Coverage: 100.0% | Lines: 7 | Complexity: 1 App\Domain\Notification\Service\HealthcheckPinger::send — Coverage: 100.0% | Lines: 7 | Complexity: 2 App\Domain\Notification\Service\CronEmailNotifier::typeFor — Coverage: 100.0% | Lines: 6 | Complexity: 2 App\Domain\Notification\Data\NotificationType::adminTypes — Coverage: 100.0% | Lines: 5 | Complexity: 1 App\Domain\Notification\Service\CronEmailNotifier::notifyJobSuccess — Coverage: 100.0% | Lines: 5 | Complexity: 1 App\Domain\Notification\Service\CronEmailNotifier::notifyJobAnomaly — Coverage: 100.0% | Lines: 5 | Complexity: 1 App\Domain\Notification\Service\HealthcheckPinger::pingSuccess — Coverage: 100.0% | Lines: 4 | Complexity: 2 App\Domain\Notification\Service\HealthcheckPinger::pingFailure — Coverage: 100.0% | Lines: 4 | Complexity: 2 App\Domain\Notification\Service\NotificationPreferenceService::applicableTypesForRole — Coverage: 100.0% | Lines: 3 | Complexity: 2 App\Domain\Notification\Data\EmailMessage::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Domain\Notification\Data\NotificationPreference::jsonSerialize — Coverage: 0.0% | Lines: 1 | Complexity: 1 App\Domain\Notification\Data\NotificationType::allKnownTypes — Coverage: 0.0% | Lines: 1 | Complexity: 1 App\Domain\Notification\Data\NotificationType::isValid — Coverage: 0.0% | Lines: 1 | Complexity: 1 App\Domain\Notification\Data\NotificationType::isAdminType — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Domain\Notification\Data\SentEmailData::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Domain\Notification\Repository\NotificationPreferenceRepository::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Domain\Notification\Repository\SentEmailRepository::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Domain\Notification\Service\CronEmailNotifier::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Domain\Notification\Service\HealthcheckPinger::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Domain\Notification\Service\NotificationDispatcher::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Domain\Notification\Service\NotificationPreferenceService::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Domain\Notification\Service\RecordingEmailService::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Domain\Notification\Service\SmtpEmailService::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1

 

Sorted by descending CRAP (Change Risk Anti-Patterns) index.

Method CRAP Coverage
App\Domain\Notification\Service\CurlHealthcheckClient::get560.0%
App\Domain\Notification\Service\SmtpEmailService::send420.0%
App\Domain\Notification\Repository\SentEmailRepository::record5.0193.3%
App\Domain\Notification\Service\NotificationDispatcher::dispatch4100.0%
App\Domain\Notification\Service\NotificationDispatcher::resolveRecipients4100.0%
App\Domain\Notification\Service\NotificationPreferenceService::updatePreferences4100.0%
App\Domain\Notification\Repository\SentEmailRepository::resolveInvestorId3.0287.5%
App\Domain\Notification\Repository\SentEmailRepository::findByInvestorId3.0190.0%
App\Domain\Notification\Service\NotificationPreferenceService::getPreferencesForUser3100.0%
App\Domain\Notification\Data\NotificationPreference::jsonSerialize20.0%
App\Domain\Notification\Data\NotificationType::allKnownTypes20.0%
App\Domain\Notification\Data\NotificationType::isValid20.0%
App\Domain\Notification\Data\SentEmailData::toArray20.0%
App\Domain\Notification\Repository\NotificationPreferenceRepository::getByUserId2100.0%
App\Domain\Notification\Repository\NotificationPreferenceRepository::upsert2100.0%
App\Domain\Notification\Service\CronEmailNotifier::typeFor2100.0%
App\Domain\Notification\Service\HealthcheckPinger::pingSuccess2100.0%
App\Domain\Notification\Service\HealthcheckPinger::pingFailure2100.0%
App\Domain\Notification\Service\HealthcheckPinger::send2100.0%
App\Domain\Notification\Service\NotificationPreferenceService::applicableTypesForRole2100.0%
App\Domain\Notification\Service\RecordingEmailService::send2100.0%
App\Domain\Notification\Data\EmailMessage::__construct1100.0%
App\Domain\Notification\Data\NotificationPreference::__construct1100.0%
App\Domain\Notification\Data\NotificationType::adminTypes1100.0%
App\Domain\Notification\Data\NotificationType::isAdminType1100.0%
App\Domain\Notification\Data\SentEmailData::__construct1100.0%
App\Domain\Notification\Data\SentEmailData::fromRow1100.0%
App\Domain\Notification\Repository\NotificationPreferenceRepository::__construct1100.0%
App\Domain\Notification\Repository\NotificationPreferenceRepository::getEnabledRecipientsForAdminType1100.0%
App\Domain\Notification\Repository\SentEmailRepository::__construct1100.0%
App\Domain\Notification\Service\CronEmailNotifier::__construct1100.0%
App\Domain\Notification\Service\CronEmailNotifier::notifyJobSuccess1100.0%
App\Domain\Notification\Service\CronEmailNotifier::notifyJobAnomaly1100.0%
App\Domain\Notification\Service\CronEmailNotifier::notifyJobFailure1100.0%
App\Domain\Notification\Service\HealthcheckPinger::__construct1100.0%
App\Domain\Notification\Service\NotificationDispatcher::__construct1100.0%
App\Domain\Notification\Service\NotificationPreferenceService::__construct1100.0%
App\Domain\Notification\Service\RecordingEmailService::__construct1100.0%
App\Domain\Notification\Service\SmtpEmailService::__construct1100.0%