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\ThreadItem\ContentThreadItem85%
MediaWiki\Extension\DiscussionTools\LanguageData85%

Project Risks

Class CRAP
MediaWiki\Extension\DiscussionTools\Hooks\HookUtils12882
MediaWiki\Extension\DiscussionTools\Hooks\PageHooks5700
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsEdit3192
MediaWiki\Extension\DiscussionTools\ImmutableRange2509
MediaWiki\Extension\DiscussionTools\SubscriptionStore1056
MediaWiki\Extension\DiscussionTools\Notifications\EventDispatcher768
MediaWiki\Extension\DiscussionTools\TopicSubscriptionsPager756
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\ApiDiscussionToolsFindComment420
MediaWiki\Extension\DiscussionTools\SpecialFindComment342
MediaWiki\Extension\DiscussionTools\Notifications\SubscribedNewCommentPresentationModel342
MediaWiki\Extension\DiscussionTools\Notifications\RemovedTopicPresentationModel342
MediaWiki\Extension\DiscussionTools\TreeWalker272
MediaWiki\Extension\DiscussionTools\Maintenance\NewTopicOptOutActiveUsers272
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsTrait240
MediaWiki\Extension\DiscussionTools\SpecialDiscussionToolsDebug210
MediaWiki\Extension\DiscussionTools\ThreadItem\ContentHeadingItem210
MediaWiki\Extension\DiscussionTools\Notifications\DiscussionToolsEventTrait182
MediaWiki\Extension\DiscussionTools\CommentFormatter166
MediaWiki\Extension\DiscussionTools\Hooks\ParserHooks156
MediaWiki\Extension\DiscussionTools\DatabaseThreadItemSet132
MediaWiki\Extension\DiscussionTools\ContentThreadItemSet132
MediaWiki\Extension\DiscussionTools\SpecialGoToComment132
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsSubscribe110
MediaWiki\Extension\DiscussionTools\ThreadItem\ContentCommentItem90
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsPageInfo79
MediaWiki\Extension\DiscussionTools\Notifications\AddedTopicPresentationModel72
MediaWiki\Extension\DiscussionTools\ThreadItem\CommentItemTrait64
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsPreview56
MediaWiki\Extension\DiscussionTools\Notifications\EnhancedEchoEditUserTalkPresentationModel56
MediaWiki\Extension\DiscussionTools\Hooks\EchoHooks56
MediaWiki\Extension\DiscussionTools\ThreadItem\ContentThreadItem48
MediaWiki\Extension\DiscussionTools\LanguageData43
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%
requiresPost0%
__construct0%
getDescription0%
displayItems0%
onSuccess0%
onSubmit0%
alterForm0%
getShowAlways0%
getDisplayFormat0%
__construct0%
getSubpageField0%
getFormFields0%
__construct0%
formatComments0%
onSubmit0%
requiresPost0%
getDisplayFormat0%
getRedirect0%
execute0%
getFormFields0%
__construct0%
addAutoSubscriptionForUser0%
removeSubscriptionForUser0%
addSubscriptionForUser0%
getSubscriptionItemFromRow0%
getSubscriptionItemsForTopic0%
getSubscriptionItemsForUser0%
fetchSubscriptions0%
isMuted0%
getDescription0%
getState0%
getNotificationTimestamp0%
getCreatedTimestamp0%
getLinkTarget0%
getItemName0%
getUserIdentity0%
__construct0%
getGroupName0%
getSubpageField0%
getDescription0%
updateSubscriptionNotifiedTimestamp0%
canRender0%
__construct0%
getSecondaryLinks0%
getBodyMessage0%
getCompactHeaderMessage0%
getHeaderMessage0%
getHeaderMessageKey0%
getPrimaryLink0%
getIconType0%
canRender0%
__construct0%
getTitleWithSection0%
getParsedSectionTitle0%
inEventSample0%
locateSubscribedUsers0%
addAutoSubscription0%
addCommentChangeTag0%
getPageTitle0%
getIconType0%
getPrimaryLink0%
__construct0%
getWeight0%
makeTestModule0%
addOptionalDependencies0%
getTermsOfUseMessagesVersion0%
getTermsOfUseMessagesParsed0%
getTermsOfUseMessages0%
getContentLanguageMessages0%
getLocalData0%
getId0%
jsonSerialize0%
jsonSerialize0%
__construct0%
getUnsubscribeConfirmationMessageKeys0%
getSecondaryLinks0%
getBodyMessage0%
getCompactHeaderMessage0%
getHeaderMessage0%
getHeaderMessageKey0%
updateSubscriptionTimestamp0%
jsonSerialize0%
jsonSerialize0%
getQueryInfo0%
filterNode0%
nextNode0%
__construct0%
isFieldSortable0%
getIndexField0%
getDefaultDirections0%
getDefaultSort0%
getCellAttrs0%
execute0%
formatValue0%
getFieldNames0%
preprocessResults0%
__construct0%
findThreadItemsInCurrentRevision0%
formatLine0%
makeLink0%
__construct0%
__construct0%
skipReason0%
getTranscludedFrom0%
getContentSnippet0%
isSubscribable0%
jsonSerialize0%
getSubscribableHeading0%
getHeading0%
jsonSerializeForDiff0%
jsonSerialize0%
addMarkAsRead0%
getCommentLink0%
updatePrefs0%
transformHTML0%
getParsoidClient0%
getUserForPreview0%
previewMessage0%
processRow0%
process0%
execute0%
__construct0%
getLevel0%
getReplies0%
getMentions0%
isUneditableSection0%
getCommentCount0%
jsonSerialize0%
setPlaceholderHeading0%
isPlaceholderHeading0%
setHeadingLevel0%
getHeadingLevel0%
setUneditableSection0%
getLinkableTitle0%
getType0%
__construct0%
setAuthor0%
setTimestamp0%
setSignatureRanges0%
addSignatureRange0%
getSubscribableHeading0%
getHeading0%
getTimestampRanges0%
getLatestReply0%
getRootNode0%
getParent0%
isPlaceholderHeading0%
getType0%
getId0%
addReply0%
getName0%
getRevision0%
getPage0%
__construct0%
getHeadingLevel0%
getWarnings0%
__construct0%
getSubscribableHeading0%
getHeading0%
getTimestamp0%
getAuthor0%
__construct0%
setRange0%
setLevel0%
getParsedRevision0%
generateEventsForRevision0%
getPrimaryLink0%
getParser0%
hasLedeContent0%
appendToEmptyTalkPage0%
isEmptyTalkPage0%
postprocessTableOfContents0%
postprocessVisualEnhancementsSubtitle0%
getSignatureRelativeTime0%
removeInteractiveTools0%
getJavaScriptClassName0%
__construct0%
isWriteMode0%
needsToken0%
getAllowedParams0%
execute0%
__construct0%
isInternal0%
getAllowedParams0%
hasCommentsInLedeContent0%
whitespaceParsoidHack0%
__construct0%
__construct0%
getCommentItems0%
getThreadItems0%
updateIdAndNameMaps0%
jsonSerialize0%
addThreadItem0%
getNewTopicsSubscriptionId0%
closestElementWithSibling0%
addHtmlReply0%
allOfType0%
addWikitextReply0%
prepareHtmlReply0%
prepareWikitextReply0%
transferReply0%
addReply0%
addSiblingListItem0%
unwrapFragment0%
execute0%
isInternal0%
findCommentById0%
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%
findCommentsByName0%
isEmpty0%
getThreads0%
__construct0%
onGetPreferences0%
arrayRenameKey0%
__construct0%
onGetDoubleUnderscoreIDs0%
onParserAfterTidy0%
onParserOutputPostCacheTransform0%
transformHtml0%
getNewTopicsSubscriptionButton0%
onRegistration0%
onSkinTemplateNavigation__Universal0%
onSidebarBeforeOutput0%
getEmptyStateHtml0%
getThreadsStructured0%
onGetActionName0%
onOutputPageParserOutput0%
onOutputPageBeforeHTML0%
onLocalUserCreated0%
__construct0%
isMobile0%
acceptNode0%
getBodyMessage0%
getPrimaryLink0%
getUnsubscribeConfirmationMessageKeys0%
getCompactHeaderMessage0%
getHeaderMessage0%
getHeaderMessageKey0%
getPrimaryLink0%
surroundContents0%
onResourceLoaderGetConfigVars0%
insertNode0%
extractContents0%
setStart0%
getDiscussionToolsTagsFromRequest0%
onRecentChange_save0%
onListDefinedTags0%
onChangeTagsListActive0%
onBeforePageDisplay0%
onBeforeDisplayNoArticleText0%
__construct0%
__construct0%
onEchoGetEventsForRevision0%
onEchoGetBundleRules0%
onBeforeCreateEchoEvent0%
onLoadExtensionSchemaUpdates0%
onRevisionDataUpdates0%
__construct0%
onGetBetaFeaturePreferences0%
getThreadsStructured0%
parseRevisionParsoidHtml0%
getThreads0%
findCommentById0%
findCommentsByName0%
getCommentItems0%
getThreadItems0%
updateIdAndNameMaps0%
isEmpty0%
addThreadItem0%
hasPagePropCached0%
onDiscussionToolsAddOverflowMenuItems0%
featureConflictsWithGadget0%
isAvailableForTitle0%
shouldAddAutoSubscription0%
pageSubjectExists0%
shouldDisplayEmptyState0%
shouldOpenNewTopicTool0%
shouldShowNewSectionTab0%
isFeatureEnabledForOutput0%
jsonSerialize0%
determineUserABTestBucket0%
isFeatureAvailableToUser0%
isFeatureEnabledForUser0%
logAddedComments7%
getThreadItemSet33%
findOrInsertId38%
getTranscludedFrom40%
execute41%
setStartOrEnd53%
addDiscussionTools61%
getHTML66%
computeTranscludedFrom69%
convertDateFormat69%
cloneContents74%
getHeadlineNodeAndOffset76%
isLanguageRequiringReplyIcon78%
execute81%
generateEventsFromItemSets84%
findAddedItems84%
compareRanges88%
getThreadItemFromRow88%
getTimestampRegexp88%
compareBoundaryPoints88%

Project Risks

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