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\ContentThreadItemSetStatus0%
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\ApiDiscussionToolsPageInfo72%
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsCompare74%
MediaWiki\Extension\DiscussionTools\CommentModifier76%
MediaWiki\Extension\DiscussionTools\CommentFormatter83%
MediaWiki\Extension\DiscussionTools\LanguageData85%
MediaWiki\Extension\DiscussionTools\ThreadItem\ContentThreadItem86%

Project Risks

Class CRAP
MediaWiki\Extension\DiscussionTools\Hooks\HookUtils12210
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\Maintenance\PersistRevisionThreadItems506
MediaWiki\Extension\DiscussionTools\Actions\SubscribeAction462
MediaWiki\Extension\DiscussionTools\Actions\UnsubscribeAction462
MediaWiki\Extension\DiscussionTools\ResourceLoaderData462
MediaWiki\Extension\DiscussionTools\Hooks\PreferenceHooks420
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsFindComment420
MediaWiki\Extension\DiscussionTools\SpecialFindComment380
MediaWiki\Extension\DiscussionTools\Notifications\SubscribedNewCommentPresentationModel342
MediaWiki\Extension\DiscussionTools\Notifications\RemovedTopicPresentationModel342
MediaWiki\Extension\DiscussionTools\Notifications\CommentThanksPresentationModel342
MediaWiki\Extension\DiscussionTools\CommentModifier278
MediaWiki\Extension\DiscussionTools\ThreadItem\ContentHeadingItem272
MediaWiki\Extension\DiscussionTools\Maintenance\NewTopicOptOutActiveUsers272
MediaWiki\Extension\DiscussionTools\TreeWalker272
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsTrait240
MediaWiki\Extension\DiscussionTools\SpecialDiscussionToolsDebug210
MediaWiki\Extension\DiscussionTools\Notifications\DiscussionToolsEventTrait182
MediaWiki\Extension\DiscussionTools\ThreadItem\DatabaseThreadItem182
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsThank182
MediaWiki\Extension\DiscussionTools\Hooks\ParserHooks156
MediaWiki\Extension\DiscussionTools\CommentFormatter153
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\ApiDiscussionToolsPageInfo88
MediaWiki\Extension\DiscussionTools\Notifications\AddedTopicPresentationModel72
MediaWiki\Extension\DiscussionTools\Maintenance\FixTrailingWhitespaceIds72
MediaWiki\Extension\DiscussionTools\ThreadItem\CommentItemTrait64
MediaWiki\Extension\DiscussionTools\Notifications\PlaintextEchoPresentationModelSection56
MediaWiki\Extension\DiscussionTools\Notifications\EnhancedEchoEditUserTalkPresentationModel56
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsPreview56
MediaWiki\Extension\DiscussionTools\ThreadItem\ContentThreadItem46
MediaWiki\Extension\DiscussionTools\LanguageData43
MediaWiki\Extension\DiscussionTools\Hooks\BetaPreferenceHooks42
MediaWiki\Extension\DiscussionTools\ThreadItemFormatter42
MediaWiki\Extension\DiscussionTools\Hooks\TagHooks42
MediaWiki\Extension\DiscussionTools\Hooks\RegistrationHooks30
MediaWiki\Extension\DiscussionTools\Hooks\DataUpdatesHooks30
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsGetSubscriptions30
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsCompare28
MediaWiki\Extension\DiscussionTools\Notifications\EnhancedEchoMentionPresentationModel20
MediaWiki\Extension\DiscussionTools\ThreadItem\DatabaseHeadingItem20
MediaWiki\Extension\DiscussionTools\ContentThreadItemSetStatus12
MediaWiki\Extension\DiscussionTools\Hooks\ApiHooks6
MediaWiki\Extension\DiscussionTools\NodeFilter6

Methods

Coverage Distribution

Complexity

Insufficient Coverage

