Classes

Coverage Distribution

Complexity

Insufficient Coverage

Class Coverage
App\Modules\Mail\Domain\Model\MailTemplate60%
App\Modules\Mail\Infrastructure\Protocol\AbstractMailProtocolDriver60%
App\Modules\Pdf\Domain\Service\PdfBlockRegistry66%
App\Modules\Comments\Domain\Model\CommentFilterScope66%
App\Modules\Dav\Task\AbstractDavTask72%
App\Modules\Comments\Presentation\Api\CommentsApiController76%
App\Modules\Mail\Application\Service\Message\WebmailMessageCacheManager77%
App\Modules\Profiles\Infrastructure\Repository\CachedProfilePermissionRepository80%
App\Modules\Dashboard\Presentation\Api\DashboardApiController80%
App\Modules\Dav\Application\Listener\DavSyncRecordListener81%
App\Modules\Calendar\Application\Listener\CalendarInvitationRecordListener81%
App\Modules\Mail\Infrastructure\Protocol\Imap\Client\ImapSocketClient82%
App\Modules\Profiles\Presentation\Api\ProfilePermissionApiController82%
App\Modules\Discount\Presentation\Api\DiscountRatesApiController82%
App\Modules\Pdf\Presentation\Web\PdfWebController83%
App\Modules\Pdf\Infrastructure\Repository\SqlPdfTemplateVersionRepository83%
App\Modules\Pdf\Task\ProcessPdfQueueTask83%
App\Modules\Structure\Application\Service\StructureReassignmentService84%
App\Modules\Mail\Presentation\Htmx\WebmailComposeHtmxController84%
App\Modules\Dashboard\Application\Service\Widget\CalendarWidgetDataLoader84%
App\Modules\Mail\Application\Service\WebmailSenderService85%
App\Modules\User\Infrastructure\Repository\SqlUserRepository85%
App\Modules\Map\Infrastructure\GeoIp\MaxMindMmdbReader85%
App\Modules\Tax\Domain\Service\Calculator\InclusiveVatCalculator85%
App\Modules\Mail\Application\Service\Auth\MailboxSettingsManager85%
App\Modules\Menu\Infrastructure\Repository\SqlMenuRepository85%
App\Modules\Automation\Application\Service\PublicGatekeeperService86%
App\Modules\Mail\Application\Service\Message\WebmailTrustedSenderService86%
App\Modules\Comments\Presentation\Htmx\CommentsHtmxController86%
App\Modules\Structure\Infrastructure\Repository\SqlStructureMembershipRepository86%
App\Modules\Map\Application\Service\IpGeolocationService87%
App\Modules\Mail\Infrastructure\Protocol\Exchange\ExchangeProtocolDriver87%
App\Modules\About\Application\DataSource\AbstractInMemoryDataProvider87%
App\Modules\User\Presentation\Web\AuthController88%
App\Modules\Mail\Application\Service\WebmailCircuitBreakerService88%
App\Modules\Pdf\Infrastructure\Driver\MpdfRendererDriver88%
App\Modules\Automation\Queue\Task\ProcessQueueTask88%
App\Modules\Comments\Presentation\Web\MentionsWebController88%
App\Modules\Profiles\Application\Service\ProfilePermissionService89%
App\Modules\User\Application\Service\PasswordResetService89%
App\Modules\Comments\Application\Service\CommentMentionItemMapper89%
App\Modules\Menu\Presentation\Api\MenuApiController89%
App\Modules\Map\Application\Service\MapSpatialQueryService89%
App\Modules\Inventory\Presentation\Htmx\InventoryItemsHtmxController89%

Project Risks

