<?xml version="1.0" encoding="UTF-8"?>
<coverage generated="1786077093">
  <project timestamp="1786077093">
    <file name="/workspace/src/extensions/Hashtags/maintenance/reparseHashtags.php">
      <class name="MediaWiki\Extension\Hashtags\ReparseHashtags" namespace="global">
        <metrics complexity="30" methods="5" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="90" coveredstatements="0" elements="95" coveredelements="0"/>
      </class>
      <line num="30" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="31" type="stmt" count="0"/>
      <line num="32" type="stmt" count="0"/>
      <line num="33" type="stmt" count="0"/>
      <line num="34" type="stmt" count="0"/>
      <line num="36" type="stmt" count="0"/>
      <line num="37" type="stmt" count="0"/>
      <line num="38" type="stmt" count="0"/>
      <line num="39" type="stmt" count="0"/>
      <line num="40" type="stmt" count="0"/>
      <line num="41" type="stmt" count="0"/>
      <line num="42" type="stmt" count="0"/>
      <line num="43" type="stmt" count="0"/>
      <line num="46" type="method" name="doSetup" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="47" type="stmt" count="0"/>
      <line num="48" type="stmt" count="0"/>
      <line num="49" type="stmt" count="0"/>
      <line num="50" type="stmt" count="0"/>
      <line num="51" type="stmt" count="0"/>
      <line num="54" type="method" name="execute" visibility="public" complexity="21" crap="462" count="0"/>
      <line num="55" type="stmt" count="0"/>
      <line num="56" type="stmt" count="0"/>
      <line num="57" type="stmt" count="0"/>
      <line num="58" type="stmt" count="0"/>
      <line num="59" type="stmt" count="0"/>
      <line num="60" type="stmt" count="0"/>
      <line num="61" type="stmt" count="0"/>
      <line num="63" type="stmt" count="0"/>
      <line num="64" type="stmt" count="0"/>
      <line num="65" type="stmt" count="0"/>
      <line num="66" type="stmt" count="0"/>
      <line num="67" type="stmt" count="0"/>
      <line num="70" type="stmt" count="0"/>
      <line num="71" type="stmt" count="0"/>
      <line num="72" type="stmt" count="0"/>
      <line num="73" type="stmt" count="0"/>
      <line num="77" type="stmt" count="0"/>
      <line num="78" type="stmt" count="0"/>
      <line num="79" type="stmt" count="0"/>
      <line num="80" type="stmt" count="0"/>
      <line num="82" type="stmt" count="0"/>
      <line num="83" type="stmt" count="0"/>
      <line num="84" type="stmt" count="0"/>
      <line num="85" type="stmt" count="0"/>
      <line num="86" type="stmt" count="0"/>
      <line num="87" type="stmt" count="0"/>
      <line num="88" type="stmt" count="0"/>
      <line num="89" type="stmt" count="0"/>
      <line num="90" type="stmt" count="0"/>
      <line num="91" type="stmt" count="0"/>
      <line num="92" type="stmt" count="0"/>
      <line num="93" type="stmt" count="0"/>
      <line num="95" type="stmt" count="0"/>
      <line num="97" type="stmt" count="0"/>
      <line num="98" type="stmt" count="0"/>
      <line num="99" type="stmt" count="0"/>
      <line num="101" type="stmt" count="0"/>
      <line num="102" type="stmt" count="0"/>
      <line num="103" type="stmt" count="0"/>
      <line num="104" type="stmt" count="0"/>
      <line num="105" type="stmt" count="0"/>
      <line num="106" type="stmt" count="0"/>
      <line num="108" type="stmt" count="0"/>
      <line num="109" type="stmt" count="0"/>
      <line num="111" type="stmt" count="0"/>
      <line num="112" type="stmt" count="0"/>
      <line num="113" type="stmt" count="0"/>
      <line num="116" type="stmt" count="0"/>
      <line num="117" type="stmt" count="0"/>
      <line num="118" type="stmt" count="0"/>
      <line num="119" type="stmt" count="0"/>
      <line num="121" type="stmt" count="0"/>
      <line num="122" type="stmt" count="0"/>
      <line num="124" type="stmt" count="0"/>
      <line num="127" type="method" name="doQuery" visibility="private" complexity="5" crap="30" count="0"/>
      <line num="128" type="stmt" count="0"/>
      <line num="129" type="stmt" count="0"/>
      <line num="130" type="stmt" count="0"/>
      <line num="131" type="stmt" count="0"/>
      <line num="132" type="stmt" count="0"/>
      <line num="133" type="stmt" count="0"/>
      <line num="134" type="stmt" count="0"/>
      <line num="136" type="stmt" count="0"/>
      <line num="138" type="stmt" count="0"/>
      <line num="139" type="stmt" count="0"/>
      <line num="140" type="stmt" count="0"/>
      <line num="141" type="stmt" count="0"/>
      <line num="142" type="stmt" count="0"/>
      <line num="143" type="stmt" count="0"/>
      <line num="144" type="stmt" count="0"/>
      <line num="146" type="stmt" count="0"/>
      <line num="147" type="stmt" count="0"/>
      <line num="150" type="method" name="verbose" visibility="private" complexity="2" crap="6" count="0"/>
      <line num="151" type="stmt" count="0"/>
      <line num="152" type="stmt" count="0"/>
      <metrics loc="161" ncloc="153" classes="1" methods="5" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="90" coveredstatements="0" elements="95" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Hashtags/src/HashtagCommentParser.php">
      <class name="MediaWiki\Extension\Hashtags\HashtagCommentParser" namespace="global">
        <metrics complexity="20" methods="11" coveredmethods="11" conditionals="0" coveredconditionals="0" statements="83" coveredstatements="83" elements="94" coveredelements="94"/>
      </class>
      <line num="46" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="9"/>
      <line num="56" type="stmt" count="9"/>
      <line num="57" type="stmt" count="9"/>
      <line num="58" type="stmt" count="9"/>
      <line num="59" type="stmt" count="9"/>
      <line num="60" type="stmt" count="9"/>
      <line num="61" type="stmt" count="9"/>
      <line num="62" type="stmt" count="9"/>
      <line num="77" type="method" name="preprocess" visibility="public" complexity="1" crap="1" count="9"/>
      <line num="80" type="stmt" count="9"/>
      <line num="81" type="stmt" count="9"/>
      <line num="82" type="stmt" count="9"/>
      <line num="84" type="stmt" count="8"/>
      <line num="85" type="stmt" count="8"/>
      <line num="86" type="stmt" count="8"/>
      <line num="87" type="stmt" count="8"/>
      <line num="88" type="stmt" count="8"/>
      <line num="101" type="method" name="preprocessUnsafe" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="104" type="stmt" count="1"/>
      <line num="105" type="stmt" count="1"/>
      <line num="106" type="stmt" count="1"/>
      <line num="107" type="stmt" count="1"/>
      <line num="108" type="stmt" count="1"/>
      <line num="109" type="stmt" count="1"/>
      <line num="119" type="method" name="finalize" visibility="public" complexity="1" crap="1" count="7"/>
      <line num="120" type="stmt" count="7"/>
      <line num="121" type="stmt" count="7"/>
      <line num="128" type="method" name="newMarker" visibility="private" complexity="2" crap="2" count="6"/>
      <line num="129" type="stmt" count="6"/>
      <line num="130" type="stmt" count="6"/>
      <line num="131" type="stmt" count="1"/>
      <line num="133" type="stmt" count="5"/>
      <line num="142" type="method" name="addMarker" visibility="private" complexity="1" crap="1" count="6"/>
      <line num="143" type="stmt" count="6"/>
      <line num="144" type="stmt" count="5"/>
      <line num="145" type="stmt" count="5"/>
      <line num="154" type="method" name="extractTags" visibility="private" complexity="2" crap="2" count="9"/>
      <line num="155" type="stmt" count="9"/>
      <line num="163" type="stmt" count="9"/>
      <line num="164" type="stmt" count="9"/>
      <line num="165" type="stmt" count="6"/>
      <line num="166" type="stmt" count="6"/>
      <line num="167" type="stmt" count="6"/>
      <line num="168" type="stmt" count="6"/>
      <line num="170" type="stmt" count="4"/>
      <line num="171" type="stmt" count="9"/>
      <line num="172" type="stmt" count="9"/>
      <line num="173" type="stmt" count="9"/>
      <line num="176" type="method" name="isValidTag" visibility="private" complexity="3" crap="3" count="6"/>
      <line num="177" type="stmt" count="6"/>
      <line num="178" type="stmt" count="4"/>
      <line num="180" type="stmt" count="6"/>
      <line num="184" type="stmt" count="1"/>
      <line num="185" type="stmt" count="1"/>
      <line num="187" type="stmt" count="6"/>
      <line num="204" type="method" name="checkExtractedTags" visibility="private" complexity="3" crap="3" count="8"/>
      <line num="205" type="stmt" count="8"/>
      <line num="206" type="stmt" count="5"/>
      <line num="207" type="stmt" count="5"/>
      <line num="208" type="stmt" count="5"/>
      <line num="209" type="stmt" count="5"/>
      <line num="210" type="stmt" count="5"/>
      <line num="211" type="stmt" count="5"/>
      <line num="222" type="method" name="replaceMarkers" visibility="private" complexity="4" crap="4" count="7"/>
      <line num="223" type="stmt" count="7"/>
      <line num="224" type="stmt" count="7"/>
      <line num="225" type="stmt" count="7"/>
      <line num="226" type="stmt" count="4"/>
      <line num="228" type="stmt" count="1"/>
      <line num="229" type="stmt" count="1"/>
      <line num="231" type="stmt" count="4"/>
      <line num="232" type="stmt" count="4"/>
      <line num="235" type="stmt" count="1"/>
      <line num="237" type="stmt" count="7"/>
      <line num="238" type="stmt" count="7"/>
      <line num="239" type="stmt" count="7"/>
      <line num="240" type="stmt" count="7"/>
      <line num="241" type="stmt" count="7"/>
      <line num="242" type="stmt" count="7"/>
      <line num="243" type="stmt" count="1"/>
      <line num="245" type="stmt" count="1"/>
      <line num="246" type="stmt" count="1"/>
      <line num="252" type="stmt" count="1"/>
      <line num="253" type="stmt" count="7"/>
      <line num="254" type="stmt" count="7"/>
      <line num="255" type="stmt" count="7"/>
      <line num="256" type="stmt" count="7"/>
      <line num="265" type="method" name="generateTagLink" visibility="private" complexity="1" crap="1" count="4"/>
      <line num="269" type="stmt" count="4"/>
      <line num="270" type="stmt" count="4"/>
      <line num="271" type="stmt" count="4"/>
      <line num="272" type="stmt" count="4"/>
      <line num="273" type="stmt" count="4"/>
      <line num="274" type="stmt" count="4"/>
      <metrics loc="277" ncloc="168" classes="1" methods="11" coveredmethods="11" conditionals="0" coveredconditionals="0" statements="83" coveredstatements="83" elements="94" coveredelements="94"/>
    </file>
    <file name="/workspace/src/extensions/Hashtags/src/HashtagCommentParserFactory.php">
      <class name="MediaWiki\Extension\Hashtags\HashtagCommentParserFactory" namespace="global">
        <metrics complexity="14" methods="6" coveredmethods="6" conditionals="0" coveredconditionals="0" statements="41" coveredstatements="41" elements="47" coveredelements="47"/>
      </class>
      <line num="30" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="11"/>
      <line num="38" type="stmt" count="11"/>
      <line num="39" type="stmt" count="11"/>
      <line num="40" type="stmt" count="11"/>
      <line num="41" type="stmt" count="11"/>
      <line num="42" type="stmt" count="11"/>
      <line num="43" type="stmt" count="11"/>
      <line num="44" type="stmt" count="11"/>
      <line num="47" type="method" name="setContext" visibility="public" complexity="1" crap="1" count="10"/>
      <line num="48" type="stmt" count="10"/>
      <line num="55" type="method" name="create" visibility="public" complexity="1" crap="1" count="5"/>
      <line num="56" type="stmt" count="5"/>
      <line num="57" type="stmt" count="5"/>
      <line num="64" type="method" name="createWithTagTarget" visibility="public" complexity="1" crap="1" count="5"/>
      <line num="65" type="stmt" count="5"/>
      <line num="66" type="stmt" count="5"/>
      <line num="67" type="stmt" count="5"/>
      <line num="68" type="stmt" count="5"/>
      <line num="69" type="stmt" count="5"/>
      <line num="70" type="stmt" count="5"/>
      <line num="71" type="stmt" count="5"/>
      <line num="72" type="stmt" count="5"/>
      <line num="73" type="stmt" count="5"/>
      <line num="74" type="stmt" count="5"/>
      <line num="80" type="method" name="getDefaultTagTarget" visibility="private" complexity="4" crap="4" count="10"/>
      <line num="81" type="stmt" count="10"/>
      <line num="82" type="stmt" count="1"/>
      <line num="90" type="stmt" count="10"/>
      <line num="92" type="stmt" count="10"/>
      <line num="93" type="stmt" count="6"/>
      <line num="95" type="stmt" count="9"/>
      <line num="103" type="method" name="getInvalidList" visibility="private" complexity="6" crap="6" count="6"/>
      <line num="104" type="stmt" count="6"/>
      <line num="105" type="stmt" count="5"/>
      <line num="107" type="stmt" count="6"/>
      <line num="108" type="stmt" count="4"/>
      <line num="110" type="stmt" count="6"/>
      <line num="111" type="stmt" count="6"/>
      <line num="112" type="stmt" count="6"/>
      <line num="113" type="stmt" count="6"/>
      <line num="114" type="stmt" count="6"/>
      <line num="115" type="stmt" count="6"/>
      <line num="116" type="stmt" count="6"/>
      <line num="117" type="stmt" count="6"/>
      <line num="118" type="stmt" count="2"/>
      <line num="121" type="stmt" count="6"/>
      <line num="122" type="stmt" count="6"/>
      <metrics loc="125" ncloc="102" classes="1" methods="6" coveredmethods="6" conditionals="0" coveredconditionals="0" statements="41" coveredstatements="41" elements="47" coveredelements="47"/>
    </file>
    <file name="/workspace/src/extensions/Hashtags/src/SaveHooks.php">
      <class name="MediaWiki\Extension\Hashtags\SaveHooks" namespace="global">
        <metrics complexity="12" methods="5" coveredmethods="5" conditionals="0" coveredconditionals="0" statements="45" coveredstatements="45" elements="50" coveredelements="50"/>
      </class>
      <line num="28" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="22"/>
      <line num="35" type="stmt" count="22"/>
      <line num="36" type="stmt" count="22"/>
      <line num="37" type="stmt" count="22"/>
      <line num="38" type="stmt" count="22"/>
      <line num="39" type="stmt" count="22"/>
      <line num="48" type="method" name="onRecentChange_save" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="51" type="stmt" count="1"/>
      <line num="52" type="stmt" count="1"/>
      <line num="53" type="stmt" count="1"/>
      <line num="61" type="method" name="onRevisionFromEditComplete" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="64" type="stmt" count="1"/>
      <line num="65" type="stmt" count="1"/>
      <line num="66" type="stmt" count="1"/>
      <line num="74" type="method" name="onManualLogEntryBeforePublish" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="75" type="stmt" count="1"/>
      <line num="76" type="stmt" count="1"/>
      <line num="80" type="stmt" count="1"/>
      <line num="88" type="method" name="onArticleRevisionVisibilitySet" visibility="public" complexity="8" crap="8" count="19"/>
      <line num="89" type="stmt" count="19"/>
      <line num="91" type="stmt" count="19"/>
      <line num="92" type="stmt" count="19"/>
      <line num="95" type="stmt" count="5"/>
      <line num="96" type="stmt" count="5"/>
      <line num="97" type="stmt" count="5"/>
      <line num="98" type="stmt" count="5"/>
      <line num="99" type="stmt" count="5"/>
      <line num="100" type="stmt" count="5"/>
      <line num="101" type="stmt" count="5"/>
      <line num="102" type="stmt" count="5"/>
      <line num="103" type="stmt" count="5"/>
      <line num="104" type="stmt" count="5"/>
      <line num="105" type="stmt" count="5"/>
      <line num="106" type="stmt" count="5"/>
      <line num="107" type="stmt" count="5"/>
      <line num="108" type="stmt" count="5"/>
      <line num="109" type="stmt" count="5"/>
      <line num="110" type="stmt" count="5"/>
      <line num="112" type="stmt" count="14"/>
      <line num="113" type="stmt" count="14"/>
      <line num="116" type="stmt" count="7"/>
      <line num="117" type="stmt" count="7"/>
      <line num="119" type="stmt" count="1"/>
      <line num="121" type="stmt" count="6"/>
      <line num="122" type="stmt" count="6"/>
      <line num="125" type="stmt" count="1"/>
      <line num="126" type="stmt" count="1"/>
      <line num="128" type="stmt" count="5"/>
      <line num="129" type="stmt" count="5"/>
      <line num="130" type="stmt" count="5"/>
      <metrics loc="135" ncloc="103" classes="1" methods="5" coveredmethods="5" conditionals="0" coveredconditionals="0" statements="45" coveredstatements="45" elements="50" coveredelements="50"/>
    </file>
    <file name="/workspace/src/extensions/Hashtags/src/ServiceWiring.php">
      <metrics loc="15" ncloc="13" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Hashtags/src/ServicesHooks.php">
      <class name="MediaWiki\Extension\Hashtags\ServicesHooks" namespace="global">
        <metrics complexity="2" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="18" coveredstatements="18" elements="20" coveredelements="20"/>
      </class>
      <line num="15" type="method" name="onMediaWikiServices" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="22" type="stmt" count="1"/>
      <line num="23" type="stmt" count="1"/>
      <line num="24" type="stmt" count="1"/>
      <line num="25" type="stmt" count="1"/>
      <line num="35" type="method" name="wrapCommentParserFactory" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="38" type="stmt" count="1"/>
      <line num="39" type="stmt" count="1"/>
      <line num="40" type="stmt" count="1"/>
      <line num="41" type="stmt" count="1"/>
      <line num="42" type="stmt" count="1"/>
      <line num="43" type="stmt" count="1"/>
      <line num="44" type="stmt" count="1"/>
      <line num="45" type="stmt" count="1"/>
      <line num="46" type="stmt" count="1"/>
      <line num="47" type="stmt" count="1"/>
      <line num="48" type="stmt" count="1"/>
      <line num="49" type="stmt" count="1"/>
      <line num="50" type="stmt" count="1"/>
      <line num="51" type="stmt" count="1"/>
      <metrics loc="54" ncloc="36" classes="1" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="18" coveredstatements="18" elements="20" coveredelements="20"/>
    </file>
    <file name="/workspace/src/extensions/Hashtags/src/TagCollector.php">
      <class name="MediaWiki\Extension\Hashtags\TagCollector" namespace="global">
        <metrics complexity="10" methods="3" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="22" coveredstatements="22" elements="25" coveredelements="25"/>
      </class>
      <line num="67" type="method" name="submitTag" visibility="public" complexity="3" crap="3" count="6"/>
      <line num="68" type="stmt" count="6"/>
      <line num="70" type="stmt" count="3"/>
      <line num="72" type="stmt" count="3"/>
      <line num="73" type="stmt" count="1"/>
      <line num="75" type="stmt" count="2"/>
      <line num="87" type="method" name="startParse" visibility="public" complexity="3" crap="3" count="9"/>
      <line num="88" type="stmt" count="9"/>
      <line num="90" type="stmt" count="5"/>
      <line num="92" type="stmt" count="4"/>
      <line num="93" type="stmt" count="1"/>
      <line num="95" type="stmt" count="4"/>
      <line num="106" type="method" name="getTagsSeen" visibility="public" complexity="4" crap="4" count="6"/>
      <line num="107" type="stmt" count="6"/>
      <line num="108" type="stmt" count="1"/>
      <line num="111" type="stmt" count="6"/>
      <line num="112" type="stmt" count="6"/>
      <line num="114" type="stmt" count="6"/>
      <line num="116" type="stmt" count="3"/>
      <line num="117" type="stmt" count="1"/>
      <line num="119" type="stmt" count="2"/>
      <line num="120" type="stmt" count="2"/>
      <line num="121" type="stmt" count="2"/>
      <line num="122" type="stmt" count="2"/>
      <line num="123" type="stmt" count="2"/>
      <metrics loc="127" ncloc="52" classes="1" methods="3" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="22" coveredstatements="22" elements="25" coveredelements="25"/>
    </file>
    <file name="/workspace/src/extensions/Hashtags/src/TagHooks.php">
      <class name="MediaWiki\Extension\Hashtags\TagHooks" namespace="global">
        <metrics complexity="19" methods="6" coveredmethods="6" conditionals="0" coveredconditionals="0" statements="27" coveredstatements="27" elements="33" coveredelements="33"/>
      </class>
      <line num="18" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="23"/>
      <line num="19" type="stmt" count="23"/>
      <line num="20" type="stmt" count="23"/>
      <line num="21" type="stmt" count="23"/>
      <line num="27" type="method" name="onChangeTagsListActive" visibility="public" complexity="3" crap="3" count="1"/>
      <line num="28" type="stmt" count="1"/>
      <line num="29" type="stmt" count="1"/>
      <line num="36" type="method" name="onListDefinedTags" visibility="public" complexity="2" crap="2" count="1"/>
      <line num="37" type="stmt" count="1"/>
      <line num="38" type="stmt" count="1"/>
      <line num="48" type="method" name="getUsedHashtagTags" visibility="private" complexity="4" crap="4" count="2"/>
      <line num="49" type="stmt" count="2"/>
      <line num="50" type="stmt" count="2"/>
      <line num="51" type="stmt" count="2"/>
      <line num="53" type="stmt" count="2"/>
      <line num="54" type="stmt" count="2"/>
      <line num="55" type="stmt" count="2"/>
      <line num="57" type="stmt" count="2"/>
      <line num="60" type="stmt" count="2"/>
      <line num="66" type="method" name="onMessagesPreLoad" visibility="public" complexity="5" crap="5" count="12"/>
      <line num="67" type="stmt" count="12"/>
      <line num="68" type="stmt" count="12"/>
      <line num="70" type="stmt" count="9"/>
      <line num="71" type="stmt" count="9"/>
      <line num="73" type="stmt" count="9"/>
      <line num="75" type="stmt" count="3"/>
      <line num="76" type="stmt" count="3"/>
      <line num="84" type="method" name="onChangeTagCanCreate" visibility="public" complexity="4" crap="4" count="9"/>
      <line num="86" type="stmt" count="9"/>
      <line num="87" type="stmt" count="9"/>
      <line num="88" type="stmt" count="9"/>
      <line num="89" type="stmt" count="9"/>
      <line num="93" type="stmt" count="2"/>
      <metrics loc="97" ncloc="75" classes="1" methods="6" coveredmethods="6" conditionals="0" coveredconditionals="0" statements="27" coveredstatements="27" elements="33" coveredelements="33"/>
    </file>
    <metrics files="8" loc="991" ncloc="702" classes="7" methods="38" coveredmethods="33" conditionals="0" coveredconditionals="0" statements="326" coveredstatements="236" elements="364" coveredelements="269"/>
  </project>
</coverage>