Method Coverage
__construct0%
onSubmit0%
getDescription0%
execute0%
__construct0%
getRedirect0%
__construct0%
getDescription0%
displayItems0%
onSuccess0%
alterForm0%
__construct0%
getShowAlways0%
requiresPost0%
getDisplayFormat0%
getSubpageField0%
getFormFields0%
__construct0%
formatComments0%
onSubmit0%
getGroupName0%
getUserIdentity0%
getDisplayFormat0%
getSubscriptionItemFromRow0%
getTimestampRanges0%
getMentions0%
jsonSerialize0%
updateSubscriptionNotifiedTimestamp0%
updateSubscriptionTimestamp0%
addAutoSubscriptionForUser0%
removeSubscriptionForUser0%
addSubscriptionForUser0%
getSubscriptionItemsForTopic0%
getItemName0%
getSubscriptionItemsForUser0%
fetchSubscriptions0%
__construct0%
isMuted0%
getState0%
getNotificationTimestamp0%
getCreatedTimestamp0%
getLinkTarget0%
requiresPost0%
getSubpageField0%
getSubscribableHeading0%
getIconType0%
__construct0%
getSecondaryLinks0%
getBodyMessage0%
getCompactHeaderMessage0%
getHeaderMessage0%
getHeaderMessageKey0%
getPrimaryLink0%
canRender0%
__construct0%
canRender0%
getTruncatedSectionTitle0%
getTitleWithSection0%
getParsedSectionTitle0%
inEventSample0%
locateSubscribedUsers0%
addAutoSubscription0%
addCommentChangeTag0%
getPageTitle0%
getIconType0%
getPrimaryLink0%
getFormFields0%
getLocalData0%
getDescription0%
__construct0%
makeTestModule0%
addOptionalDependencies0%
getTermsOfUseMessagesVersion0%
getTermsOfUseMessagesParsed0%
getTermsOfUseMessages0%
getContentLanguageMessages0%
getWeight0%
jsonSerialize0%
getId0%
jsonSerialize0%
__construct0%
getUnsubscribeConfirmationMessageKeys0%
getSecondaryLinks0%
getBodyMessage0%
getCompactHeaderMessage0%
getHeaderMessage0%
getHeaderMessageKey0%
getHeading0%
addSignatureRange0%
jsonSerialize0%
getQueryInfo0%
__construct0%
filterNode0%
nextNode0%
__construct0%
isFieldSortable0%
getIndexField0%
getDefaultDirections0%
getDefaultSort0%
getCellAttrs0%
getUpdateKey0%
formatValueTopic0%
formatValuePage0%
maybeFormatAsList0%
formatValue0%
getFieldNames0%
preprocessResults0%
__construct0%
findThreadItemsInCurrentRevision0%
doDBUpdates0%
__construct0%
makeLink0%
getCommentLink0%
isSubscribable0%
jsonSerialize0%
getSubscribableHeading0%
getHeading0%
jsonSerializeForDiff0%
jsonSerialize0%
addMarkAsRead0%
getContentSnippet0%
transformHTML0%
execute0%
getParsoidClient0%
getUserForPreview0%
previewMessage0%
processRow0%
process0%
execute0%
__construct0%
updatePrefs0%
skipReason0%
formatLine0%
__construct0%
setSignatureRanges0%
setHeadingLevel0%
getLegacyId0%
getRootNode0%
getType0%
getLatestReply0%
getCommentCount0%
jsonSerialize0%
setPlaceholderHeading0%
isPlaceholderHeading0%
getHeadingLevel0%
setLevel0%
setUneditableSection0%
isUneditableSection0%
getHeadlineNode0%
getLinkableId0%
getLinkableTitle0%
__construct0%
setAuthor0%
setTimestamp0%
getWarnings0%
setRange0%
isCanonicalPermalink0%
getRevision0%
getLevel0%
getTranscludedFrom0%
getReplies0%
getParent0%
getType0%
getId0%
addReply0%
getName0%
getPage0%
setLegacyId0%
__construct0%
isPlaceholderHeading0%
getHeadingLevel0%
__construct0%
getSubscribableHeading0%
getHeading0%
getTimestamp0%
getAuthor0%
__construct0%
getParsedRevision0%
generateEventsForRevision0%
getPrimaryLink0%
removeInteractiveTools0%
__construct0%
hasCommentsInLedeContent0%
hasLedeContent0%
isEmptyTalkPage0%
postprocessTableOfContents0%
postprocessVisualEnhancementsSubtitle0%
getSignatureRelativeTime0%
getParser0%
addSiblingListItem0%
getJavaScriptClassName0%
getAllowedParams0%
execute0%
__construct0%
isWriteMode0%
needsToken0%
getAllowedParams0%
execute0%
whitespaceParsoidHack0%
addReply0%
isInternal0%
getThreadItems0%
getValueOrThrow0%
wrap0%
getThreadsStructured0%
getThreads0%
findCommentById0%
jsonSerialize0%
getCommentItems0%
updateIdAndNameMaps0%
transferReply0%
isEmpty0%
addThreadItem0%
getNewTopicsSubscriptionId0%
closestElementWithSibling0%
__construct0%
addHtmlReply0%
addWikitextReply0%
prepareWikitextReply0%
__construct0%
getAllowedParams0%
isEmpty0%
checkCanExecute0%
getFormFields0%
getDescription0%
requiresUnblock0%
getName0%
show0%
getPageTitle0%
__construct0%
usesOOUI0%
onSubmit0%
onSuccess0%
onSubmit0%
alterForm0%
getFormFields0%
getDescription0%
requiresUnblock0%
getName0%
show0%
alterForm0%
onSuccess0%
execute0%
getValue0%
__construct0%
isInternal0%
getAllowedParams0%
execute0%
__construct0%
isWriteMode0%
needsToken0%
getAllowedParams0%
execute0%
usesOOUI0%
__construct0%
isWriteMode0%
needsToken0%
getAllowedParams0%
execute0%
__construct0%
isInternal0%
checkCanExecute0%
addThreadItem0%
findCommentsByName0%
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%
getThreadItemSet30%
getRevision37%
findOrInsertId38%
getTranscludedFrom40%
setStartOrEnd53%
execute64%
addDiscussionTools65%
getHeadlineNode66%
computeTranscludedFrom69%
convertDateFormat69%
cloneContents74%
unwrapFragment75%
isLanguageRequiringReplyIcon78%
execute81%
getHTML83%
generateEventsFromItemSets84%
findAddedItems84%
compareRanges88%
getThreadItemFromRow88%
getTimestampRegexp88%
compareBoundaryPoints88%

Project Risks

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