Class CRAP
App\Modules\Mail\Presentation\Htmx\WebmailComposeHtmxController229
App\Modules\Map\Infrastructure\GeoIp\MaxMindMmdbReader103
App\Modules\Comments\Presentation\Api\CommentsApiController101
App\Modules\Profiles\Application\Service\ProfilePermissionService75
App\Modules\Inventory\Presentation\Htmx\InventoryItemsHtmxController71
App\Modules\Mail\Infrastructure\Protocol\Imap\Client\ImapSocketClient63
App\Modules\User\Infrastructure\Repository\SqlUserRepository62
App\Modules\Map\Application\Service\MapSpatialQueryService57
App\Modules\User\Application\Service\PasswordResetService53
App\Modules\Mail\Application\Service\Auth\MailboxSettingsManager51
App\Modules\Dashboard\Presentation\Api\DashboardApiController48
App\Modules\Structure\Application\Service\StructureReassignmentService47
App\Modules\Map\Application\Service\IpGeolocationService47
App\Modules\Mail\Application\Service\WebmailSenderService46
App\Modules\Menu\Presentation\Api\MenuApiController46
App\Modules\Dashboard\Application\Service\Widget\CalendarWidgetDataLoader45
App\Modules\Pdf\Presentation\Web\PdfWebController44
App\Modules\Structure\Infrastructure\Repository\SqlStructureMembershipRepository44
App\Modules\Profiles\Presentation\Api\ProfilePermissionApiController42
App\Modules\Mail\Infrastructure\Protocol\AbstractMailProtocolDriver42
App\Modules\User\Presentation\Web\AuthController40
App\Modules\Comments\Application\Service\CommentMentionItemMapper39
App\Modules\Profiles\Infrastructure\Repository\CachedProfilePermissionRepository32
App\Modules\Mail\Domain\Model\MailTemplate32
App\Modules\Pdf\Task\ProcessPdfQueueTask30
App\Modules\Mail\Application\Service\Message\WebmailTrustedSenderService28
App\Modules\Comments\Presentation\Htmx\CommentsHtmxController28
App\Modules\Pdf\Infrastructure\Driver\MpdfRendererDriver24
App\Modules\Menu\Infrastructure\Repository\SqlMenuRepository22
App\Modules\Mail\Application\Service\WebmailCircuitBreakerService21
App\Modules\Calendar\Application\Listener\CalendarInvitationRecordListener19
App\Modules\Pdf\Infrastructure\Repository\SqlPdfTemplateVersionRepository19
App\Modules\Mail\Application\Service\Message\WebmailMessageCacheManager18
App\Modules\Automation\Application\Service\PublicGatekeeperService17
App\Modules\Dav\Application\Listener\DavSyncRecordListener14
App\Modules\Discount\Presentation\Api\DiscountRatesApiController11
App\Modules\About\Application\DataSource\AbstractInMemoryDataProvider11
App\Modules\Automation\Queue\Task\ProcessQueueTask11
App\Modules\Dav\Task\AbstractDavTask7
App\Modules\Comments\Domain\Model\CommentFilterScope3
App\Modules\Comments\Presentation\Web\MentionsWebController3
App\Modules\Tax\Domain\Service\Calculator\InclusiveVatCalculator2

Methods

Coverage Distribution

Complexity

Insufficient Coverage

