Classes

Coverage Distribution

Complexity

Insufficient Coverage

Class Coverage
MediaWiki\Extension\DiscussionTools\Actions\SubscribeAction0%
MediaWiki\Extension\DiscussionTools\SubscriptionStore0%
MediaWiki\Extension\DiscussionTools\Notifications\EnhancedEchoMentionPresentationModel0%
MediaWiki\Extension\DiscussionTools\Notifications\PlaintextEchoPresentationModelSection0%
MediaWiki\Extension\DiscussionTools\Notifications\RemovedTopicPresentationModel0%
MediaWiki\Extension\DiscussionTools\Notifications\SubscribedNewCommentPresentationModel0%
MediaWiki\Extension\DiscussionTools\OverflowMenuItem0%
MediaWiki\Extension\DiscussionTools\ResourceLoaderData0%
MediaWiki\Extension\DiscussionTools\SpecialDiscussionToolsDebug0%
MediaWiki\Extension\DiscussionTools\SpecialFindComment0%
MediaWiki\Extension\DiscussionTools\SpecialGoToComment0%
MediaWiki\Extension\DiscussionTools\SpecialTopicSubscriptions0%
MediaWiki\Extension\DiscussionTools\SubscriptionItem0%
MediaWiki\Extension\DiscussionTools\ThreadItem\ContentHeadingItem0%
MediaWiki\Extension\DiscussionTools\Notifications\AddedTopicPresentationModel0%
MediaWiki\Extension\DiscussionTools\ThreadItem\DatabaseCommentItem0%
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\NewTopicOptOutActiveUsers0%
MediaWiki\Extension\DiscussionTools\Maintenance\PersistRevisionThreadItems0%
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsTrait0%
MediaWiki\Extension\DiscussionTools\Notifications\DiscussionToolsEventTrait0%
MediaWiki\Extension\DiscussionTools\ThreadItem\HeadingItemTrait0%
MediaWiki\Extension\DiscussionTools\Actions\UnsubscribeAction0%
MediaWiki\Extension\DiscussionTools\Notifications\EnhancedEchoEditUserTalkPresentationModel0%
MediaWiki\Extension\DiscussionTools\NodeFilter0%
MediaWiki\Extension\DiscussionTools\Hooks\DiscussionToolsHooks0%
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsEdit0%
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsFindComment0%
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\BetaPreferenceHooks0%
MediaWiki\Extension\DiscussionTools\Hooks\DataUpdatesHooks0%
MediaWiki\Extension\DiscussionTools\ThreadItem\ThreadItemTrait0%
MediaWiki\Extension\DiscussionTools\Hooks\EchoHooks0%
MediaWiki\Extension\DiscussionTools\Hooks\HookUtils0%
MediaWiki\Extension\DiscussionTools\Hooks\TagHooks0%
MediaWiki\Extension\DiscussionTools\Hooks\ResourceLoaderHooks0%
MediaWiki\Extension\DiscussionTools\Hooks\RegistrationHooks0%
MediaWiki\Extension\DiscussionTools\Hooks\PreferenceHooks0%
MediaWiki\Extension\DiscussionTools\Hooks\ParserHooks0%
MediaWiki\Extension\DiscussionTools\Hooks\PageHooks0%
MediaWiki\Extension\DiscussionTools\Hooks\InstallerHooks0%
MediaWiki\Extension\DiscussionTools\ThreadItem\CommentItemTrait28%
MediaWiki\Extension\DiscussionTools\Notifications\EventDispatcher48%
MediaWiki\Extension\DiscussionTools\ImmutableRange51%
MediaWiki\Extension\DiscussionTools\ThreadItem\ContentCommentItem56%
MediaWiki\Extension\DiscussionTools\CommentModifier65%
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsCompare66%
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsPageInfo74%
MediaWiki\Extension\DiscussionTools\CommentFormatter82%
MediaWiki\Extension\DiscussionTools\LanguageData85%
MediaWiki\Extension\DiscussionTools\ThreadItem\ContentThreadItem88%

Project Risks

