Classes

Coverage Distribution

Complexity

Insufficient Coverage

Class Coverage
AdminTheme\Command\Bake\ControllerCommand0%
AdminTheme\Command\Bake\TemplateCommand0%
AdminTheme\View\AppView0%
DefaultTheme\Controller\AppController0%
DefaultTheme\View\AppView0%
DefaultTheme\View\Cell\ArchivesCell0%
DefaultTheme\View\Cell\RelatedPagesCell0%
App\Command\CheckTableExistsCommand0%
App\Command\CreateUserCommand0%
App\Command\DefaultDataExportCommand0%
App\Command\DefaultDataImportCommand0%
App\Command\ExportCodeCommand0%
App\Command\GenerateArticlesCommand0%
App\Command\GeneratePoFilesCommand0%
App\Command\InvestigateArticleCommand0%
App\Command\LoadDefault18nCommand0%
App\Command\ResizeImagesCommand0%
App\Command\TestRateLimitCommand0%
App\Command\TranslateI18nCommand0%
App\Controller\Admin\CacheController0%
App\Controller\Admin\EmailTemplatesController0%
App\Controller\Admin\ImagesController0%
App\Controller\Admin\InternationalisationsController0%
App\Controller\Admin\PageViewsController0%
App\Controller\Admin\TagsController0%
App\Controller\Admin\VideosController0%
App\Controller\PagesController0%
App\Controller\RobotsController0%
App\Controller\RssController0%
App\Controller\TagsController0%
App\Job\ArticleSeoUpdateJob0%
App\Job\ArticleSummaryUpdateJob0%
App\Job\ArticleTagUpdateJob0%
App\Job\CommentAnalysisJob0%
App\Job\GenerateGalleryPreviewJob0%
App\Job\ImageAnalysisJob0%
App\Job\ImageGallerySeoUpdateJob0%
App\Job\ProcessImageJob0%
App\Job\SendEmailJob0%
App\Job\TagSeoUpdateJob0%
App\Job\TranslateI18nJob0%
App\Model\Entity\CookieConsent0%
App\Model\Table\EmailTemplatesTable0%
App\Model\Table\InternationalisationsTable0%
App\Service\Api\AiServiceFactory0%
App\Service\Api\Anthropic\AnthropicApiService0%
App\Service\Api\Anthropic\ImageAnalyzer0%
App\Service\Api\Anthropic\TranslationGenerator0%
App\Utility\ArchiveExtractor0%
App\Utility\FileUtility0%
App\View\AjaxView0%
App\Controller\Component\MediaPickerTrait0%
App\Model\Entity\SeoEntityTrait0%
App\Model\Table\SeoFieldsTrait0%
App\Error\AppExceptionRenderer15%
App\Service\Api\AbstractApiService17%
App\Service\Api\Google\GoogleApiService19%
App\Controller\Admin\UsersController20%
App\Job\AbstractTranslateJob23%
App\Model\Entity\ImageGallery23%
App\Model\Table\ArticlesTranslationsTable26%
App\Controller\Admin\Trait\SearchableTrait27%
App\Job\TranslateImageGalleryJob31%
App\Job\TranslateTagJob31%
App\Job\TranslateArticleJob35%
App\View\Helper\VideoHelper35%
App\Controller\Admin\ImageGalleriesController36%
App\Service\ImageProcessingService37%
App\View\Helper\GalleryHelper41%
App\Model\Table\PageViewsTable51%
DefaultTheme\View\Helper\NavigationHelper52%
App\Model\Table\ArticlesTagsTable52%
App\Controller\Admin\ArticlesController53%
App\Controller\ArticlesController54%
App\Model\Behavior\ImageValidationTrait58%
App\Http\Exception\TooManyRequestsException60%
App\Model\Behavior\ImageAssociableBehavior61%
App\Model\Table\TagsTable63%
App\Controller\Admin\AipromptsController64%
App\Model\Behavior\QueueableImageBehavior64%
App\Controller\CookieConsentsController64%
App\Model\Table\CookieConsentsTable65%
App\Model\Table\ArticlesTable66%
App\Utility\I18nManager67%
App\View\Cell\GalleryCell69%
App\Controller\UsersController69%
DefaultTheme\Controller\Component\FrontEndSiteComponent70%
App\Service\IpSecurityService70%
App\Service\Api\OpenRouter\OpenRouterApiService71%
App\Log\Engine\DatabaseLog72%
App\Controller\Admin\CommentsController72%
App\Controller\SitemapController73%
App\View\Helper\ContentHelper75%
App\Model\Table\QueueableJobsTrait76%
App\Model\Entity\User77%
App\Model\Entity\ImageUrlTrait78%
App\Controller\Admin\SlugsController79%
App\Utility\SettingsManager82%
App\Controller\Admin\BlockedIpsController82%
App\Controller\Admin\SystemLogsController82%
App\Service\Api\AiService83%
App\Service\Api\Anthropic\SeoContentGenerator83%
AdminTheme\AdminThemePlugin84%
DefaultTheme\DefaultThemePlugin84%
App\Model\Table\CommentsTable85%
App\Model\Behavior\CommentableBehavior85%
App\Utility\DatabaseUtility85%
App\Middleware\IpBlockerMiddleware86%
App\Model\Table\ImageGalleriesTable87%
App\Controller\Admin\SettingsController88%
App\Middleware\RateLimitMiddleware88%

