Classes

Coverage Distribution

Complexity

Insufficient Coverage

Class Coverage
MediaWiki\Extension\DiscussionTools\Actions\SubscribeAction0%
MediaWiki\Extension\DiscussionTools\SpecialTopicSubscriptions0%
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\SubscriptionItem0%
MediaWiki\Extension\DiscussionTools\Actions\UnsubscribeAction0%
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\Notifications\AddedTopicPresentationModel0%
MediaWiki\Extension\DiscussionTools\NodeFilter0%
MediaWiki\Extension\DiscussionTools\ThreadItem\ThreadItemTrait0%
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\ContentThreadItemSetStatus0%
MediaWiki\Extension\DiscussionTools\Hooks\DataUpdatesHooks0%
MediaWiki\Extension\DiscussionTools\Hooks\PageHooks0%
MediaWiki\Extension\DiscussionTools\Hooks\EchoHooks0%
MediaWiki\Extension\DiscussionTools\Hooks\HookUtils0%
MediaWiki\Extension\DiscussionTools\Hooks\TagHooks0%
MediaWiki\Extension\DiscussionTools\Hooks\RegistrationHooks0%
MediaWiki\Extension\DiscussionTools\Hooks\PreferenceHooks0%
MediaWiki\Extension\DiscussionTools\Hooks\ParserHooks0%
MediaWiki\Extension\DiscussionTools\Hooks\InstallerHooks0%
MediaWiki\Extension\DiscussionTools\Hooks\DiscussionToolsHooks0%
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\ApiDiscussionToolsPageInfo72%
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsCompare74%
MediaWiki\Extension\DiscussionTools\CommentFormatter83%
MediaWiki\Extension\DiscussionTools\LanguageData85%
MediaWiki\Extension\DiscussionTools\ThreadItem\ContentThreadItem86%

Project Risks

Class CRAP
MediaWiki\Extension\DiscussionTools\Hooks\HookUtils11990
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\ResourceLoaderData462
MediaWiki\Extension\DiscussionTools\Actions\UnsubscribeAction462
MediaWiki\Extension\DiscussionTools\Actions\SubscribeAction462
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsFindComment420
MediaWiki\Extension\DiscussionTools\CommentModifier366
MediaWiki\Extension\DiscussionTools\Notifications\RemovedTopicPresentationModel342
MediaWiki\Extension\DiscussionTools\Notifications\CommentThanksPresentationModel342
MediaWiki\Extension\DiscussionTools\SpecialFindComment342
MediaWiki\Extension\DiscussionTools\Notifications\SubscribedNewCommentPresentationModel342
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\ApiDiscussionToolsThank182
MediaWiki\Extension\DiscussionTools\Hooks\ParserHooks156
MediaWiki\Extension\DiscussionTools\CommentFormatter153
MediaWiki\Extension\DiscussionTools\Hooks\DiscussionToolsHooks132
MediaWiki\Extension\DiscussionTools\DatabaseThreadItemSet132
MediaWiki\Extension\DiscussionTools\ContentThreadItemSet132
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\ThreadItem\CommentItemTrait64
MediaWiki\Extension\DiscussionTools\Notifications\PlaintextEchoPresentationModelSection56
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\Hooks\RegistrationHooks30
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsGetSubscriptions30
MediaWiki\Extension\DiscussionTools\Hooks\DataUpdatesHooks30
MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsCompare28
MediaWiki\Extension\DiscussionTools\ThreadItem\DatabaseHeadingItem20
MediaWiki\Extension\DiscussionTools\Notifications\EnhancedEchoMentionPresentationModel20
MediaWiki\Extension\DiscussionTools\ContentThreadItemSetStatus12
MediaWiki\Extension\DiscussionTools\NodeFilter6
MediaWiki\Extension\DiscussionTools\Hooks\ApiHooks6

Methods

Coverage Distribution

Complexity

Insufficient Coverage

