Classes

Coverage Distribution

Complexity

Insufficient Coverage

Class Coverage
MediaWiki\Extension\DiscussionTools\Actions\UnsubscribeAction0%
MediaWiki\Extension\DiscussionTools\ThreadItem\ContentHeadingItem0%
MediaWiki\Extension\DiscussionTools\Notifications\PlaintextEchoPresentationModelSection0%
MediaWiki\Extension\DiscussionTools\Notifications\RemovedTopicPresentationModel0%
MediaWiki\Extension\DiscussionTools\Notifications\SubscribedNewCommentPresentationModel0%
MediaWiki\Extension\DiscussionTools\ResourceLoaderData0%
MediaWiki\Extension\DiscussionTools\SpecialFindComment0%
MediaWiki\Extension\DiscussionTools\SpecialGoToComment0%
MediaWiki\Extension\DiscussionTools\SpecialTopicSubscriptions0%
MediaWiki\Extension\DiscussionTools\SubscriptionItem0%
MediaWiki\Extension\DiscussionTools\SubscriptionStore0%
MediaWiki\Extension\DiscussionTools\ThreadItem\DatabaseCommentItem0%
MediaWiki\Extension\DiscussionTools\Notifications\EnhancedEchoEditUserTalkPresentationModel0%
MediaWiki\Extension\DiscussionTools\ThreadItem\DatabaseHeadingItem0%
MediaWiki\Extension\DiscussionTools\ThreadItem\DatabaseThreadItem0%
MediaWiki\Extension\DiscussionTools\ThreadItemFormatter0%
MediaWiki\Extension\DiscussionTools\TopicSubscriptionsPager0%
MediaWiki\Extension\DiscussionTools\TreeWalker0%
MediaWiki\Extension\DiscussionTools\Maintenance\ManageForeignResources0%
MediaWiki\Extension\DiscussionTools\Maintenance\PersistRevisionThreadItems0%
ApiDiscussionToolsTrait0%
DiscussionToolsEventTrait0%
HeadingItemTrait0%
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsCompare0%
MediaWiki\Extension\DiscussionTools\Notifications\EnhancedEchoMentionPresentationModel0%
MediaWiki\Extension\DiscussionTools\NodeFilter0%
MediaWiki\Extension\DiscussionTools\Hooks\HookUtils0%
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsEdit0%
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsGetSubscriptions0%
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsPreview0%
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsSubscribe0%
MediaWiki\Extension\DiscussionTools\ButtonMenuSelectWidget0%
MediaWiki\Extension\DiscussionTools\ContentThreadItemSet0%
MediaWiki\Extension\DiscussionTools\DatabaseThreadItemSet0%
MediaWiki\Extension\DiscussionTools\Hooks\DataUpdatesHooks0%
MediaWiki\Extension\DiscussionTools\Hooks\EchoHooks0%
ThreadItemTrait0%
MediaWiki\Extension\DiscussionTools\Hooks\InstallerHooks0%
MediaWiki\Extension\DiscussionTools\Hooks\MobileHooks0%
MediaWiki\Extension\DiscussionTools\Hooks\PageHooks0%
MediaWiki\Extension\DiscussionTools\Hooks\ParserHooks0%
MediaWiki\Extension\DiscussionTools\Hooks\PreferenceHooks0%
MediaWiki\Extension\DiscussionTools\Hooks\RegistrationHooks0%
MediaWiki\Extension\DiscussionTools\Hooks\ResourceLoaderHooks0%
MediaWiki\Extension\DiscussionTools\Hooks\TagHooks0%
CommentItemTrait22%
MediaWiki\Extension\DiscussionTools\Notifications\EventDispatcher40%
MediaWiki\Extension\DiscussionTools\ThreadItemStore49%
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsPageInfo53%
MediaWiki\Extension\DiscussionTools\ThreadItem\ContentCommentItem56%
MediaWiki\Extension\DiscussionTools\CommentModifier61%
MediaWiki\Extension\DiscussionTools\CommentFormatter75%
MediaWiki\Extension\DiscussionTools\ImmutableRange76%
MediaWiki\Extension\DiscussionTools\LanguageData85%
MediaWiki\Extension\DiscussionTools\ThreadItem\ContentThreadItem89%

Project Risks