Project Risks

Class CRAP
App\Utility\ArchiveExtractor3422
App\Command\DefaultDataImportCommand3306
App\Command\ExportCodeCommand1806
App\Controller\Admin\ImagesController1260
App\Command\GenerateArticlesCommand870
App\Command\DefaultDataExportCommand812
App\Controller\Admin\EmailTemplatesController812
App\Job\GenerateGalleryPreviewJob600
App\Controller\Admin\PageViewsController552
App\Controller\Admin\TagsController506
App\Controller\Admin\ImageGalleriesController492
App\Model\Entity\SeoEntityTrait462
AdminTheme\Command\Bake\TemplateCommand306
App\Command\CreateUserCommand306
App\Service\Api\Google\GoogleApiService254
App\Service\ImageProcessingService246
App\Command\LoadDefault18nCommand240
App\Controller\Admin\UsersController222
App\Controller\Admin\CacheController210
App\Service\Api\Anthropic\AnthropicApiService210
App\Controller\Admin\InternationalisationsController182
App\Controller\Component\MediaPickerTrait182
App\Command\InvestigateArticleCommand156
App\Command\ResizeImagesCommand156
App\Controller\Admin\VideosController156
App\Job\ArticleTagUpdateJob156
App\Controller\Admin\ArticlesController144
App\Job\ProcessImageJob132
App\Model\Entity\ImageGallery130
App\Service\IpSecurityService111
App\Controller\ArticlesController102
App\Model\Table\SeoFieldsTrait90
App\Job\AbstractTranslateJob88
App\Controller\UsersController87
App\Model\Behavior\ImageValidationTrait77
App\Model\Table\ArticlesTable76
App\Controller\PagesController72
App\Job\CommentAnalysisJob72
App\Job\TranslateI18nJob72
App\Job\ArticleSummaryUpdateJob56
App\Job\ImageGallerySeoUpdateJob56
App\Controller\Admin\Trait\SearchableTrait47
App\Command\GeneratePoFilesCommand42
App\Command\TestRateLimitCommand42
App\Command\TranslateI18nCommand42
App\Controller\SitemapController40
App\Controller\Admin\SlugsController36
App\Controller\RssController30
App\Job\ArticleSeoUpdateJob30
App\Job\ImageAnalysisJob30
App\Job\SendEmailJob30
App\Job\TagSeoUpdateJob30
App\Service\Api\Anthropic\ImageAnalyzer30
App\Utility\FileUtility30
App\Model\Table\ImageGalleriesTable28
DefaultTheme\View\Helper\NavigationHelper27
App\Middleware\RateLimitMiddleware26
App\Model\Behavior\QueueableImageBehavior22
App\Model\Table\CookieConsentsTable20
AdminTheme\Command\Bake\ControllerCommand20
App\Controller\TagsController20
App\Model\Table\TagsTable19
App\Service\Api\OpenRouter\OpenRouterApiService18
App\Controller\Admin\AipromptsController18
App\Controller\Admin\CommentsController17
App\Controller\Admin\SystemLogsController17
App\Utility\I18nManager16
App\Controller\CookieConsentsController16
App\Model\Behavior\ImageAssociableBehavior15
DefaultTheme\Controller\Component\FrontEndSiteComponent15
App\View\Helper\ContentHelper14
App\Model\Behavior\CommentableBehavior12
DefaultTheme\View\Cell\RelatedPagesCell12
App\Command\CheckTableExistsCommand12
App\Controller\RobotsController12
App\Controller\Admin\SettingsController11
App\Model\Entity\User11
App\Controller\Admin\BlockedIpsController10
App\View\Helper\GalleryHelper9
App\Utility\SettingsManager9
App\Middleware\IpBlockerMiddleware8
App\Model\Entity\ImageUrlTrait6
DefaultTheme\View\Cell\ArchivesCell6
App\Model\Table\QueueableJobsTrait5
App\Model\Table\CommentsTable5
App\View\Cell\GalleryCell4
App\Error\AppExceptionRenderer4
App\Http\Exception\TooManyRequestsException3
App\Log\Engine\DatabaseLog3
App\Utility\DatabaseUtility3