Class CRAP
MediaWiki\Extension\DiscussionTools\Hooks\HookUtils12882
MediaWiki\Extension\DiscussionTools\Hooks\PageHooks5700
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsEdit3422
MediaWiki\Extension\DiscussionTools\ImmutableRange2509
MediaWiki\Extension\DiscussionTools\TopicSubscriptionsPager1892
MediaWiki\Extension\DiscussionTools\SubscriptionStore1056
MediaWiki\Extension\DiscussionTools\Notifications\EventDispatcher777
MediaWiki\Extension\DiscussionTools\Hooks\PreferenceHooks702
MediaWiki\Extension\DiscussionTools\CommentModifier592
MediaWiki\Extension\DiscussionTools\Maintenance\PersistRevisionThreadItems506
MediaWiki\Extension\DiscussionTools\Actions\SubscribeAction462
MediaWiki\Extension\DiscussionTools\ResourceLoaderData462
MediaWiki\Extension\DiscussionTools\Actions\UnsubscribeAction462
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsFindComment380
MediaWiki\Extension\DiscussionTools\SpecialFindComment342
MediaWiki\Extension\DiscussionTools\Notifications\RemovedTopicPresentationModel342
MediaWiki\Extension\DiscussionTools\Notifications\SubscribedNewCommentPresentationModel342
MediaWiki\Extension\DiscussionTools\TreeWalker272
MediaWiki\Extension\DiscussionTools\Maintenance\NewTopicOptOutActiveUsers272
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsTrait240
MediaWiki\Extension\DiscussionTools\ThreadItem\ContentHeadingItem210
MediaWiki\Extension\DiscussionTools\SpecialDiscussionToolsDebug210
MediaWiki\Extension\DiscussionTools\Notifications\DiscussionToolsEventTrait182
MediaWiki\Extension\DiscussionTools\ThreadItem\DatabaseThreadItem182
MediaWiki\Extension\DiscussionTools\CommentFormatter162
MediaWiki\Extension\DiscussionTools\Hooks\ParserHooks156
MediaWiki\Extension\DiscussionTools\DatabaseThreadItemSet132
MediaWiki\Extension\DiscussionTools\ContentThreadItemSet132
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsSubscribe110
MediaWiki\Extension\DiscussionTools\ThreadItem\ContentCommentItem90
MediaWiki\Extension\DiscussionTools\SpecialGoToComment90
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsPageInfo79
MediaWiki\Extension\DiscussionTools\Notifications\AddedTopicPresentationModel72
MediaWiki\Extension\DiscussionTools\ThreadItem\CommentItemTrait64
MediaWiki\Extension\DiscussionTools\Hooks\EchoHooks56
MediaWiki\Extension\DiscussionTools\Notifications\EnhancedEchoEditUserTalkPresentationModel56
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsPreview56
MediaWiki\Extension\DiscussionTools\LanguageData43
MediaWiki\Extension\DiscussionTools\ThreadItem\ContentThreadItem42
MediaWiki\Extension\DiscussionTools\ThreadItemFormatter42
MediaWiki\Extension\DiscussionTools\Hooks\TagHooks42
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsCompare40
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsGetSubscriptions30
MediaWiki\Extension\DiscussionTools\Hooks\DataUpdatesHooks30
MediaWiki\Extension\DiscussionTools\Notifications\PlaintextEchoPresentationModelSection30
MediaWiki\Extension\DiscussionTools\Hooks\RegistrationHooks30
MediaWiki\Extension\DiscussionTools\Hooks\DiscussionToolsHooks20
MediaWiki\Extension\DiscussionTools\Notifications\EnhancedEchoMentionPresentationModel20
MediaWiki\Extension\DiscussionTools\ThreadItem\DatabaseHeadingItem20
MediaWiki\Extension\DiscussionTools\Hooks\BetaPreferenceHooks12
MediaWiki\Extension\DiscussionTools\Hooks\ResourceLoaderHooks12
MediaWiki\Extension\DiscussionTools\NodeFilter6

Methods

Coverage Distribution

Complexity

Insufficient Coverage