Class CRAP
MediaWiki\Extension\DiscussionTools\Hooks\HookUtils11130
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsEdit2450
MediaWiki\Extension\DiscussionTools\Hooks\PageHooks1806
MediaWiki\Extension\DiscussionTools\SubscriptionStore1260
MediaWiki\Extension\DiscussionTools\Notifications\EventDispatcher1082
MediaWiki\Extension\DiscussionTools\Hooks\PreferenceHooks870
MediaWiki\Extension\DiscussionTools\CommentModifier735
MediaWiki\Extension\DiscussionTools\ThreadItemStore353
MediaWiki\Extension\DiscussionTools\Actions\UnsubscribeAction342
MediaWiki\Extension\DiscussionTools\Notifications\RemovedTopicPresentationModel342
MediaWiki\Extension\DiscussionTools\TopicSubscriptionsPager342
MediaWiki\Extension\DiscussionTools\Notifications\SubscribedNewCommentPresentationModel306
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsCompare306
MediaWiki\Extension\DiscussionTools\TreeWalker306
DiscussionToolsEventTrait306
ApiDiscussionToolsTrait306
MediaWiki\Extension\DiscussionTools\ImmutableRange243
MediaWiki\Extension\DiscussionTools\SpecialFindComment210
MediaWiki\Extension\DiscussionTools\ThreadItem\ContentHeadingItem182
MediaWiki\Extension\DiscussionTools\ThreadItem\DatabaseThreadItem182
CommentItemTrait170
MediaWiki\Extension\DiscussionTools\SubscriptionItem156
MediaWiki\Extension\DiscussionTools\ResourceLoaderData156
MediaWiki\Extension\DiscussionTools\CommentFormatter143
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsPageInfo132
MediaWiki\Extension\DiscussionTools\Maintenance\PersistRevisionThreadItems132
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsSubscribe132
MediaWiki\Extension\DiscussionTools\ContentThreadItemSet132
MediaWiki\Extension\DiscussionTools\DatabaseThreadItemSet132
MediaWiki\Extension\DiscussionTools\SpecialGoToComment132
HeadingItemTrait90
MediaWiki\Extension\DiscussionTools\ThreadItem\ContentCommentItem77
MediaWiki\Extension\DiscussionTools\ThreadItem\ContentThreadItem74
ThreadItemTrait72
MediaWiki\Extension\DiscussionTools\Hooks\ParserHooks72
MediaWiki\Extension\DiscussionTools\Notifications\EnhancedEchoEditUserTalkPresentationModel56
MediaWiki\Extension\DiscussionTools\ThreadItem\DatabaseCommentItem56
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsPreview56
MediaWiki\Extension\DiscussionTools\Hooks\EchoHooks42
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsGetSubscriptions42
MediaWiki\Extension\DiscussionTools\ThreadItem\DatabaseHeadingItem42
MediaWiki\Extension\DiscussionTools\Hooks\TagHooks42
MediaWiki\Extension\DiscussionTools\ThreadItemFormatter42
MediaWiki\Extension\DiscussionTools\LanguageData38
MediaWiki\Extension\DiscussionTools\Notifications\PlaintextEchoPresentationModelSection30
MediaWiki\Extension\DiscussionTools\Hooks\RegistrationHooks30
MediaWiki\Extension\DiscussionTools\Notifications\EnhancedEchoMentionPresentationModel20
MediaWiki\Extension\DiscussionTools\Hooks\DataUpdatesHooks20
MediaWiki\Extension\DiscussionTools\Hooks\MobileHooks12
MediaWiki\Extension\DiscussionTools\Hooks\ResourceLoaderHooks12
MediaWiki\Extension\DiscussionTools\NodeFilter6

Methods

Coverage Distribution

Complexity

Insufficient Coverage