Methods

Coverage Distribution

Complexity

Insufficient Coverage

Method Coverage
console0%
bakeController0%
getSearchFields0%
execute0%
getTemplatePath0%
getContent0%
bake0%
_filteredAssociations0%
initialize0%
initialize0%
console0%
initialize0%
display0%
display0%
isActive0%
activeClass0%
renderBreadcrumbs0%
buildOptionParser0%
execute0%
buildOptionParser0%
execute0%
createUser0%
updateUserPassword0%
buildOptionParser0%
execute0%
_exportAllTables0%
exportTableData0%
buildOptionParser0%
execute0%
importTableData0%
toggleMySqlForeignKeyChecks0%
getDirectoryTypeMappings0%
buildOptionParser0%
execute0%
writeMetadata0%
writeSectionHeader0%
writeSectionFooter0%
writeFileContent0%
initialize0%
buildOptionParser0%
execute0%
ensureTopLevelTags0%
generateArticle0%
generateRandomText0%
loadAdminUser0%
execute0%
generatePoContent0%
buildOptionParser0%
execute0%
execute0%
parsePoFile0%
buildOptionParser0%
execute0%
createImage0%
buildOptionParser0%
execute0%
getBaseUrl0%
generateRandomIp0%
execute0%
queueBatch0%
delete0%
treeIndex0%
updateTree0%
view0%
clearAll0%
clear0%
getCacheInfo0%
getLastClearedTime0%
updateLastClearedTime0%
index0%
view0%
add0%
edit0%
htmlToPlainText0%
delete0%
sendEmail0%
prepareEmailVariables0%
generateLink0%
addImages0%
removeImage0%
updateImageOrder0%
picker0%
viewClasses0%
index0%
view0%
imageSelect0%
add0%
bulkUpload0%
edit0%
delete0%
deleteUploadedImage0%
picker0%
index0%
view0%
add0%
edit0%
delete0%
initialize0%
pageViewStats0%
viewRecords0%
filterStats0%
dashboard0%
getBrowserStats0%
extractBrowser0%
getHourlyDistribution0%
getTopReferrers0%
clearContentCache0%
treeIndex0%
updateTree0%
index0%
view0%
add0%
edit0%
delete0%
index0%
view0%
add0%
delete0%
logout0%
videoSelect0%
pageIndex0%
index0%
addComment0%
display0%
beforeFilter0%
index0%
beforeFilter0%
viewClasses0%
index0%
generateHreflangLinks0%
beforeFilter0%
index0%
viewBySlug0%
getRetryAfter0%
applyTranslations0%
handleEmptySeoFields0%
__construct0%
getJobType0%
execute0%
__construct0%
getJobType0%
execute0%
__construct0%
getJobType0%
execute0%
findOrSaveTag0%
__construct0%
getJobType0%
execute0%
updateCommentStatus0%
execute0%
generatePreview0%
createSingleImagePreview0%
createSmartMontagePreview0%
calculateOptimalGrid0%
addGradientBackground0%
applyImageStyling0%
clearExistingPreview0%
__construct0%
getJobType0%
execute0%
__construct0%
getJobType0%
execute0%
getJobType0%
execute0%
createImage0%
getJobType0%
execute0%
__construct0%
getJobType0%
execute0%
getFieldsForTranslation0%
__construct0%
getJobType0%
execute0%
getFieldsForTranslation0%
getFieldsForTranslation0%
saveImages0%
hasAnalyticsConsent0%
hasFunctionalConsent0%
hasMarketingConsent0%
getStatusDisplay0%
getStatusClass0%
getTotalFileSize0%
getMainMenuPages0%
getArchiveDates0%
validationDefault0%
buildRules0%
validationDefault0%
getLatestConsent0%
initialize0%
validationDefault0%
buildRules0%
afterDelete0%
imagesChanged0%
initialize0%
validationDefault0%
validationDefault0%
afterSave0%
getAllSeoFields0%
getSimpleThreadedArray0%
getMainMenuTags0%
sendRequest0%
handleApiError0%
generateGallerySeo0%
analyzeImage0%
translateStrings0%
createProvider0%
getProviderName0%
isConfigured0%
__construct0%
getHeaders0%
generateTagSeo0%
generateArticleSeo0%
generateGallerySeo0%
generateArticleTags0%
analyzeImage0%
analyzeComment0%
generateTextSummary0%
translateStrings0%
parseResponse0%
isConfigured0%
getProviderName0%
getLoggerName0%
analyze0%
createImagePayload0%
getExpectedKeys0%
getLoggerName0%
generateGallerySeo0%
getLoggerName0%
generateTranslation0%
getExpectedKeys0%
getLoggerName0%
__construct0%
translateStrings0%
translateContent0%
translateArticle0%
translateTag0%
translateImageGallery0%
sendRequest0%
createImageFromFile0%
processSingleImage0%
addImageToGallery0%
parseIpHeader0%
isInternalIp0%
unblockIp0%
extract0%
getArchiveType0%
extractZip0%
extractTar0%
isPathTraversal0%
filterImageFiles0%
isValidImageFile0%
getTempDirectory0%
cleanup0%
deleteDirectory0%
getSupportedImageTypes0%
getSupportedArchiveTypes0%
setLimits0%
formatFileSize0%
initialize0%
processMarkdown0%
processMarkdownAlignmentSyntax0%
renderGalleryPlaceholder0%
generateGdprCompliantEmbed0%
handleSearchWithStatus0%
buildPickerQuery0%
handlePickerSearch0%
setupPickerPagination0%
handlePickerAjaxResponse0%
applyPickerExclusion0%
getRequestLimit0%
getRequestPage0%
validateFileExtension0%
validateNotDangerousExtension0%
getSeoAccessibleFields0%
hasSeoContent0%
getSeoData0%
setSeoData0%
getEffectiveMetaTitle0%
getEffectiveMetaDescription0%
queueJobs0%
queueDelayedJob0%
getStandardSeoFields0%
getAllSeoFields0%
emptySeoFields0%
emptyTranslationFields0%
updateEmptySeoFields0%
sendConfirmationEmailMessage10%
_processUploadsAndSetFlash10%
sendPasswordResetEmail11%
beforeSave14%
afterSave14%
render15%
afterSave16%
generateResultMessage20%
afterSave23%
handleCookieConsent28%
getPreviewImageUrl33%
queuePreviewGeneration33%
getClientIp41%
beforeFilter42%
beforeDelete42%
delete44%
execute44%
processArchive45%
handleSearch47%
add48%
edit52%
processYouTubePlaceholders54%
bootstrap55%
setLocaleForLanguage55%
processUploadedFiles60%
createBlockedResponse61%
afterSave61%
view62%
edit62%
index62%
processResponsiveImages63%
edit65%
edit66%
getEnabledLanguages66%
_setPassword66%
lockEnabledAccountError66%
setLocalForAdminArea66%
getEnabledLocales66%
index68%
display69%
edit69%
add70%
edit70%
beforeRender70%
write70%
setEnabledLanguages71%
__get71%
log72%
setupAssociations72%
addImageValidationRules72%
getMetaDescription75%
title75%
delete75%
__construct75%
loadRouteConfigs75%
afterSave75%
add75%
initialize75%
register78%
delete80%
beforeSave80%
getImageUrlBySize80%
saveSettings80%
afterSave82%
delete83%
delete83%
blockIp83%
index84%
process85%
delete85%
updateRateLimit85%
tableExists85%
reorder86%
trackSuspiciousActivity86%
confirmEmail87%
index88%
sanitize88%
forgotPassword89%