Method Coverage
__construct0%
onSubmit0%
execute0%
__construct0%
getRedirect0%
__construct0%
getDescription0%
displayItems0%
onSuccess0%
alterForm0%
getGroupName0%
getShowAlways0%
requiresPost0%
getDisplayFormat0%
getSubpageField0%
getFormFields0%
__construct0%
formatComments0%
onSubmit0%
getDescription0%
__construct0%
getDisplayFormat0%
getSubscriptionItemsForTopic0%
jsonSerialize0%
updateSubscriptionNotifiedTimestamp0%
updateSubscriptionTimestamp0%
addAutoSubscriptionForUser0%
removeSubscriptionForUser0%
addSubscriptionForUser0%
getSubscriptionItemFromRow0%
getSubscriptionItemsForUser0%
getUserIdentity0%
fetchSubscriptions0%
__construct0%
isMuted0%
getState0%
getNotificationTimestamp0%
getCreatedTimestamp0%
getLinkTarget0%
getItemName0%
requiresPost0%
getSubpageField0%
getTimestampRanges0%
getPrimaryLink0%
getIconType0%
__construct0%
getSecondaryLinks0%
getBodyMessage0%
getCompactHeaderMessage0%
getHeaderMessage0%
getHeaderMessageKey0%
canRender0%
getPrimaryLink0%
getIconType0%
__construct0%
getTitleWithSection0%
getParsedSectionTitle0%
inEventSample0%
locateSubscribedUsers0%
addAutoSubscription0%
addCommentChangeTag0%
canRender0%
jsonSerialize0%
getFormFields0%
getLocalData0%
getDescription0%
__construct0%
makeTestModule0%
addOptionalDependencies0%
getTermsOfUseMessagesVersion0%
getTermsOfUseMessagesParsed0%
getTermsOfUseMessages0%
getContentLanguageMessages0%
getWeight0%
getHeaderMessageKey0%
getId0%
jsonSerialize0%
__construct0%
getUnsubscribeConfirmationMessageKeys0%
getSecondaryLinks0%
getBodyMessage0%
getCompactHeaderMessage0%
getHeaderMessage0%
getMentions0%
getHeading0%
generateEventsForRevision0%
getQueryInfo0%
filterNode0%
nextNode0%
__construct0%
isFieldSortable0%
getIndexField0%
getDefaultDirections0%
getDefaultSort0%
getCellAttrs0%
execute0%
formatValueTopic0%
formatValuePage0%
maybeFormatAsList0%
formatValue0%
getFieldNames0%
preprocessResults0%
__construct0%
findThreadItemsInCurrentRevision0%
__construct0%
skipReason0%
makeLink0%
getContentSnippet0%
isSubscribable0%
jsonSerialize0%
getSubscribableHeading0%
getHeading0%
jsonSerializeForDiff0%
jsonSerialize0%
addMarkAsRead0%
getCommentLink0%
updatePrefs0%
transformHTML0%
getParsoidClient0%
getUserForPreview0%
previewMessage0%
processRow0%
process0%
execute0%
__construct0%
formatLine0%
__construct0%
getSubscribableHeading0%
setHeadingLevel0%
getRootNode0%
getType0%
getLatestReply0%
getCommentCount0%
jsonSerialize0%
setPlaceholderHeading0%
isPlaceholderHeading0%
getHeadingLevel0%
setLevel0%
setUneditableSection0%
isUneditableSection0%
getLinkableTitle0%
__construct0%
setAuthor0%
setTimestamp0%
setSignatureRanges0%
addSignatureRange0%
getWarnings0%
setRange0%
isCanonicalPermalink0%
getRevision0%
getLevel0%
getTranscludedFrom0%
getReplies0%
getParent0%
getType0%
getId0%
addReply0%
getName0%
getPage0%
__construct0%
__construct0%
isPlaceholderHeading0%
getHeadingLevel0%
__construct0%
getSubscribableHeading0%
getHeading0%
getTimestamp0%
getAuthor0%
getPageTitle0%
jsonSerialize0%
getParsedRevision0%
getParser0%
hasLedeContent0%
appendToEmptyTalkPage0%
isEmptyTalkPage0%
postprocessTableOfContents0%
postprocessVisualEnhancementsSubtitle0%
getSignatureRelativeTime0%
removeInteractiveTools0%
getJavaScriptClassName0%
__construct0%
isWriteMode0%
needsToken0%
getAllowedParams0%
execute0%
__construct0%
isInternal0%
getAllowedParams0%
hasCommentsInLedeContent0%
whitespaceParsoidHack0%
__construct0%
__construct0%
findCommentsByName0%
getCommentItems0%
getThreadItems0%
updateIdAndNameMaps0%
addThreadItem0%
getNewTopicsSubscriptionId0%
closestElementWithSibling0%
addHtmlReply0%
allOfType0%
addWikitextReply0%
prepareHtmlReply0%
prepareWikitextReply0%
transferReply0%
addReply0%
addSiblingListItem0%
unwrapFragment0%
execute0%
isInternal0%
getThreads0%
usesOOUI0%
getDescription0%
requiresUnblock0%
getName0%
show0%
getPageTitle0%
__construct0%
checkCanExecute0%
onSuccess0%
alterForm0%
onSubmit0%
alterForm0%
getFormFields0%
getDescription0%
requiresUnblock0%
getName0%
show0%
getFormFields0%
onSubmit0%
getAllowedParams0%
__construct0%
execute0%
__construct0%
isWriteMode0%
needsToken0%
getAllowedParams0%
getValue0%
execute0%
isWriteMode0%
onSuccess0%
needsToken0%
getAllowedParams0%
execute0%
__construct0%
isInternal0%
checkCanExecute0%
usesOOUI0%
findCommentById0%
isEmpty0%
getThreadsStructured0%
onParserOutputPostCacheTransform0%
onRegistration0%
onLocalUserCreated0%
onGetPreferences0%
arrayRenameKey0%
__construct0%
onGetDoubleUnderscoreIDs0%
onParserAfterTidy0%
transformHtml0%
onResourceLoaderGetConfigVars0%
__construct0%
getNewTopicsSubscriptionButton0%
onSkinTemplateNavigation__Universal0%
onSidebarBeforeOutput0%
addThreadItem0%
onBeforeDisplayNoArticleText0%
onGetActionName0%
onOutputPageParserOutput0%
__construct0%
onChangeTagsListActive0%
onBeforePageDisplay0%
getHeaderMessage0%
jsonSerialize0%
getPrimaryLink0%
jsonSerialize0%
getBodyMessage0%
getPrimaryLink0%
getUnsubscribeConfirmationMessageKeys0%
getCompactHeaderMessage0%
getHeaderMessageKey0%
onListDefinedTags0%
getPrimaryLink0%
acceptNode0%
surroundContents0%
insertNode0%
extractContents0%
setStart0%
getDiscussionToolsTagsFromRequest0%
onRecentChange_save0%
onOutputPageBeforeHTML0%
getEmptyStateHtml0%
isMobile0%
__construct0%
onEchoGetEventsForRevision0%
onEchoGetBundleRules0%
__construct0%
onDiscussionToolsAddOverflowMenuItems0%
onRevisionDataUpdates0%
__construct0%
onGetBetaFeaturePreferences0%
getThreadsStructured0%
parseRevisionParsoidHtml0%
getThreads0%
findCommentById0%
findCommentsByName0%
getCommentItems0%
getThreadItems0%
updateIdAndNameMaps0%
isEmpty0%
hasPagePropCached0%
onBeforeCreateEchoEvent0%
featureConflictsWithGadget0%
shouldShowNewSectionTab0%
pageSubjectExists0%
isFeatureAvailableToUser0%
shouldDisplayEmptyState0%
shouldAddAutoSubscription0%
shouldOpenNewTopicTool0%
isFeatureEnabledForOutput0%
onLoadExtensionSchemaUpdates0%
isAvailableForTitle0%
determineUserABTestBucket0%
isFeatureEnabledForUser0%
logAddedComments7%
getThreadItemSet33%
findOrInsertId38%
getTranscludedFrom40%
execute41%
setStartOrEnd53%
addDiscussionTools61%
computeTranscludedFrom69%
convertDateFormat69%
cloneContents74%
getHeadlineNodeAndOffset76%
isLanguageRequiringReplyIcon78%
execute81%
getHTML83%
generateEventsFromItemSets84%
findAddedItems84%
compareRanges88%
getThreadItemFromRow88%
getTimestampRegexp88%
compareBoundaryPoints88%