Method Coverage
__construct0%
__construct0%
getDescription0%
__construct0%
getRedirect0%
__construct0%
execute0%
getDescription0%
__construct0%
getUserIdentity0%
getItemName0%
getLinkTarget0%
getCreatedTimestamp0%
getNotificationTimestamp0%
getState0%
isMuted0%
fetchSubscriptions0%
execute0%
getMentions0%
setAuthor0%
setTimestamp0%
setSignatureRanges0%
addSignatureRange0%
getSubscribableHeading0%
getHeading0%
updateSubscriptionNotifiedTimestamp0%
getSubscriptionItemsForUser0%
updateSubscriptionTimestamp0%
addAutoSubscriptionForUser0%
removeSubscriptionForUser0%
addSubscriptionForUser0%
getSubscriptionItemFromRow0%
getSubscriptionItemsForTopic0%
displayItems0%
onSubmit0%
getLinkableTitle0%
getPrimaryLink0%
__construct0%
getSecondaryLinks0%
getBodyMessage0%
getCompactHeaderMessage0%
getHeaderMessage0%
getHeaderMessageKey0%
canRender0%
canRender0%
getIconType0%
__construct0%
getTitleWithSection0%
getParsedSectionTitle0%
inEventSample0%
locateSubscribedUsers0%
getIconType0%
getPrimaryLink0%
alterForm0%
getTermsOfUseMessages0%
getDisplayFormat0%
getFormFields0%
__construct0%
addOptionalDependencies0%
getTermsOfUseMessagesVersion0%
getTermsOfUseMessagesParsed0%
getContentLanguageMessages0%
jsonSerialize0%
getLocalData0%
getSecondaryLinks0%
getBodyMessage0%
getCompactHeaderMessage0%
getHeaderMessage0%
getHeaderMessageKey0%
__construct0%
getHeadingLevel0%
getPageTitle0%
getCellAttrs0%
nextNode0%
__construct0%
isFieldSortable0%
getIndexField0%
getDefaultSort0%
getQueryInfo0%
formatValue0%
__construct0%
getFieldNames0%
preprocessResults0%
__construct0%
getIdsNamesBuilder0%
findThreadItemsInCurrentRevision0%
getThreadItemFromRow0%
filterNode0%
execute0%
fetchItemsResultSet0%
addMarkAsRead0%
isSubscribable0%
jsonSerialize0%
getSubscribableHeading0%
getHeading0%
jsonSerializeForDiff0%
jsonSerialize0%
getContentSnippet0%
__construct0%
getCommentLink0%
getParsoidClient0%
previewMessage0%
parseRevision0%
processRow0%
execute0%
fetchRevisionAndPageForItems0%
findNewestRevisionsById0%
setHeadingLevel0%
getWarnings0%
getHeading0%
getTimestamp0%
getAuthor0%
__construct0%
setRange0%
setLevel0%
getRootNode0%
__construct0%
getType0%
getLatestReply0%
getCommentCount0%
getTranscludedFrom0%
setPlaceholderHeading0%
isPlaceholderHeading0%
getSubscribableHeading0%
getHeadingLevel0%
findNewestRevisionsByName0%
getParent0%
formatLine0%
makeLink0%
__construct0%
getLevel0%
getTranscludedFrom0%
getReplies0%
getType0%
isPlaceholderHeading0%
getId0%
addReply0%
getName0%
getRevision0%
getPage0%
__construct0%
addAutoSubscription0%
addCommentChangeTag0%
jsonSerialize0%
postprocessVisualEnhancementsSubtitle0%
execute0%
getAllowedParams0%
isInternal0%
__construct0%
execute0%
getAllowedParams0%
needsToken0%
isInternal0%
isWriteMode0%
getJavaScriptClassName0%
getParser0%
addDiscussionTools0%
removeInteractiveTools0%
getSignatureRelativeTime0%
isEmptyTalkPage0%
isWriteMode0%
prepareWikitextReply0%
addThreadItem0%
closestElementWithSibling0%
__construct0%
addHtmlReply0%
addWikitextReply0%
prepareHtmlReply0%
transferReply0%
appendToEmptyTalkPage0%
addReply0%
addSiblingListItem0%
unwrapFragment0%
allOfType0%
whitespaceParsoidHack0%
__construct0%
__construct0%
isInternal0%
getThreadItems0%
needsToken0%
show0%
getName0%
requiresUnblock0%
getDescription0%
getFormFields0%
alterForm0%
onSubmit0%
onSuccess0%
usesOOUI0%
checkCanExecute0%
__construct0%
execute0%
addResult0%
getAllowedParams0%
isInternal0%
needsToken0%
execute0%
getAllowedParams0%
getTranscludedFrom0%
execute0%
__construct0%
isInternal0%
getAllowedParams0%
__construct0%
isWriteMode0%
isWriteMode0%
isInternal0%
needsToken0%
getAllowedParams0%
execute0%
__construct0%
updateIdAndNameMaps0%
isEmpty0%
getCommentItems0%
onRegistration0%
findCommentsByName0%
onOutputPageBeforeHTML0%
onGetActionName0%
onBeforeDisplayNoArticleText0%
getEmptyStateHtml0%
onArticleViewHeader0%
onTitleGetEditNotices0%
__construct0%
onParserAfterTidy0%
__construct0%
arrayRenameKey0%
onGetPreferences0%
onGetBetaFeaturePreferences0%
onLocalUserCreated0%
__construct0%
onMinervaNeueTalkPageOverlay0%
getPrimaryLink0%
generateEventsForRevision0%
getParsedRevision0%
jsonSerialize0%
getPrimaryLink0%
jsonSerialize0%
getBodyMessage0%
acceptNode0%
onResourceLoaderGetConfigVars0%
insertNode0%
setStart0%
getDiscussionToolsTagsFromRequest0%
onRecentChange_save0%
onListDefinedTags0%
onChangeTagsListActive0%
__construct0%
onBeforePageDisplay0%
onLoadExtensionSchemaUpdates0%
onBeforeCreateEchoEvent0%
findCommentById0%
getThreads0%
addThreadItem0%
isEmpty0%
updateIdAndNameMaps0%
getThreadItems0%
getCommentItems0%
findCommentsByName0%
shouldAddAutoSubscription0%
getThreads0%
__construct0%
onRevisionDataUpdates0%
findCommentById0%
onEchoGetBundleRules0%
isAvailableForTitle0%
shouldShowNewSectionTab0%
onEchoGetEventsForRevision0%
pageSubjectExists0%
shouldDisplayEmptyState0%
isFeatureEnabledForOutput0%
determineUserABTestBucket0%
isFeatureEnabledForUser0%
isFeatureAvailableToUser0%
featureConflictsWithGadget0%
parseRevisionParsoidHtml0%
hasPagePropCached0%
shouldOpenNewTopicTool0%
logAddedComments8%
setStartOrEnd52%
convertDateFormat69%
cloneContents78%
generateEventsFromItemSets80%
getTimestampRegexp84%
getTimestampString85%
findAddedItems85%
getHeadlineNodeAndOffset87%
compareRanges88%
getTranscludedFrom88%
compareBoundaryPoints88%