Project Risks

Method CRAP
importTableData1056
execute930
execute306
execute156
videoSelect156
afterSave132
execute132
execute132
parsePoFile132
extract110
extractZip110
exportTableData90
extractTar90
getClientIp74
generateRandomText72
addImages72
addComment72
display72
execute72
translateContent72
toggleMySqlForeignKeyChecks56
execute56
bulkUpload56
generateHreflangLinks56
getLatestConsent56
getContent42
_exportAllTables42
ensureTopLevelTags42
createImage42
deleteUploadedImage42
createSmartMontagePreview42
createImage42
getTotalFileSize42
afterSave42
getArchiveType42
validateNotDangerousExtension42
getEffectiveMetaTitle42
getEffectiveMetaDescription42
_processUploadsAndSetFlash41
execute30
execute30
treeIndex30
clearAll30
sendEmail30
prepareEmailVariables30
generateLink30
index30
filterStats30
treeIndex30
index30
index30
execute30
execute30
execute30
execute30
translateStrings30
filterImageFiles30
formatFileSize30
delete27
reorder21
execute20
bake20
renderBreadcrumbs20
generateArticle20
execute20
execute20
clear20
updateImageOrder20
picker20
index20
index20
delete20
execute20
generatePreview20
clearExistingPreview20
execute20
execute20
createImageFromFile20
isPathTraversal20
cleanup20
deleteDirectory20
renderGalleryPlaceholder20
handleSearchWithStatus20
validateFileExtension20
updateEmptySeoFields20
addImageValidationRules19
processArchive18
afterSave17
edit17
beforeRender15
edit15
handleCookieConsent14
beforeSave14
index13
afterSave13
getSearchFields12
display12
updateUserPassword12
writeMetadata12
writeFileContent12
execute12
index12
add12
edit12
removeImage12
imageSelect12
add12
edit12
add12
edit12
viewRecords12
dashboard12
extractBrowser12
add12
edit12
add12
index12
applyTranslations12
execute12
execute12
execute12
saveImages12
getArchiveDates12
unblockIp12
buildPickerQuery12
handlePickerSearch12
hasSeoContent12
setSeoData12
handleSearch11
add11
index10
beforeFilter9
saveSettings9
sendConfirmationEmailMessage9
execute9
sendPasswordResetEmail9
view7
generateResultMessage7
edit7
beforeSave7
afterSave7
trackSuspiciousActivity7
beforeDelete6
processUploadedFiles6
process6
_filteredAssociations6
display6
activeClass6
execute6
createUser6
writeSectionHeader6
writeSectionFooter6
loadAdminUser6
generatePoContent6
delete6
updateTree6
view6
getCacheInfo6
getLastClearedTime6
delete6
picker6
delete6
delete6
pageViewStats6
getBrowserStats6
getHourlyDistribution6
getTopReferrers6
updateTree6
delete6
index6
viewBySlug6
handleEmptySeoFields6
findOrSaveTag6
updateCommentStatus6
createSingleImagePreview6
__construct6
getStatusDisplay6
getStatusClass6
imagesChanged6
sendRequest6
isConfigured6
analyze6
sendRequest6
processSingleImage6
addImageToGallery6
getTempDirectory6
processMarkdownAlignmentSyntax6
handlePickerAjaxResponse6
applyPickerExclusion6
getSeoData6
queueJobs6
emptyTranslationFields6
getPreviewImageUrl5
setLocaleForLanguage5
add5
register5
forgotPassword5
lockEnabledAccountError4
index4
afterSave4
edit4
display4
render4
write4
setupAssociations4
loadRouteConfigs4
delete4
blockIp4
index3
edit3
getEnabledLanguages3
getEnabledLocales3
add3
edit3
__get3
queuePreviewGeneration3
log3
delete3
afterSave3
initialize3
updateRateLimit3
tableExists3
confirmEmail3
bootstrap2
createBlockedResponse2
processResponsiveImages2
_setPassword2
setLocalForAdminArea2
setEnabledLanguages2
getMetaDescription2
title2
__construct2
getImageUrlBySize2
delete2
delete2
delete2
sanitize2