Project Risks

Method CRAP
execute2970
extractContents812
isFeatureEnabledForOutput702
onBeforePageDisplay552
onGetPreferences380
logAddedComments246
execute182
isAvailableForTitle182
previewMessage156
onOutputPageParserOutput132
isFeatureAvailableToUser132
formatValueTopic132
makeTestModule110
shouldOpenNewTopicTool110
getEmptyStateHtml110
shouldDisplayEmptyState110
insertNode110
process90
unwrapFragment90
onOutputPageBeforeHTML90
execute90
formatValue90
nextNode90
surroundContents90
closestElementWithSibling72
transferReply72
execute72
getRedirect72
execute66
addReply56
isFeatureEnabledForUser56
prepareHtmlReply56
getNewTopicsSubscriptionButton56
cloneContents54
convertDateFormat52
computeTranscludedFrom45
featureConflictsWithGadget42
getCommentLink42
transformHtml42
skipReason42
filterNode42
formatValuePage42
execute42
pageSubjectExists42
determineUserABTestBucket42
getSubscriptionItemsForUser42
parseRevisionParsoidHtml42
getThreadItemSet39
getTimestampRegexp32
postprocessVisualEnhancementsSubtitle30
fetchSubscriptions30
onSuccess30
formatComments30
shouldAddAutoSubscription30
postprocessTableOfContents30
onRegistration30
getMentions30
addSubscriptionForUser30
getSecondaryLinks30
shouldShowNewSectionTab30
compareRanges23
generateEventsFromItemSets21
getPrimaryLink20
preprocessResults20
getLinkableTitle20
inEventSample20
getSubscriptionItemsForTopic20
generateEventsForRevision20
displayItems20
removeSubscriptionForUser20
addMarkAsRead20
getSubscribableHeading20
findThreadItemsInCurrentRevision20
getPageTitle20
execute20
onEchoGetBundleRules20
onGetActionName20
onDiscussionToolsAddOverflowMenuItems20
onRevisionDataUpdates20
allOfType20
setStartOrEnd14
onLocalUserCreated12
onSubmit12
addThreadItem12
updateSubscriptionTimestamp12
formatLine12
getSignatureRelativeTime12
execute12
maybeFormatAsList12
getSecondaryLinks12
checkCanExecute12
getFormFields12
show12
processRow12
getPageTitle12
checkCanExecute12
getContentSnippet12
getHeading12
getFormFields12
isSubscribable12
addOptionalDependencies12
addThreadItem12
jsonSerialize12
getBodyMessage12
addAutoSubscription12
getTitleWithSection12
onSidebarBeforeOutput12
onSkinTemplateNavigation__Universal12
arrayRenameKey12
onRecentChange_save12
getThreadItemFromRow11
compareBoundaryPoints11
findAddedItems8
findOrInsertId7
getTranscludedFrom7
jsonSerialize6
getPrimaryLink6
getCellAttrs6
isFieldSortable6
getHeaderMessage6
getValue6
getPrimaryLink6
getHeaderMessageKey6
onSuccess6
makeLink6
acceptNode6
show6
getUserForPreview6
onParserOutputPostCacheTransform6
onSuccess6
jsonSerializeForDiff6
onParserAfterTidy6
jsonSerialize6
getPrimaryLink6
getHeaderMessageKey6
isCanonicalPermalink6
onGetBetaFeaturePreferences6
onEchoGetEventsForRevision6
getPrimaryLink6
jsonSerialize6
getHeaderMessageKey6
getHeaderMessage6
getBodyMessage6
hasPagePropCached6
getLocalData6
getTermsOfUseMessagesParsed6
getTermsOfUseMessagesVersion6
getParsedSectionTitle6
isMobile6
onBeforeDisplayNoArticleText6
onResourceLoaderGetConfigVars6
getHeaderMessage6
addHtmlReply6
addWikitextReply6
prepareWikitextReply6
addAutoSubscriptionForUser6
jsonSerialize6
jsonSerialize6
__construct6
jsonSerialize6
__construct6
getHeadlineNodeAndOffset5
isLanguageRequiringReplyIcon5
addDiscussionTools3
execute3
getHTML2