Classes

Coverage Distribution

Complexity

Insufficient Coverage

Class Coverage
MediaWiki\Extension\DiscussionTools\Actions\SubscribeAction0%
MediaWiki\Extension\DiscussionTools\SubscriptionStore0%
MediaWiki\Extension\DiscussionTools\Notifications\EnhancedEchoEditUserTalkPresentationModel0%
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\FixTrailingWhitespaceIds0%
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\CommentThanksPresentationModel0%
MediaWiki\Extension\DiscussionTools\NodeFilter0%
MediaWiki\Extension\DiscussionTools\Hooks\BetaPreferenceHooks0%
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsEdit0%
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsFindComment0%
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsGetSubscriptions0%
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsPreview0%
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsSubscribe0%
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsThank0%
MediaWiki\Extension\DiscussionTools\ButtonMenuSelectWidget0%
MediaWiki\Extension\DiscussionTools\ContentThreadItemSet0%
MediaWiki\Extension\DiscussionTools\DatabaseThreadItemSet0%
MediaWiki\Extension\DiscussionTools\Hooks\ApiHooks0%
MediaWiki\Extension\DiscussionTools\ThreadItem\ThreadItemTrait0%
MediaWiki\Extension\DiscussionTools\Hooks\DataUpdatesHooks0%
MediaWiki\Extension\DiscussionTools\Hooks\PageHooks0%
MediaWiki\Extension\DiscussionTools\Hooks\TagHooks0%
MediaWiki\Extension\DiscussionTools\Hooks\RegistrationHooks0%
MediaWiki\Extension\DiscussionTools\Hooks\PreferenceHooks0%
MediaWiki\Extension\DiscussionTools\Hooks\DiscussionToolsHooks0%
MediaWiki\Extension\DiscussionTools\Hooks\ParserHooks0%
MediaWiki\Extension\DiscussionTools\Hooks\InstallerHooks0%
MediaWiki\Extension\DiscussionTools\Hooks\HookUtils0%
MediaWiki\Extension\DiscussionTools\Hooks\EchoHooks0%
MediaWiki\Extension\DiscussionTools\ThreadItem\CommentItemTrait28%
MediaWiki\Extension\DiscussionTools\Notifications\EventDispatcher48%
MediaWiki\Extension\DiscussionTools\ImmutableRange51%
MediaWiki\Extension\DiscussionTools\ThreadItem\ContentCommentItem56%
MediaWiki\Extension\DiscussionTools\CommentModifier72%
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsCompare73%
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsPageInfo74%
MediaWiki\Extension\DiscussionTools\CommentFormatter82%
MediaWiki\Extension\DiscussionTools\LanguageData85%
MediaWiki\Extension\DiscussionTools\ThreadItem\ContentThreadItem86%

Project Risks

Class CRAP
MediaWiki\Extension\DiscussionTools\Hooks\HookUtils11556
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\PreferenceHooks552
MediaWiki\Extension\DiscussionTools\Maintenance\PersistRevisionThreadItems506
MediaWiki\Extension\DiscussionTools\ResourceLoaderData462
MediaWiki\Extension\DiscussionTools\Actions\UnsubscribeAction462
MediaWiki\Extension\DiscussionTools\Actions\SubscribeAction462
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsFindComment380
MediaWiki\Extension\DiscussionTools\CommentModifier366
MediaWiki\Extension\DiscussionTools\Notifications\CommentThanksPresentationModel342
MediaWiki\Extension\DiscussionTools\Notifications\SubscribedNewCommentPresentationModel342
MediaWiki\Extension\DiscussionTools\Notifications\RemovedTopicPresentationModel342
MediaWiki\Extension\DiscussionTools\SpecialFindComment342
MediaWiki\Extension\DiscussionTools\Maintenance\NewTopicOptOutActiveUsers272
MediaWiki\Extension\DiscussionTools\TreeWalker272
MediaWiki\Extension\DiscussionTools\ThreadItem\ContentHeadingItem272
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsTrait240
MediaWiki\Extension\DiscussionTools\SpecialDiscussionToolsDebug210
MediaWiki\Extension\DiscussionTools\Notifications\DiscussionToolsEventTrait182
MediaWiki\Extension\DiscussionTools\ThreadItem\DatabaseThreadItem182
MediaWiki\Extension\DiscussionTools\Hooks\ParserHooks156
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsThank156
MediaWiki\Extension\DiscussionTools\CommentFormatter155
MediaWiki\Extension\DiscussionTools\ContentThreadItemSet132
MediaWiki\Extension\DiscussionTools\Hooks\DiscussionToolsHooks132
MediaWiki\Extension\DiscussionTools\DatabaseThreadItemSet132
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsSubscribe110
MediaWiki\Extension\DiscussionTools\ThreadItem\ContentCommentItem90
MediaWiki\Extension\DiscussionTools\SpecialGoToComment90
MediaWiki\Extension\DiscussionTools\Hooks\EchoHooks90
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsPageInfo79
MediaWiki\Extension\DiscussionTools\Notifications\AddedTopicPresentationModel72
MediaWiki\Extension\DiscussionTools\Maintenance\FixTrailingWhitespaceIds72
MediaWiki\Extension\DiscussionTools\ThreadItem\CommentItemTrait64
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsPreview56
MediaWiki\Extension\DiscussionTools\Notifications\EnhancedEchoEditUserTalkPresentationModel56
MediaWiki\Extension\DiscussionTools\ThreadItem\ContentThreadItem46
MediaWiki\Extension\DiscussionTools\LanguageData43
MediaWiki\Extension\DiscussionTools\Hooks\TagHooks42
MediaWiki\Extension\DiscussionTools\ThreadItemFormatter42
MediaWiki\Extension\DiscussionTools\Hooks\BetaPreferenceHooks42
MediaWiki\Extension\DiscussionTools\Notifications\PlaintextEchoPresentationModelSection30
MediaWiki\Extension\DiscussionTools\Hooks\RegistrationHooks30
MediaWiki\Extension\DiscussionTools\Hooks\DataUpdatesHooks30
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsGetSubscriptions30
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsCompare27
MediaWiki\Extension\DiscussionTools\Notifications\EnhancedEchoMentionPresentationModel20
MediaWiki\Extension\DiscussionTools\ThreadItem\DatabaseHeadingItem20
MediaWiki\Extension\DiscussionTools\Hooks\ApiHooks6
MediaWiki\Extension\DiscussionTools\NodeFilter6

Methods

Coverage Distribution

Complexity

Insufficient Coverage

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

Project Risks

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