Method Coverage
getDefaultSortColumn0%
getDefaultSortColumn0%
matchFilter0%
clearColumnsCache0%
hasColumnMysql0%
jsonSerialize0%
formatDayOrDate0%
extractMentionTokens0%
resolveStructureTable0%
fetchStructureNodes0%
setExchangeRate0%
setNbpTableNo0%
setEffectiveDate0%
assertUrlAllowed0%
getDemoCatalogItems0%
saveDefaultForUsers0%
buildEmptyResult0%
lookupCompanyForContact0%
resetAll0%
toggleKeyword0%
invalidateMailboxMessagesCache0%
normalizeSenderEmail0%
extractDomainFromEmail0%
toArray0%
has0%
renameFolder0%
deleteFolder0%
getRawMessageSource0%
setFlags0%
moveMessages0%
copyMessages0%
deleteMessages0%
getQuota0%
sendMessage0%
setTimeout0%
generatePreloadedPdfAttachment0%
findFirstActiveTemplate0%
extractIpFromReceivedHeaders0%
has0%
exportRecord0%
getFieldPermissions0%
canCreateInModule0%
canEditInModule0%
saveMatrix0%
saveMatrix0%
getAllActiveUsers0%
findUsersByIds0%
forPrefix0%
resolveBaseAppKey0%
resolveStructureMentions9%
readLiteralData18%
checkBulkRecordPermissions22%
resolvePdo25%
extractPreloadedAttachments26%
resolveUserTimezone28%
parseDate33%
moveOrCopyFile33%
parseDateTime33%
storeFoldersInMemoryCache33%
resolveCachedFoldersIfPreferred33%
extractCachedInboxUnseen33%
resolveReplyAllPrefill33%
decodePointer33%
flattenFolderTree37%
resolveUserId42%
update45%
resolveCurrentUser46%
resolveFileKey50%
extractUploadedFiles50%
saveCachedMessages50%
moveFolderInto50%
parseBlocksJson50%
executeHttpRequest50%
resolveSize50%
resolveCalculator50%
resolveMfaSigningKey50%
fetchRawRows53%
pullUserCalendar54%
pullUserContacts54%
resetOtherDefaultMailboxes54%
getFromPersistentCache55%
buildHierarchyWhereClause57%
resolveCreationValidationError57%
querySqlMetric60%
formatEventTimeRange60%
resolveAttachments60%
onRecordUpdated60%
computeTargetDefaultUsers60%
formatOverdueInterval61%
renderPdf61%
buildUserPermissionMatrix61%
validateMagicBytesAndSanitize63%
queryLogAuthRecords63%
resolveModuleRecordPrefill64%
checkPhpExtension66%
shouldSkipExecution66%
__construct66%
actionMentionsUnreadCount66%
resolveStorageBase66%
copyOrMoveFile66%
getCache66%
getFoldersFromMemoryCache66%
getMailboxCacheVersion66%
getCachedMessages66%
extractCharset66%
parseDateAndTimestamp66%
resolvePdo66%
resolvePdo66%
fetchBatchModuleRecords66%
invalidateCache66%
reassignModuleRecordsOwner66%
reassignAndDelete66%
validatePasswordStrength66%
verifyPassword66%
fromValue66%
formatCalendarDate68%
actionEventDetails68%
forgotPasswordSubmit68%
detectSystemLoad70%
applyPartyFromRow70%
actionCurrentEvents70%
actionOverdueEvents70%
actionEventAction70%
advanceDate71%
checkIpWithActiveProvider71%
appendSentCopy71%
requestHttpJsonData71%
fetchModulePoints71%
countUsersInStructure71%
checkTrivialPasswords71%
loginSubmit71%
onRecordDeleted72%
readLine72%
saveToCache72%
persistSignature72%
formatSimplifiedDate73%
syncRemoteContact73%
createVersion73%
verifyToken75%
tableExists75%
onRecordUpdated75%
getUserWatermark75%
actionTogglePin75%
actionToggleVerify75%
validateCurrencyCreation75%
parseEventAttendees75%
setCache75%
checkUrlWithActiveProviders75%
moveMailbox75%
invalidateMailboxMessagesCache75%
getStatus75%
resolveCustomComposePrefill75%
load75%
checkPasswordContextRestrictions75%
hasAnyImpersonationRights75%
setDefaultDevice75%
parsePayload75%
parsePayload75%
resolveCurrentSessionToken75%
testMailboxConnection76%
syncRemoteResource76%
sendMessage76%
fetchUserData76%
reassignAndRemoveUser77%
resolveTemplate77%
hasColumn77%
findActive77%
create77%
tableExists77%
list77%
relocateSourceFolder77%
countAssignedRecords77%
updateUserPasswordAndInvalidate78%
create78%
save78%
fetchHierarchyPoints79%
hasFieldChanged80%
resolvePdo80%
formatEventDate80%
buildSubject80%
shouldStopRecurrence80%
normalizeResponse80%
formatRelativeTime80%
validateCurrencyDeletion80%
formatStandardCalendarDate80%
onRecordDeleted80%
extractEmails80%
setCache80%
extractRawBlocks80%
trustSenderImages80%
forgetTrustedSenderImages80%
resolveSmtpConfig80%
disconnect80%
resolveFromHttpFallback80%
save80%
bulkUpdateModule80%
bulkUpdateField80%
parseJsonBody80%
getTableName80%
getUserStructureIds80%
getStructureUserIds80%
actionToggle80%
buildSuperuserMatrix80%
processTaskJob80%
blockRemoteImages81%
saveDraft81%
actionDelete81%
extractPhones81%
extractPrimaryAndSecondary81%
collectCommandResponses81%
reauth81%
updateField81%
reassignAndRemoveStructure81%
getUserTableName81%
findHighestHierarchyLogo81%
completePasswordReset81%
findExistingEmailRecord82%
checkDiskSpace82%
calculateDirSize82%
getUnreadCount82%
mfaVerifySubmit82%
saveToDbCache82%
lookupTicketPrefix83%
resolveSecretKey83%
resolveAttendeeName83%
deleteComment83%
formatRelativeTime83%
formatAuthorName83%
history83%
fetchEventRow83%
getCurrentCalendarEventsCount83%
getOverdueCalendarEventsCount83%
resolveCredential83%
extractPriority83%
resolveFormattedName83%
propertyToString83%
queryDnsRecords83%
loadPersistedAssociations83%
isAvailable83%
reorderFolder83%
copyMessages83%
deleteMessages83%
generatePreloadedIcsAttachment83%
messageRelationsDetect83%
resolveFromReaderOrApi83%
shouldIncludeItem83%
decodeJsonArray83%
delete83%
markJobStarted83%
bulkUpdateModulePermission83%
getStructureUsers83%
findByCode83%
matches83%
resolveGrantsRepo83%
resolveUserRepo83%
resolveClientIp83%
resetPasswordSubmit83%
resolveSessionMfaTicket83%
messageRelationsUnlink84%
updateModulePermission84%
fetchNextPending84%
checkOpcacheMemory84%
checkOpcacheInterned84%
checkApcuMemory84%
fetchEntityTitles84%
processIngestion84%
initializeFromMetaOffset84%
run85%
buildSymfonyEmail85%
enrichWithRecordAndPdf85%
saveGrants85%
syncSingleInboundMailbox85%
detectRamMemory85%
executeActionSetField85%
lookupTicketIdByNumber85%
extractNodesFromJson85%
processChunk85%
appendOrganizer85%
lookupUser85%
applyRelationRef85%
getCountsByScope85%
handlePostpone85%
parseMultiStatusResponse85%
mapIcsToStatus85%
loadActiveIntegrations85%
resolveProcess85%
renderPreheader85%
reorderSiblings85%
swapSiblingPosition85%
getMailboxById85%
getMailboxFolders85%
buildSearchCommand85%
negotiateStarttls85%
lookupCalendarEvent85%
extractIpFromDirectHeaders85%
resolveRawRecord85%
getProviderForCoordinates85%
updateProgress85%
markJobFailed85%
findAllActive85%
calculate85%
validateNewPasswordPolicy85%
nestFolder86%
renameFolder86%
actionSaveGraph86%
resolveTransport86%
isSenderImagesTrusted86%
resolveTicketRelations86%
resolveQueueManager86%
sortRows87%
validateMimeContent87%
delete87%
getOverdueCalendarEvents87%
matchContactByEmail87%
loadMultiStatusXml87%
detectMagicMime87%
parseFoldersJson87%
sendTemplateEmail87%
saveState87%
__construct87%
fetchFromCache87%
findById87%
markJobCompleted87%
resolveProfileDetails87%
removeUser87%
formatUserOption87%
checkTokenRecordValidity87%
switchSessionIdentity87%
actionIndex88%
recordOpen88%
resolveReplyPrefill88%
messageRelations88%
executeEnrollmentConfirmation88%
load88%
detectServerUptime88%
loadActiveEmailTemplate88%
updateAssociatedTicketEmail88%
authorInitials88%
getAllRateHistory88%
parseDavResponseItem88%
extractGeo88%
updateFolderOrder88%
recordClick88%
lookupContactByEmailAddresses88%
createFolder88%
parseAddressList88%
resolveActionUids88%
fetchLogAuthPoints88%
findRecord88%
filterMenuItemsRecursively88%
findById88%
resolveCurrentUserId88%
checkAdminAccess88%
fetchMessages89%
fromArray89%
buildTemplateContext89%

