<?xml version="1.0" encoding="UTF-8"?>
<coverage generated="1791253884">
  <project timestamp="1791253884">
    <file name="/workspace/src/extensions/IPReputation/maintenance/GetIPReputationData.php">
      <class name="MediaWiki\IPReputation\Maintenance\GetIPReputationData" namespace="global">
        <metrics complexity="4" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/>
      </class>
      <metrics loc="46" ncloc="42" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/IPReputation/src/Hooks/Handlers/AbuseFilterHandler.php">
      <class name="MediaWiki\Extension\IPReputation\Hooks\Handlers\AbuseFilterHandler" namespace="global">
        <metrics complexity="33" methods="10" coveredmethods="10" conditionals="0" coveredconditionals="0" statements="70" coveredstatements="70" elements="80" coveredelements="80"/>
      </class>
      <line num="44" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="15"/>
      <line num="48" type="stmt" count="15"/>
      <line num="55" type="method" name="onAbuseFilter_generateUserVars" visibility="public" complexity="3" crap="3" count="12"/>
      <line num="56" type="stmt" count="12"/>
      <line num="59" type="stmt" count="12"/>
      <line num="60" type="stmt" count="12"/>
      <line num="61" type="stmt" count="12"/>
      <line num="62" type="stmt" count="12"/>
      <line num="63" type="stmt" count="12"/>
      <line num="64" type="stmt" count="12"/>
      <line num="78" type="method" name="onAbuseFilterGenerateAccountCreationVars" visibility="public" complexity="2" crap="2" count="6"/>
      <line num="81" type="stmt" count="6"/>
      <line num="82" type="stmt" count="6"/>
      <line num="83" type="stmt" count="6"/>
      <line num="84" type="stmt" count="6"/>
      <line num="85" type="stmt" count="6"/>
      <line num="86" type="stmt" count="6"/>
      <line num="87" type="stmt" count="6"/>
      <line num="88" type="stmt" count="6"/>
      <line num="89" type="stmt" count="6"/>
      <line num="104" type="method" name="onAbuseFilter_interceptVariable" visibility="public" complexity="12" crap="12" count="13"/>
      <line num="107" type="stmt" count="13"/>
      <line num="108" type="stmt" count="2"/>
      <line num="111" type="stmt" count="13"/>
      <line num="112" type="stmt" count="4"/>
      <line num="113" type="stmt" count="4"/>
      <line num="116" type="stmt" count="9"/>
      <line num="117" type="stmt" count="9"/>
      <line num="118" type="stmt" count="1"/>
      <line num="119" type="stmt" count="1"/>
      <line num="122" type="stmt" count="8"/>
      <line num="126" type="stmt" count="8"/>
      <line num="127" type="stmt" count="1"/>
      <line num="128" type="stmt" count="1"/>
      <line num="132" type="stmt" count="8"/>
      <line num="133" type="stmt" count="8"/>
      <line num="134" type="stmt" count="8"/>
      <line num="135" type="stmt" count="7"/>
      <line num="136" type="stmt" count="7"/>
      <line num="137" type="stmt" count="7"/>
      <line num="138" type="stmt" count="7"/>
      <line num="139" type="stmt" count="7"/>
      <line num="140" type="stmt" count="7"/>
      <line num="141" type="stmt" count="7"/>
      <line num="142" type="stmt" count="7"/>
      <line num="143" type="stmt" count="7"/>
      <line num="144" type="stmt" count="7"/>
      <line num="145" type="stmt" count="7"/>
      <line num="146" type="stmt" count="7"/>
      <line num="147" type="stmt" count="7"/>
      <line num="148" type="stmt" count="7"/>
      <line num="149" type="stmt" count="7"/>
      <line num="152" type="stmt" count="8"/>
      <line num="161" type="method" name="onAbuseFilter_builder" visibility="public" complexity="2" crap="2" count="1"/>
      <line num="162" type="stmt" count="1"/>
      <line num="170" type="stmt" count="1"/>
      <line num="179" type="method" name="onAbuseFilterCustomProtectedVariables" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="180" type="stmt" count="1"/>
      <line num="190" type="method" name="getMethodForVariable" visibility="private" complexity="1" crap="1" count="14"/>
      <line num="191" type="stmt" count="14"/>
      <line num="200" type="method" name="getVariableForMethod" visibility="private" complexity="1" crap="1" count="13"/>
      <line num="201" type="stmt" count="13"/>
      <line num="211" type="method" name="getTargetIP" visibility="private" complexity="2" crap="2" count="9"/>
      <line num="213" type="stmt" count="9"/>
      <line num="214" type="stmt" count="9"/>
      <line num="215" type="stmt" count="2"/>
      <line num="217" type="stmt" count="7"/>
      <line num="231" type="method" name="shouldGenerateVariableValue" visibility="private" complexity="8" crap="8" count="13"/>
      <line num="233" type="stmt" count="13"/>
      <line num="236" type="stmt" count="13"/>
      <line num="238" type="stmt" count="2"/>
      <line num="239" type="stmt" count="2"/>
      <line num="240" type="stmt" count="1"/>
      <line num="246" type="stmt" count="12"/>
      <line num="247" type="stmt" count="12"/>
      <line num="249" type="stmt" count="7"/>
      <line num="254" type="stmt" count="5"/>
      <line num="255" type="stmt" count="2"/>
      <line num="261" type="stmt" count="3"/>
      <line num="262" type="stmt" count="3"/>
      <metrics loc="265" ncloc="172" classes="1" methods="10" coveredmethods="10" conditionals="0" coveredconditionals="0" statements="70" coveredstatements="70" elements="80" coveredelements="80"/>
    </file>
    <file name="/workspace/src/extensions/IPReputation/src/Hooks/Handlers/GetSecurityLogContextHandler.php">
      <class name="MediaWiki\Extension\IPReputation\Hooks\Handlers\GetSecurityLogContextHandler" namespace="global">
        <metrics complexity="13" methods="3" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="30" coveredstatements="30" elements="33" coveredelements="33"/>
      </class>
      <line num="13" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="4"/>
      <line num="14" type="stmt" count="4"/>
      <line num="21" type="method" name="enableHookHandlerForTest" visibility="public" complexity="1" crap="1" count="3"/>
      <line num="22" type="stmt" count="3"/>
      <line num="26" type="method" name="onGetSecurityLogContext" visibility="public" complexity="11" crap="11" count="4"/>
      <line num="28" type="stmt" count="4"/>
      <line num="29" type="stmt" count="1"/>
      <line num="31" type="stmt" count="3"/>
      <line num="32" type="stmt" count="3"/>
      <line num="33" type="stmt" count="3"/>
      <line num="34" type="stmt" count="3"/>
      <line num="35" type="stmt" count="1"/>
      <line num="37" type="stmt" count="2"/>
      <line num="38" type="stmt" count="2"/>
      <line num="39" type="stmt" count="1"/>
      <line num="41" type="stmt" count="2"/>
      <line num="42" type="stmt" count="2"/>
      <line num="43" type="stmt" count="2"/>
      <line num="45" type="stmt" count="2"/>
      <line num="46" type="stmt" count="2"/>
      <line num="47" type="stmt" count="1"/>
      <line num="49" type="stmt" count="2"/>
      <line num="50" type="stmt" count="2"/>
      <line num="51" type="stmt" count="1"/>
      <line num="53" type="stmt" count="2"/>
      <line num="54" type="stmt" count="2"/>
      <line num="55" type="stmt" count="1"/>
      <line num="57" type="stmt" count="2"/>
      <line num="58" type="stmt" count="2"/>
      <line num="59" type="stmt" count="1"/>
      <line num="61" type="stmt" count="2"/>
      <line num="62" type="stmt" count="2"/>
      <line num="63" type="stmt" count="1"/>
      <metrics loc="67" ncloc="60" classes="1" methods="3" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="30" coveredstatements="30" elements="33" coveredelements="33"/>
    </file>
    <file name="/workspace/src/extensions/IPReputation/src/IPoid/IPoidDataFetcher.php">
      <metrics loc="27" 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/IPReputation/src/IPoid/IPoidResponse.php">
      <class name="MediaWiki\Extension\IPReputation\IPoid\IPoidResponse" namespace="global">
        <metrics complexity="14" methods="14" coveredmethods="14" conditionals="0" coveredconditionals="0" statements="38" coveredstatements="38" elements="52" coveredelements="52"/>
      </class>
      <line num="26" type="method" name="__construct" visibility="private" complexity="1" crap="1" count="2"/>
      <line num="39" type="stmt" count="2"/>
      <line num="49" type="method" name="newFromArray" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="50" type="stmt" count="2"/>
      <line num="51" type="stmt" count="2"/>
      <line num="52" 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="56" type="stmt" count="2"/>
      <line num="57" type="stmt" count="2"/>
      <line num="58" type="stmt" count="2"/>
      <line num="59" type="stmt" count="2"/>
      <line num="60" type="stmt" count="2"/>
      <line num="61" type="stmt" count="2"/>
      <line num="62" type="stmt" count="2"/>
      <line num="68" type="method" name="getBehaviors" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="69" type="stmt" count="2"/>
      <line num="75" type="method" name="getRisks" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="76" type="stmt" count="2"/>
      <line num="82" type="method" name="getTunnelOperators" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="83" type="stmt" count="2"/>
      <line num="89" type="method" name="getProxies" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="90" type="stmt" count="2"/>
      <line num="96" type="method" name="getTagMetadataCategories" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="97" type="stmt" count="2"/>
      <line num="100" type="method" name="getNumUsersOnThisIP" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="101" type="stmt" count="2"/>
      <line num="104" type="method" name="getCountries" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="105" type="stmt" count="2"/>
      <line num="111" type="method" name="getConnectionTypes" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="112" type="stmt" count="2"/>
      <line num="115" type="method" name="getOrganization" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="116" type="stmt" count="2"/>
      <line num="119" type="method" name="getCity" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="120" type="stmt" count="2"/>
      <line num="123" type="method" name="getCountry" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="124" type="stmt" count="2"/>
      <line num="127" type="method" name="jsonSerialize" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="128" type="stmt" count="2"/>
      <line num="129" type="stmt" count="2"/>
      <line num="130" type="stmt" count="2"/>
      <line num="131" type="stmt" count="2"/>
      <line num="132" type="stmt" count="2"/>
      <line num="133" type="stmt" count="2"/>
      <line num="134" type="stmt" count="2"/>
      <line num="135" type="stmt" count="2"/>
      <line num="136" type="stmt" count="2"/>
      <line num="137" type="stmt" count="2"/>
      <line num="138" type="stmt" count="2"/>
      <line num="139" type="stmt" count="2"/>
      <line num="140" type="stmt" count="2"/>
      <metrics loc="143" ncloc="101" classes="1" methods="14" coveredmethods="14" conditionals="0" coveredconditionals="0" statements="38" coveredstatements="38" elements="52" coveredelements="52"/>
    </file>
    <file name="/workspace/src/extensions/IPReputation/src/IPoid/NullDataFetcher.php">
      <class name="MediaWiki\Extension\IPReputation\IPoid\NullDataFetcher" namespace="global">
        <metrics complexity="3" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/>
      </class>
      <metrics loc="32" ncloc="27" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/IPReputation/src/IPoid/OpenSearchIPoidDataFetcher.php">
      <class name="MediaWiki\Extension\IPReputation\IPoid\OpenSearchIPoidDataFetcher" namespace="global">
        <metrics complexity="16" methods="3" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="79" coveredstatements="79" elements="82" coveredelements="82"/>
      </class>
      <line num="23" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="7"/>
      <line num="29" type="stmt" count="7"/>
      <line num="33" type="method" name="getDataForIp" visibility="public" complexity="14" crap="14" count="7"/>
      <line num="34" type="stmt" count="7"/>
      <line num="35" type="stmt" count="7"/>
      <line num="36" type="stmt" count="7"/>
      <line num="37" type="stmt" count="7"/>
      <line num="38" type="stmt" count="7"/>
      <line num="39" type="stmt" count="7"/>
      <line num="40" type="stmt" count="7"/>
      <line num="41" type="stmt" count="7"/>
      <line num="42" type="stmt" count="7"/>
      <line num="43" type="stmt" count="7"/>
      <line num="44" type="stmt" count="7"/>
      <line num="45" type="stmt" count="7"/>
      <line num="46" type="stmt" count="7"/>
      <line num="47" type="stmt" count="7"/>
      <line num="48" type="stmt" count="7"/>
      <line num="49" type="stmt" count="7"/>
      <line num="50" type="stmt" count="7"/>
      <line num="51" type="stmt" count="7"/>
      <line num="53" type="stmt" count="7"/>
      <line num="54" type="stmt" count="4"/>
      <line num="57" type="stmt" count="4"/>
      <line num="58" type="stmt" count="4"/>
      <line num="59" type="stmt" count="4"/>
      <line num="60" type="stmt" count="4"/>
      <line num="61" type="stmt" count="4"/>
      <line num="62" type="stmt" count="4"/>
      <line num="63" type="stmt" count="4"/>
      <line num="64" type="stmt" count="4"/>
      <line num="65" type="stmt" count="4"/>
      <line num="66" type="stmt" count="4"/>
      <line num="70" type="stmt" count="7"/>
      <line num="73" type="stmt" count="3"/>
      <line num="74" type="stmt" count="1"/>
      <line num="75" type="stmt" count="1"/>
      <line num="76" type="stmt" count="1"/>
      <line num="77" type="stmt" count="1"/>
      <line num="78" type="stmt" count="1"/>
      <line num="79" type="stmt" count="1"/>
      <line num="80" type="stmt" count="1"/>
      <line num="82" type="stmt" count="2"/>
      <line num="83" type="stmt" count="2"/>
      <line num="84" type="stmt" count="2"/>
      <line num="85" type="stmt" count="2"/>
      <line num="87" type="stmt" count="3"/>
      <line num="90" type="stmt" count="4"/>
      <line num="92" type="stmt" count="4"/>
      <line num="94" type="stmt" count="1"/>
      <line num="95" type="stmt" count="1"/>
      <line num="96" type="stmt" count="1"/>
      <line num="97" type="stmt" count="1"/>
      <line num="98" type="stmt" count="1"/>
      <line num="99" type="stmt" count="1"/>
      <line num="100" type="stmt" count="1"/>
      <line num="101" type="stmt" count="1"/>
      <line num="102" type="stmt" count="1"/>
      <line num="105" type="stmt" count="3"/>
      <line num="106" type="stmt" count="1"/>
      <line num="109" type="stmt" count="2"/>
      <line num="112" type="stmt" count="2"/>
      <line num="113" type="stmt" count="2"/>
      <line num="114" type="stmt" count="2"/>
      <line num="115" type="stmt" count="1"/>
      <line num="116" type="stmt" count="1"/>
      <line num="117" type="stmt" count="1"/>
      <line num="121" type="stmt" count="2"/>
      <line num="122" type="stmt" count="2"/>
      <line num="123" type="stmt" count="2"/>
      <line num="124" type="stmt" count="2"/>
      <line num="125" type="stmt" count="2"/>
      <line num="126" type="stmt" count="2"/>
      <line num="127" type="stmt" count="2"/>
      <line num="128" type="stmt" count="2"/>
      <line num="129" type="stmt" count="2"/>
      <line num="130" type="stmt" count="2"/>
      <line num="131" type="stmt" count="2"/>
      <line num="132" type="stmt" count="2"/>
      <line num="133" type="stmt" count="2"/>
      <line num="137" type="method" name="getBackendName" visibility="public" complexity="1" crap="1" count="3"/>
      <line num="138" type="stmt" count="3"/>
      <metrics loc="141" ncloc="134" classes="1" methods="3" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="79" coveredstatements="79" elements="82" coveredelements="82"/>
    </file>
    <file name="/workspace/src/extensions/IPReputation/src/PreAuthenticationProvider.php">
      <class name="MediaWiki\Extension\IPReputation\PreAuthenticationProvider" namespace="global">
        <metrics complexity="6" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="44" coveredstatements="44" elements="46" coveredelements="46"/>
      </class>
      <line num="22" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="5"/>
      <line num="27" type="stmt" count="5"/>
      <line num="30" type="method" name="testForAccountCreation" visibility="public" complexity="5" crap="5" count="5"/>
      <line num="32" type="stmt" count="5"/>
      <line num="33" type="stmt" count="1"/>
      <line num="38" type="stmt" count="4"/>
      <line num="39" type="stmt" count="4"/>
      <line num="40" type="stmt" count="4"/>
      <line num="41" type="stmt" count="4"/>
      <line num="43" type="stmt" count="1"/>
      <line num="47" type="stmt" count="3"/>
      <line num="48" type="stmt" count="3"/>
      <line num="49" type="stmt" count="3"/>
      <line num="50" type="stmt" count="3"/>
      <line num="51" type="stmt" count="3"/>
      <line num="52" type="stmt" count="3"/>
      <line num="53" type="stmt" count="3"/>
      <line num="54" type="stmt" count="3"/>
      <line num="55" type="stmt" count="3"/>
      <line num="56" type="stmt" count="3"/>
      <line num="57" type="stmt" count="3"/>
      <line num="58" type="stmt" count="3"/>
      <line num="59" type="stmt" count="3"/>
      <line num="60" type="stmt" count="3"/>
      <line num="61" type="stmt" count="3"/>
      <line num="63" type="stmt" count="1"/>
      <line num="66" type="stmt" count="2"/>
      <line num="67" type="stmt" count="2"/>
      <line num="68" type="stmt" count="2"/>
      <line num="69" type="stmt" count="2"/>
      <line num="70" type="stmt" count="2"/>
      <line num="71" type="stmt" count="2"/>
      <line num="72" type="stmt" count="2"/>
      <line num="73" type="stmt" count="2"/>
      <line num="74" type="stmt" count="2"/>
      <line num="75" type="stmt" count="2"/>
      <line num="76" type="stmt" count="2"/>
      <line num="77" type="stmt" count="2"/>
      <line num="78" type="stmt" count="2"/>
      <line num="79" type="stmt" count="2"/>
      <line num="80" type="stmt" count="2"/>
      <line num="83" type="stmt" count="2"/>
      <line num="85" type="stmt" count="2"/>
      <line num="86" type="stmt" count="3"/>
      <line num="87" type="stmt" count="3"/>
      <line num="90" type="stmt" count="3"/>
      <metrics loc="93" ncloc="80" classes="1" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="44" coveredstatements="44" elements="46" coveredelements="46"/>
    </file>
    <file name="/workspace/src/extensions/IPReputation/src/ServiceWiring.php">
      <metrics loc="50" ncloc="45" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/IPReputation/src/Services/IPReputationIPoidDataLookup.php">
      <class name="MediaWiki\Extension\IPReputation\Services\IPReputationIPoidDataLookup" namespace="global">
        <metrics complexity="10" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="28" coveredstatements="28" elements="30" coveredelements="30"/>
      </class>
      <line num="40" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="11"/>
      <line num="45" type="stmt" count="11"/>
      <line num="54" type="method" name="getIPoidDataForIp" visibility="public" complexity="6" crap="6" count="11"/>
      <line num="55" type="stmt" count="11"/>
      <line num="58" type="stmt" count="11"/>
      <line num="59" type="stmt" count="11"/>
      <line num="60" type="stmt" count="11"/>
      <line num="61" type="stmt" count="11"/>
      <line num="62" type="stmt" count="11"/>
      <line num="63" type="stmt" count="11"/>
      <line num="64" type="stmt" count="11"/>
      <line num="68" type="stmt" count="11"/>
      <line num="69" type="stmt" count="6"/>
      <line num="70" type="stmt" count="6"/>
      <line num="71" type="stmt" count="6"/>
      <line num="72" type="stmt" count="6"/>
      <line num="73" type="stmt" count="6"/>
      <line num="78" type="stmt" count="11"/>
      <line num="79" type="stmt" count="1"/>
      <line num="80" type="stmt" count="1"/>
      <line num="82" type="stmt" count="11"/>
      <line num="83" type="stmt" count="11"/>
      <line num="84" type="stmt" count="11"/>
      <line num="85" type="stmt" count="11"/>
      <line num="86" type="stmt" count="11"/>
      <line num="87" type="stmt" count="11"/>
      <line num="88" type="stmt" count="11"/>
      <line num="90" type="stmt" count="11"/>
      <line num="92" type="stmt" count="7"/>
      <line num="95" type="stmt" count="5"/>
      <metrics loc="112" ncloc="73" classes="1" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="28" coveredstatements="28" elements="30" coveredelements="30"/>
    </file>
    <metrics files="10" loc="976" ncloc="747" classes="6" methods="34" coveredmethods="34" conditionals="0" coveredconditionals="0" statements="289" coveredstatements="289" elements="323" coveredelements="323"/>
  </project>
</coverage>
