Classes

Coverage Distribution

Complexity

Insufficient Coverage

Class Coverage
MediaWiki\Extension\DiscussionTools\Actions\SubscribeAction0%
MediaWiki\Extension\DiscussionTools\Actions\UnsubscribeAction0%
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\BatchModifyElements0%
MediaWiki\Extension\DiscussionTools\ButtonMenuSelectWidget0%
MediaWiki\Extension\DiscussionTools\ContentThreadItemSet0%
MediaWiki\Extension\DiscussionTools\ContentThreadItemSetStatus0%
MediaWiki\Extension\DiscussionTools\DatabaseThreadItemSet0%
MediaWiki\Extension\DiscussionTools\Hooks\ApiHooks0%
MediaWiki\Extension\DiscussionTools\Hooks\BetaPreferenceHooks0%
MediaWiki\Extension\DiscussionTools\Hooks\DataUpdatesHooks0%
MediaWiki\Extension\DiscussionTools\Hooks\DiscussionToolsHooks0%
MediaWiki\Extension\DiscussionTools\Hooks\EchoHooks0%
MediaWiki\Extension\DiscussionTools\Hooks\HookUtils0%
MediaWiki\Extension\DiscussionTools\Hooks\InstallerHooks0%
MediaWiki\Extension\DiscussionTools\Hooks\ParserHooks0%
MediaWiki\Extension\DiscussionTools\Hooks\PreferenceHooks0%
MediaWiki\Extension\DiscussionTools\Hooks\RegistrationHooks0%
MediaWiki\Extension\DiscussionTools\Hooks\TagHooks0%
MediaWiki\Extension\DiscussionTools\NodeFilter0%
MediaWiki\Extension\DiscussionTools\Notifications\AddedTopicPresentationModel0%
MediaWiki\Extension\DiscussionTools\Notifications\CommentThanksPresentationModel0%
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\SubscriptionStore0%
MediaWiki\Extension\DiscussionTools\ThreadItem\ContentHeadingItem0%
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\ApiDiscussionToolsTrait0%
MediaWiki\Extension\DiscussionTools\Notifications\DiscussionToolsEventTrait0%
MediaWiki\Extension\DiscussionTools\ThreadItem\HeadingItemTrait0%
MediaWiki\Extension\DiscussionTools\ThreadItem\ThreadItemTrait0%
MediaWiki\Extension\DiscussionTools\ThreadItem\CommentItemTrait28%
MediaWiki\Extension\DiscussionTools\Hooks\PageHooks32%
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%
MediaWiki\Extension\DiscussionTools\ThreadItemStore89%

Project Risks