Method Coverage
__construct0%
__construct0%
onSubmit0%
alterForm0%
getShowAlways0%
requiresPost0%
getDisplayFormat0%
getSubpageField0%
getFormFields0%
formatComments0%
displayItems0%
onSubmit0%
requiresPost0%
getDisplayFormat0%
getSubpageField0%
getFormFields0%
getDescription0%
__construct0%
makeTestModule0%
onSuccess0%
getDescription0%
getTermsOfUseMessagesVersion0%
getCreatedTimestamp0%
getSubscriptionItemFromRow0%
getSubscriptionItemsForTopic0%
getSubscriptionItemsForUser0%
fetchSubscriptions0%
__construct0%
isMuted0%
getState0%
getNotificationTimestamp0%
getLinkTarget0%
__construct0%
getItemName0%
getUserIdentity0%
__construct0%
getGroupName0%
getDescription0%
execute0%
__construct0%
getRedirect0%
addOptionalDependencies0%
getTermsOfUseMessagesParsed0%
removeSubscriptionForUser0%
locateSubscribedUsers0%
getPrimaryLink0%
canRender0%
getIconType0%
__construct0%
getTruncatedSectionTitle0%
getTitleWithSection0%
getParsedSectionTitle0%
inEventSample0%
addAutoSubscription0%
getHeaderMessage0%
addCommentChangeTag0%
generateEventsForRevision0%
getParsedRevision0%
jsonSerialize0%
getPrimaryLink0%
jsonSerialize0%
getBodyMessage0%
getPageTitle0%
getHeaderMessageKey0%
getCompactHeaderMessage0%
getTermsOfUseMessages0%
getBodyMessage0%
getContentLanguageMessages0%
getLocalData0%
getWeight0%
getId0%
jsonSerialize0%
__construct0%
getUnsubscribeConfirmationMessageKeys0%
getSecondaryLinks0%
getCompactHeaderMessage0%
getBodyMessage0%
getHeaderMessage0%
getHeaderMessageKey0%
jsonSerialize0%
getPrimaryLink0%
canRender0%
getIconType0%
__construct0%
getSecondaryLinks0%
addSubscriptionForUser0%
addAutoSubscriptionForUser0%
getBodyMessage0%
findThreadItemsInCurrentRevision0%
formatValueTopic0%
formatValuePage0%
maybeFormatAsList0%
formatValue0%
getFieldNames0%
preprocessResults0%
__construct0%
formatLine0%
getQueryInfo0%
makeLink0%
__construct0%
isCanonicalPermalink0%
getLevel0%
getTranscludedFrom0%
getReplies0%
getParent0%
getType0%
getCellAttrs0%
getDefaultSort0%
addReply0%
getCommentLink0%
isSubscribable0%
jsonSerialize0%
getSubscribableHeading0%
getHeading0%
jsonSerializeForDiff0%
jsonSerialize0%
addMarkAsRead0%
getContentSnippet0%
transformHTML0%
getDefaultDirections0%
getParsoidClient0%
getUserForPreview0%
previewMessage0%
filterNode0%
nextNode0%
__construct0%
isFieldSortable0%
getIndexField0%
getId0%
getName0%
updateSubscriptionTimestamp0%
setAuthor0%
setHeadingLevel0%
getHeadingLevel0%
setUneditableSection0%
isUneditableSection0%
getHeadlineNode0%
getLinkableId0%
getLinkableTitle0%
__construct0%
setTimestamp0%
setPlaceholderHeading0%
setSignatureRanges0%
addSignatureRange0%
getSubscribableHeading0%
getHeading0%
getTimestampRanges0%
getMentions0%
jsonSerialize0%
updateSubscriptionNotifiedTimestamp0%
isPlaceholderHeading0%
jsonSerialize0%
getRevision0%
getAuthor0%
getPage0%
__construct0%
isPlaceholderHeading0%
getHeadingLevel0%
__construct0%
getSubscribableHeading0%
getHeading0%
getTimestamp0%
__construct0%
getCommentCount0%
setLegacyId0%
setRange0%
setLevel0%
getWarnings0%
getLegacyId0%
getRootNode0%
getType0%
getLatestReply0%
getSecondaryLinks0%
getPrimaryLink0%
getCompactHeaderMessage0%
getAllowedParams0%
isEmptyTalkPage0%
postprocessTableOfContents0%
postprocessVisualEnhancementsSubtitle0%
getSignatureRelativeTime0%
removeInteractiveTools0%
getParser0%
getJavaScriptClassName0%
execute0%
hasCommentsInLedeContent0%
__construct0%
isWriteMode0%
needsToken0%
getAllowedParams0%
execute0%
__construct0%
isInternal0%
hasLedeContent0%
__construct0%
execute0%
getNewTopicsSubscriptionId0%
findCommentById0%
findCommentsByName0%
getCommentItems0%
getThreadItems0%
getHeaderMessage0%
isEmpty0%
addThreadItem0%
closestElementWithSibling0%
whitespaceParsoidHack0%
__construct0%
addHtmlReply0%
addWikitextReply0%
prepareHtmlReply0%
prepareWikitextReply0%
transferReply0%
addReply0%
addSiblingListItem0%
getAllowedParams0%
__construct0%
getThreadsStructured0%
usesOOUI0%
getDescription0%
requiresUnblock0%
getName0%
show0%
getPageTitle0%
__construct0%
checkCanExecute0%
onSuccess0%
alterForm0%
onSubmit0%
alterForm0%
getFormFields0%
getDescription0%
requiresUnblock0%
getName0%
show0%
getFormFields0%
onSubmit0%
isInternal0%
execute0%
getAllowedParams0%
execute0%
__construct0%
isWriteMode0%
needsToken0%
getAllowedParams0%
getValue0%
__construct0%
onSuccess0%
isWriteMode0%
needsToken0%
getAllowedParams0%
execute0%
__construct0%
isInternal0%
checkCanExecute0%
usesOOUI0%
getThreads0%
updateIdAndNameMaps0%
wrap0%
__construct0%
onGetPreferences0%
arrayRenameKey0%
__construct0%
onGetDoubleUnderscoreIDs0%
onParserAfterTidy0%
onParserOutputPostCacheTransform0%
transformHtml0%
getNewTopicsSubscriptionButton0%
onChangeTagsListActive0%
onSkinTemplateNavigation__Universal0%
onSidebarBeforeOutput0%
getEmptyStateHtml0%
getValueOrThrow0%
onGetActionName0%
onOutputPageParserOutput0%
onOutputPageBeforeHTML0%
onBeforePageDisplay0%
onRegistration0%
onListDefinedTags0%
__construct0%
getCompactHeaderMessage0%
getHeaderMessageKey0%
getCommentLink0%
getPrimaryLink0%
canRender0%
getIconType0%
__construct0%
getUnsubscribeConfirmationMessageKeys0%
getHeaderMessage0%
onRecentChange_save0%
getHeaderMessageKey0%
getPrimaryLink0%
acceptNode0%
surroundContents0%
insertNode0%
extractContents0%
setStart0%
getDiscussionToolsTagsFromRequest0%
isMobile0%
onBeforeDisplayNoArticleText0%
onLoadExtensionSchemaUpdates0%
getThreadsStructured0%
onDiscussionToolsAddOverflowMenuItems0%
__construct0%
shouldAddAutoSubscription0%
__construct0%
onGetBetaFeaturePreferences0%
__construct0%
onApiMain__moduleManager0%
getThreads0%
onEchoGetBundleRules0%
findCommentById0%
findCommentsByName0%
getCommentItems0%
getThreadItems0%
updateIdAndNameMaps0%
isEmpty0%
addThreadItem0%
onBeforeCreateEchoEvent0%
onRevisionDataUpdates0%
jsonSerialize0%
isFeatureAvailableToUser0%
shouldShowNewSectionTab0%
onEchoGetEventsForRevision0%
shouldOpenNewTopicTool0%
isFeatureEnabledForOutput0%
isFeatureEnabledForUser0%
isAvailableForTitle0%
featureConflictsWithGadget0%
shouldDisplayEmptyState0%
pageSubjectExists0%
parseRevisionParsoidHtml0%
hasPagePropCached0%
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
onGetPreferences380
logAddedComments246
isAvailableForTitle210
execute210
previewMessage156
formatValueTopic132
onOutputPageBeforeHTML132
onOutputPageParserOutput132
shouldDisplayEmptyState132
execute132
makeTestModule110
getEmptyStateHtml110
isFeatureAvailableToUser110
shouldOpenNewTopicTool110
onDiscussionToolsAddOverflowMenuItems110
insertNode110
surroundContents90
formatValue90
nextNode90
transferReply72
getRedirect72
closestElementWithSibling72
isFeatureEnabledForUser56
getNewTopicsSubscriptionButton56
prepareHtmlReply56
addReply56
cloneContents54
convertDateFormat52
getThreadItemSet51
computeTranscludedFrom45
formatValuePage42
transformHtml42
pageSubjectExists42
execute42
getSubscriptionItemsForUser42
getCommentLink42
featureConflictsWithGadget42
parseRevisionParsoidHtml42
filterNode42
getTimestampRegexp32
onSuccess30
shouldAddAutoSubscription30
shouldShowNewSectionTab30
onEchoGetBundleRules30
getSecondaryLinks30
formatComments30
onGetBetaFeaturePreferences30
addSubscriptionForUser30
postprocessVisualEnhancementsSubtitle30
postprocessTableOfContents30
onRegistration30
getMentions30
fetchSubscriptions30
compareRanges23
generateEventsFromItemSets21
getPrimaryLink20
onGetActionName20
inEventSample20
generateEventsForRevision20
getPageTitle20
displayItems20
findThreadItemsInCurrentRevision20
getSubscribableHeading20
addMarkAsRead20
execute20
preprocessResults20
removeSubscriptionForUser20
onRevisionDataUpdates20
getSubscriptionItemsForTopic20
getRevision14
setStartOrEnd14
unwrapFragment14
execute12
updateSubscriptionTimestamp12
isSubscribable12
addAutoSubscription12
getHeading12
getContentSnippet12
maybeFormatAsList12
getTitleWithSection12
getLinkableTitle12
onSubmit12
getHeaderMessage12
formatLine12
getSecondaryLinks12
addOptionalDependencies12
getBodyMessage12
jsonSerialize12
addThreadItem12
getFormFields12
hasPagePropCached12
onSidebarBeforeOutput12
onSkinTemplateNavigation__Universal12
getSignatureRelativeTime12
execute12
addThreadItem12
onRecentChange_save12
checkCanExecute12
arrayRenameKey12
show12
getPageTitle12
getFormFields12
getCommentLink12
checkCanExecute12
getThreadItemFromRow11
compareBoundaryPoints11
findAddedItems8
findOrInsertId7
getTranscludedFrom7
getValue6
jsonSerialize6
addHtmlReply6
__construct6
onSuccess6
addWikitextReply6
getLinkableId6
jsonSerialize6
isCanonicalPermalink6
jsonSerialize6
__construct6
isFieldSortable6
makeLink6
prepareWikitextReply6
getUserForPreview6
onSuccess6
jsonSerializeForDiff6
getCellAttrs6
addAutoSubscriptionForUser6
getHeaderMessageKey6
getValueOrThrow6
getHeaderMessageKey6
getHeaderMessage6
getHeaderMessageKey6
getTruncatedSectionTitle6
getParsedSectionTitle6
show6
getPrimaryLink6
getHeaderMessage6
jsonSerialize6
getPrimaryLink6
jsonSerialize6
getPrimaryLink6
jsonSerialize6
getPrimaryLink6
getSecondaryLinks6
getPrimaryLink6
acceptNode6
getBodyMessage6
getHeaderMessageKey6
onApiMain__moduleManager6
onBeforeCreateEchoEvent6
onEchoGetEventsForRevision6
isMobile6
onBeforeDisplayNoArticleText6
onParserOutputPostCacheTransform6
getTermsOfUseMessagesVersion6
getTermsOfUseMessagesParsed6
getLocalData6
onParserAfterTidy6
getBodyMessage6
getHeaderMessage6
getHeadlineNode5
isLanguageRequiringReplyIcon5
addDiscussionTools3
execute3
getHTML2