Project Risks

Method CRAP
execute1980
isFeatureEnabledForOutput756
onGetPreferences380
logAddedComments264
getThreadItemFromRow182
previewMessage156
isFeatureAvailableToUser156
execute132
insertNode110
onOutputPageBeforeHTML110
onBeforePageDisplay110
nextNode110
shouldDisplayEmptyState110
closestElementWithSibling110
getRedirect110
unwrapFragment90
transferReply72
isFeatureEnabledForUser72
shouldOpenNewTopicTool72
getSubscriptionItemsForUser56
getEmptyStateHtml56
isAvailableForTitle56
fetchSubscriptions56
onParserAfterTidy56
prepareHtmlReply56
postprocessVisualEnhancementsSubtitle56
formatValue56
addReply56
cloneContents45
convertDateFormat43
pageSubjectExists42
execute42
addDiscussionTools42
execute42
featureConflictsWithGadget42
execute42
determineUserABTestBucket42
getCommentLink42
filterNode42
shouldAddAutoSubscription30
getSecondaryLinks30
getMentions30
shouldShowNewSectionTab30
getSubscribableHeading30
onRegistration30
getSubscriptionItemsForTopic30
getTimestampRegexp28
compareRanges23
addMarkAsRead20
processRow20
findThreadItemsInCurrentRevision20
getPrimaryLink20
inEventSample20
fetchRevisionAndPageForItems20
findNewestRevisionsById20
findNewestRevisionsByName20
__construct20
updateSubscriptionTimestamp20
jsonSerialize20
generateEventsForRevision20
execute20
getTranscludedFrom20
execute20
onArticleViewHeader20
onTitleGetEditNotices20
allOfType20
onGetActionName20
generateEventsFromItemSets18
getTranscludedFrom15
setStartOrEnd15
getLocalData12
addThreadItem12
getSecondaryLinks12
onEchoGetBundleRules12
getLinkableTitle12
addOptionalDependencies12
onMinervaNeueTalkPageOverlay12
formatLine12
__construct12
onRevisionDataUpdates12
hasPagePropCached12
onRecentChange_save12
addSubscriptionForUser12
__construct12
getContentSnippet12
execute12
getHeading12
onLocalUserCreated12
onGetBetaFeaturePreferences12
arrayRenameKey12
isSubscribable12
jsonSerialize12
addThreadItem12
getBodyMessage12
getParsedRevision12
show12
addAutoSubscription12
getTranscludedFrom12
getTitleWithSection12
checkCanExecute12
removeSubscriptionForUser12
getHeadlineNodeAndOffset9
compareBoundaryPoints9
findAddedItems8
getParent6
makeLink6
findCommentById6
getSignatureRelativeTime6
addHtmlReply6
addWikitextReply6
preprocessResults6
prepareWikitextReply6
getCellAttrs6
isFieldSortable6
jsonSerialize6
jsonSerializeForDiff6
getFormFields6
__construct6
onResourceLoaderGetConfigVars6
getSubscribableHeading6
__construct6
acceptNode6
getPrimaryLink6
jsonSerialize6
getPrimaryLink6
jsonSerialize6
getParsedSectionTitle6
onBeforeDisplayNoArticleText6
getHeaderMessageKey6
getHeaderMessage6
getPrimaryLink6
jsonSerialize6
getHeaderMessageKey6
getHeaderMessage6
getBodyMessage6
getTermsOfUseMessagesParsed6
getTermsOfUseMessagesVersion6
displayItems6
parseRevisionParsoidHtml6
getCreatedTimestamp6
getNotificationTimestamp6
onEchoGetEventsForRevision6
addAutoSubscriptionForUser6
updateSubscriptionNotifiedTimestamp6
findCommentById6
getSubscribableHeading6
getLatestReply6
getPageTitle6
getTimestampString2