Class CRAP
MediaWiki\Extension\DiscussionTools\Hooks\HookUtils12210
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsEdit3422
MediaWiki\Extension\DiscussionTools\ImmutableRange2509
MediaWiki\Extension\DiscussionTools\Hooks\PageHooks1940
MediaWiki\Extension\DiscussionTools\TopicSubscriptionsPager1892
MediaWiki\Extension\DiscussionTools\SubscriptionStore1056
MediaWiki\Extension\DiscussionTools\Notifications\EventDispatcher777
MediaWiki\Extension\DiscussionTools\Actions\SubscribeAction462
MediaWiki\Extension\DiscussionTools\Actions\UnsubscribeAction462
MediaWiki\Extension\DiscussionTools\ResourceLoaderData462
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsFindComment420
MediaWiki\Extension\DiscussionTools\Hooks\PreferenceHooks420
MediaWiki\Extension\DiscussionTools\SpecialFindComment380
MediaWiki\Extension\DiscussionTools\Notifications\CommentThanksPresentationModel342
MediaWiki\Extension\DiscussionTools\Notifications\RemovedTopicPresentationModel342
MediaWiki\Extension\DiscussionTools\Notifications\SubscribedNewCommentPresentationModel342
MediaWiki\Extension\DiscussionTools\CommentModifier278
MediaWiki\Extension\DiscussionTools\ThreadItem\ContentHeadingItem272
MediaWiki\Extension\DiscussionTools\TreeWalker272
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsTrait240
MediaWiki\Extension\DiscussionTools\SpecialDiscussionToolsDebug210
MediaWiki\Extension\DiscussionTools\CommentFormatter183
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsThank182
MediaWiki\Extension\DiscussionTools\ThreadItem\DatabaseThreadItem182
MediaWiki\Extension\DiscussionTools\Notifications\DiscussionToolsEventTrait182
MediaWiki\Extension\DiscussionTools\Hooks\ParserHooks156
MediaWiki\Extension\DiscussionTools\ContentThreadItemSet132
MediaWiki\Extension\DiscussionTools\DatabaseThreadItemSet132
MediaWiki\Extension\DiscussionTools\Hooks\DiscussionToolsHooks132
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsSubscribe110
MediaWiki\Extension\DiscussionTools\ThreadItem\ContentCommentItem90
MediaWiki\Extension\DiscussionTools\Hooks\EchoHooks90
MediaWiki\Extension\DiscussionTools\SpecialGoToComment90
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsPageInfo88
MediaWiki\Extension\DiscussionTools\ThreadItemStore77
MediaWiki\Extension\DiscussionTools\BatchModifyElements72
MediaWiki\Extension\DiscussionTools\Notifications\AddedTopicPresentationModel72
MediaWiki\Extension\DiscussionTools\ThreadItem\CommentItemTrait64
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsPreview56
MediaWiki\Extension\DiscussionTools\Notifications\EnhancedEchoEditUserTalkPresentationModel56
MediaWiki\Extension\DiscussionTools\Notifications\PlaintextEchoPresentationModelSection56
MediaWiki\Extension\DiscussionTools\ThreadItem\ContentThreadItem46
MediaWiki\Extension\DiscussionTools\LanguageData43
MediaWiki\Extension\DiscussionTools\Hooks\BetaPreferenceHooks42
MediaWiki\Extension\DiscussionTools\Hooks\TagHooks42
MediaWiki\Extension\DiscussionTools\ThreadItemFormatter42
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsGetSubscriptions30
MediaWiki\Extension\DiscussionTools\Hooks\DataUpdatesHooks30
MediaWiki\Extension\DiscussionTools\Hooks\RegistrationHooks30
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%
getPageTitle0%
show0%
getName0%
requiresUnblock0%
getDescription0%
getFormFields0%
alterForm0%
onSubmit0%
onSuccess0%
usesOOUI0%
checkCanExecute0%
__construct0%
getPageTitle0%
show0%
getName0%
requiresUnblock0%
getDescription0%
getFormFields0%
alterForm0%
onSubmit0%
onSuccess0%
usesOOUI0%
checkCanExecute0%
isInternal0%
__construct0%
execute0%
getAllowedParams0%
needsToken0%
isWriteMode0%
__construct0%
execute0%
getValue0%
getAllowedParams0%
needsToken0%
isWriteMode0%
__construct0%
execute0%
getAllowedParams0%
isInternal0%
__construct0%
execute0%
getAllowedParams0%
isInternal0%
__construct0%
execute0%
getAllowedParams0%
needsToken0%
isWriteMode0%
__construct0%
execute0%
getAllowedParams0%
add0%
apply0%
getJavaScriptClassName0%
getParser0%
removeInteractiveTools0%
getSignatureRelativeTime0%
postprocessVisualEnhancementsSubtitle0%
postprocessTableOfContents0%
isEmptyTalkPage0%
hasLedeContent0%
hasCommentsInLedeContent0%
__construct0%
whitespaceParsoidHack0%
addSiblingListItem0%
addReply0%
transferReply0%
prepareWikitextReply0%
addWikitextReply0%
addHtmlReply0%
__construct0%
closestElementWithSibling0%
getNewTopicsSubscriptionId0%
addThreadItem0%
isEmpty0%
updateIdAndNameMaps0%
getThreadItems0%
getCommentItems0%
findCommentsByName0%
findCommentById0%
getThreads0%
getThreadsStructured0%
wrap0%
getValueOrThrow0%
addThreadItem0%
isEmpty0%
updateIdAndNameMaps0%
getThreadItems0%
getCommentItems0%
findCommentsByName0%
findCommentById0%
getThreads0%
getThreadsStructured0%
onApiMain__moduleManager0%
__construct0%
onGetBetaFeaturePreferences0%
__construct0%
onRevisionDataUpdates0%
__construct0%
onDiscussionToolsAddOverflowMenuItems0%
onBeforeCreateEchoEvent0%
onEchoGetBundleRules0%
onEchoGetEventsForRevision0%
hasPagePropCached0%
parseRevisionParsoidHtml0%
featureConflictsWithGadget0%
isFeatureAvailableToUser0%
isFeatureEnabledForUser0%
isAvailableForTitle0%
isFeatureEnabledForOutput0%
shouldShowNewSectionTab0%
shouldOpenNewTopicTool0%
shouldDisplayEmptyState0%
pageSubjectExists0%
shouldAddAutoSubscription0%
onLoadExtensionSchemaUpdates0%
onBeforePageDisplay0%
onSidebarBeforeOutput0%
onSkinTemplateNavigation__Universal0%
getNewTopicsSubscriptionButton0%
__construct0%
transformHtml0%
onParserOutputPostCacheTransform0%
onParserAfterTidy0%
onGetDoubleUnderscoreIDs0%
__construct0%
arrayRenameKey0%
onGetPreferences0%
onRegistration0%
onChangeTagsListActive0%
onListDefinedTags0%
onRecentChange_save0%
getDiscussionToolsTagsFromRequest0%
setStart0%
extractContents0%
insertNode0%
surroundContents0%
acceptNode0%
getPrimaryLink0%
getHeaderMessageKey0%
getHeaderMessage0%
getCompactHeaderMessage0%
getUnsubscribeConfirmationMessageKeys0%
__construct0%
getIconType0%
canRender0%
getPrimaryLink0%
getCommentLink0%
getHeaderMessageKey0%
getHeaderMessage0%
getCompactHeaderMessage0%
getBodyMessage0%
getSecondaryLinks0%
getPrimaryLink0%
getBodyMessage0%
jsonSerialize0%
getPrimaryLink0%
jsonSerialize0%
getParsedRevision0%
generateEventsForRevision0%
addCommentChangeTag0%
addAutoSubscription0%
locateSubscribedUsers0%
inEventSample0%
getParsedSectionTitle0%
getTitleWithSection0%
getTruncatedSectionTitle0%
__construct0%
getIconType0%
canRender0%
getPrimaryLink0%
getHeaderMessageKey0%
getHeaderMessage0%
getCompactHeaderMessage0%
getBodyMessage0%
getSecondaryLinks0%
__construct0%
getIconType0%
canRender0%
getPrimaryLink0%
jsonSerialize0%
getHeaderMessageKey0%
getHeaderMessage0%
getCompactHeaderMessage0%
getBodyMessage0%
getSecondaryLinks0%
getUnsubscribeConfirmationMessageKeys0%
__construct0%
jsonSerialize0%
getId0%
getWeight0%
getLocalData0%
getContentLanguageMessages0%
getTermsOfUseMessages0%
getTermsOfUseMessagesParsed0%
getTermsOfUseMessagesVersion0%
addOptionalDependencies0%
makeTestModule0%
__construct0%
getDescription0%
getFormFields0%
getSubpageField0%
getDisplayFormat0%
requiresPost0%
onSubmit0%
formatComments0%
__construct0%
getFormFields0%
getSubpageField0%
getDisplayFormat0%
requiresPost0%
getShowAlways0%
alterForm0%
onSubmit0%
onSuccess0%
displayItems0%
getDescription0%
__construct0%
getRedirect0%
__construct0%
execute0%
getDescription0%
getGroupName0%
__construct0%
getUserIdentity0%
getItemName0%
getLinkTarget0%
getCreatedTimestamp0%
getNotificationTimestamp0%
getState0%
isMuted0%
__construct0%
fetchSubscriptions0%
getSubscriptionItemsForUser0%
getSubscriptionItemsForTopic0%
getSubscriptionItemFromRow0%
addSubscriptionForUser0%
removeSubscriptionForUser0%
addAutoSubscriptionForUser0%
updateSubscriptionTimestamp0%
updateSubscriptionNotifiedTimestamp0%
jsonSerialize0%
getMentions0%
getTimestampRanges0%
getHeading0%
getSubscribableHeading0%
addSignatureRange0%
setSignatureRanges0%
setTimestamp0%
setAuthor0%
__construct0%
getLinkableTitle0%
getLinkableId0%
getHeadlineNode0%
isUneditableSection0%
setUneditableSection0%
getHeadingLevel0%
setHeadingLevel0%
isPlaceholderHeading0%
setPlaceholderHeading0%
jsonSerialize0%
getCommentCount0%
getLatestReply0%
getType0%
getRootNode0%
getLegacyId0%
getWarnings0%
setLevel0%
setRange0%
setLegacyId0%
__construct0%
getAuthor0%
getTimestamp0%
getHeading0%
getSubscribableHeading0%
__construct0%
getHeadingLevel0%
isPlaceholderHeading0%
__construct0%
getPage0%
getRevision0%
getName0%
addReply0%
getId0%
getType0%
getParent0%
getReplies0%
getTranscludedFrom0%
getLevel0%
isCanonicalPermalink0%
__construct0%
makeLink0%
formatLine0%
findThreadItemsInCurrentRevision0%
__construct0%
preprocessResults0%
getFieldNames0%
formatValue0%
maybeFormatAsList0%
formatValuePage0%
formatValueTopic0%
getCellAttrs0%
getQueryInfo0%
getDefaultSort0%
getDefaultDirections0%
getIndexField0%
isFieldSortable0%
__construct0%
nextNode0%
filterNode0%
previewMessage0%
getUserForPreview0%
getParsoidClient0%
transformHTML0%
getCommentLink0%
getContentSnippet0%
addMarkAsRead0%
jsonSerialize0%
jsonSerializeForDiff0%
getHeading0%
getSubscribableHeading0%
jsonSerialize0%
isSubscribable0%
jsonSerialize0%
logAddedComments7%
getThreadItemSet30%
getRevision37%
findOrInsertId38%
getTranscludedFrom40%
getEmptyStateHtml44%
setStartOrEnd53%
onOutputPageParserOutput55%
execute64%
addDiscussionTools65%
getHeadlineNode66%
computeTranscludedFrom69%
convertDateFormat69%
cloneContents74%
unwrapFragment75%
isMobile75%
onGetActionName75%
onOutputPageBeforeHTML78%
isLanguageRequiringReplyIcon78%
getThreadItemFromRow80%
execute81%
getHTML83%
generateEventsFromItemSets84%
findAddedItems84%
compareRanges88%
getTimestampRegexp88%
compareBoundaryPoints88%

Project Risks

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