Project Risks

Method CRAP
extractIpFromReceivedHeaders42
resolveStructureTable30
saveMatrix30
resolveBaseAppKey30
extractPreloadedAttachments26
readLiteralData25
resolveCurrentUser25
checkBulkRecordPermissions22
resolveModuleRecordPrefill20
buildHierarchyWhereClause20
fetchStructureNodes20
generatePreloadedPdfAttachment20
findUsersByIds20
extractCachedInboxUnseen16
resolveStructureMentions15
fetchNextPending14
enrichWithRecordAndPdf14
resolveUserTimezone14
processIngestion13
reassignAndRemoveStructure12
buildSymfonyEmail12
resolveCachedFoldersIfPreferred12
fetchModulePoints12
fetchHierarchyPoints12
formatDayOrDate12
lookupCompanyForContact12
findFirstActiveTemplate12
exportRecord12
processTaskJob11
syncSingleInboundMailbox11
reassignAndRemoveUser11
extractUploadedFiles10
fetchBatchModuleRecords10
handlePostpone10
updateUserPasswordAndInvalidate9
formatOverdueInterval9
bulkUpdateModulePermission9
validateMagicBytesAndSanitize9
buildSearchCommand9
isSenderImagesTrusted9
load9
fromArray9
moveOrCopyFile8
storeFoldersInMemoryCache8
resolveReplyAllPrefill8
decodePointer8
resolveFromHttpFallback8
formatRelativeTime8
computeTargetDefaultUsers8
loadActiveIntegrations8
swapSiblingPosition8
nestFolder8
renameFolder8
appendSentCopy8
parseBlocksJson8
fetchFromCache8
resolveCalculator8
formatSimplifiedDate7
flattenFolderTree7
setDefaultDevice7
resolveTemplate7
create7
buildSubject7
trustSenderImages7
resolveSmtpConfig7
buildSuperuserMatrix7
__construct7
findExistingEmailRecord7
calculateDirSize7
loadPersistedAssociations7
matches7
run7
saveGrants7
formatCalendarDate7
resolveActionUids7
findRecord7
filterMenuItemsRecursively7
resolveCurrentUserId7
resolveUserId6
detectSystemLoad6
actionEventAction6
advanceDate6
resolvePdo6
onRecordDeleted6
persistSignature6
resolveAttachments6
onRecordUpdated6
checkPasswordContextRestrictions6
relocateSourceFolder6
save6
validateCurrencyDeletion6
extractRawBlocks6
forgetTrustedSenderImages6
saveDraft6
extractPriority6
resolveGrantsRepo6
resolveUserRepo6
resolveClientIp6
getProviderForCoordinates6
resolveTicketRelations6
switchSessionIdentity6
recordOpen6
extractGeo6
recordClick6
lookupContactByEmailAddresses6
fetchMessages6
matchFilter6
extractMentionTokens6
saveDefaultForUsers6
setTimeout6
executeHttpRequest6
resolveSize6
canCreateInModule6
canEditInModule6
resolveMfaSigningKey6
getFoldersFromMemoryCache5
forgotPasswordSubmit5
applyPartyFromRow5
requestHttpJsonData5
loginSubmit5
pullUserCalendar5
pullUserContacts5
resetOtherDefaultMailboxes5
syncRemoteContact5
getFromPersistentCache5
parseEventAttendees5
load5
parsePayload5
parsePayload5
syncRemoteResource5
fetchUserData5
resolveCreationValidationError5
shouldStopRecurrence5
getTableName5
extractPhones5
extractPrimaryAndSecondary5
updateField5
checkDiskSpace5
lookupTicketPrefix5
deleteComment5
messageRelationsDetect5
resolveFromReaderOrApi5
shouldIncludeItem5
decodeJsonArray5
messageRelationsUnlink5
updateModulePermission5
checkOpcacheMemory5
checkOpcacheInterned5
checkApcuMemory5
fetchEntityTitles5
extractNodesFromJson5
applyRelationRef5
getCountsByScope5
parseMultiStatusResponse5
resolveProcess5
reorderSiblings5
lookupCalendarEvent5
extractIpFromDirectHeaders5
actionSaveGraph5
validateMimeContent5
detectMagicMime5
__construct5
formatUserOption5
messageRelations5
parseDavResponseItem5
checkAdminAccess5
onRecordUpdated5
renderPdf4
buildUserPermissionMatrix4
getCache4
getMailboxCacheVersion4
getCachedMessages4
reassignModuleRecordsOwner4
reassignAndDelete4
checkTrivialPasswords4
readLine4
saveToCache4
getUserWatermark4
resolveCustomComposePrefill4
testMailboxConnection4
hasColumn4
tableExists4
countAssignedRecords4
resolvePdo4
formatEventDate4
normalizeResponse4
onRecordDeleted4
extractEmails4
bulkUpdateModule4
bulkUpdateField4
resolveFileKey4
saveCachedMessages4
moveFolderInto4
actionToggle4
blockRemoteImages4
collectCommandResponses4
getUserTableName4
completePasswordReset4
getUnreadCount4
mfaVerifySubmit4
saveToDbCache4
resolveSecretKey4
resolveAttendeeName4
resolveCredential4
propertyToString4
reorderFolder4
resolveSessionMfaTicket4
initializeFromMetaOffset4
lookupUser4
resolveRawRecord4
findAllActive4
validateNewPasswordPolicy4
resolveTransport4
delete4
matchContactByEmail4
parseFoldersJson4
sendTemplateEmail4
resolveReplyPrefill4
resolveProfileDetails4
checkTokenRecordValidity4
executeEnrollmentConfirmation4
updateAssociatedTicketEmail4
authorInitials4
parseAddressList4
fetchLogAuthPoints4
fetchRawRows3
querySqlMetric3
formatEventTimeRange3
queryLogAuthRecords3
checkPhpExtension3
shouldSkipExecution3
actionMentionsUnreadCount3
resolvePdo3
invalidateCache3
validatePasswordStrength3
fromValue3
actionEventDetails3
actionCurrentEvents3
actionOverdueEvents3
checkIpWithActiveProvider3
parseDate3
parseDateTime3
createVersion3
actionTogglePin3
actionToggleVerify3
setCache3
invalidateMailboxMessagesCache3
getStatus3
resolveCurrentSessionToken3
sendMessage3
findActive3
create3
list3
formatRelativeTime3
setCache3
disconnect3
save3
parseJsonBody3
getUserStructureIds3
getStructureUserIds3
actionDelete3
reauth3
findHighestHierarchyLogo3
fetchEventRow3
getCurrentCalendarEventsCount3
getOverdueCalendarEventsCount3
resolveFormattedName3
isAvailable3
deleteMessages3
getStructureUsers3
findByCode3
resetPasswordSubmit3
detectRamMemory3
lookupTicketIdByNumber3
processChunk3
mapIcsToStatus3
getMailboxFolders3
negotiateStarttls3
resolveQueueManager3
getOverdueCalendarEvents3
loadMultiStatusXml3
saveState3
findById3
detectServerUptime3
loadActiveEmailTemplate3
buildTemplateContext3
getAllRateHistory3
updateFolderOrder3
createFolder3
findById3
update2
resolveStorageBase2
copyOrMoveFile2
extractCharset2
parseDateAndTimestamp2
resolvePdo2
verifyPassword2
countUsersInStructure2
verifyToken2
tableExists2
validateCurrencyCreation2
checkUrlWithActiveProviders2
moveMailbox2
hasAnyImpersonationRights2
hasFieldChanged2
formatStandardCalendarDate2
formatAuthorName2
history2
queryDnsRecords2
copyMessages2
generatePreloadedIcsAttachment2
delete2
markJobStarted2
sortRows2
executeActionSetField2
appendOrganizer2
actionIndex2
renderPreheader2
getMailboxById2
updateProgress2
markJobCompleted2
markJobFailed2
removeUser2
calculate2