<?xml version="1.0" encoding="UTF-8"?>
<coverage generated="1790266329">
  <project timestamp="1790266329">
    <file name="/workspace/src/extensions/TestKitchen/includes/ConfigsFetcher.php">
      <class name="MediaWiki\Extension\TestKitchen\ConfigsFetcher" namespace="global">
        <metrics complexity="47" methods="18" coveredmethods="12" conditionals="0" coveredconditionals="0" statements="212" coveredstatements="181" elements="230" coveredelements="193"/>
      </class>
      <line num="42" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="10"/>
      <line num="52" type="stmt" count="10"/>
      <line num="65" type="method" name="getInstrumentConfigs" visibility="public" complexity="1" crap="1" count="4"/>
      <line num="66" type="stmt" count="4"/>
      <line num="81" type="method" name="getExperimentConfigs" visibility="public" complexity="2" crap="2.31" count="2"/>
      <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="88" type="stmt" count="0"/>
      <line num="89" type="stmt" count="0"/>
      <line num="90" type="stmt" count="0"/>
      <line num="103" type="method" name="formatExperimentConfigs" visibility="private" complexity="1" crap="1" count="2"/>
      <line num="104" type="stmt" count="2"/>
      <line num="105" type="stmt" count="2"/>
      <line num="106" type="stmt" count="2"/>
      <line num="107" type="stmt" count="2"/>
      <line num="109" type="stmt" count="2"/>
      <line num="119" type="method" name="normalizeExperimentConfigRow" visibility="private" complexity="1" crap="1" count="2"/>
      <line num="120" 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="127" type="stmt" count="2"/>
      <line num="128" type="stmt" count="2"/>
      <line num="129" type="stmt" count="2"/>
      <line num="131" type="stmt" count="2"/>
      <line num="143" type="method" name="calculateExposureVersion" visibility="private" complexity="1" crap="1" count="2"/>
      <line num="144" type="stmt" count="2"/>
      <line num="145" type="stmt" count="2"/>
      <line num="147" type="stmt" count="2"/>
      <line num="148" type="stmt" count="2"/>
      <line num="149" type="stmt" count="2"/>
      <line num="150" type="stmt" count="2"/>
      <line num="151" type="stmt" count="2"/>
      <line num="152" type="stmt" count="2"/>
      <line num="153" type="stmt" count="2"/>
      <line num="154" type="stmt" count="2"/>
      <line num="155" type="stmt" count="2"/>
      <line num="157" type="stmt" count="2"/>
      <line num="159" type="stmt" count="2"/>
      <line num="162" type="method" name="getConfigs" visibility="private" complexity="3" crap="3.07" count="4"/>
      <line num="163" type="stmt" count="4"/>
      <line num="164" type="stmt" count="4"/>
      <line num="165" type="stmt" count="0"/>
      <line num="168" type="stmt" count="4"/>
      <line num="171" type="stmt" count="4"/>
      <line num="174" type="method" name="getConfigsInternal" visibility="private" complexity="3" crap="3" count="4"/>
      <line num="175" type="stmt" count="4"/>
      <line num="176" type="stmt" count="4"/>
      <line num="177" type="stmt" count="4"/>
      <line num="179" type="stmt" count="4"/>
      <line num="180" type="stmt" count="4"/>
      <line num="181" type="stmt" count="4"/>
      <line num="183" type="stmt" count="4"/>
      <line num="185" type="stmt" count="4"/>
      <line num="186" type="stmt" count="4"/>
      <line num="189" type="stmt" count="4"/>
      <line num="191" type="stmt" count="4"/>
      <line num="192" type="stmt" count="3"/>
      <line num="193" type="stmt" count="3"/>
      <line num="194" type="stmt" count="3"/>
      <line num="196" type="stmt" count="3"/>
      <line num="197" type="stmt" count="3"/>
      <line num="198" type="stmt" count="3"/>
      <line num="199" type="stmt" count="3"/>
      <line num="200" type="stmt" count="3"/>
      <line num="201" type="stmt" count="3"/>
      <line num="204" type="stmt" count="3"/>
      <line num="205" type="stmt" count="1"/>
      <line num="208" type="stmt" count="2"/>
      <line num="209" type="stmt" count="2"/>
      <line num="210" type="stmt" count="2"/>
      <line num="215" type="stmt" count="2"/>
      <line num="217" type="stmt" count="2"/>
      <line num="218" type="stmt" count="4"/>
      <line num="219" type="stmt" count="4"/>
      <line num="221" type="stmt" count="4"/>
      <line num="223" type="stmt" count="4"/>
      <line num="224" type="stmt" count="4"/>
      <line num="225" type="stmt" count="4"/>
      <line num="227" type="stmt" count="4"/>
      <line num="235" type="method" name="updateInstrumentConfigs" visibility="public" complexity="1" crap="1" count="4"/>
      <line num="236" type="stmt" count="4"/>
      <line num="244" type="method" name="updateExperimentConfigs" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="245" type="stmt" count="0"/>
      <line num="248" type="method" name="updateConfigs" visibility="private" complexity="5" crap="5" count="4"/>
      <line num="249" type="stmt" count="4"/>
      <line num="250" type="stmt" count="4"/>
      <line num="252" type="stmt" count="4"/>
      <line num="254" type="stmt" count="4"/>
      <line num="257" type="stmt" count="4"/>
      <line num="259" type="stmt" count="3"/>
      <line num="264" type="stmt" count="1"/>
      <line num="265" type="stmt" count="1"/>
      <line num="267" type="stmt" count="1"/>
      <line num="268" type="stmt" count="1"/>
      <line num="269" type="stmt" count="1"/>
      <line num="270" type="stmt" count="1"/>
      <line num="271" type="stmt" count="1"/>
      <line num="273" type="stmt" count="1"/>
      <line num="274" type="stmt" count="1"/>
      <line num="278" type="stmt" count="1"/>
      <line num="279" type="stmt" count="1"/>
      <line num="281" type="stmt" count="1"/>
      <line num="284" type="stmt" count="1"/>
      <line num="287" type="method" name="fetchConfigs" visibility="private" complexity="7" crap="7" count="4"/>
      <line num="288" type="stmt" count="4"/>
      <line num="289" type="stmt" count="4"/>
      <line num="290" type="stmt" count="0"/>
      <line num="291" type="stmt" count="4"/>
      <line num="292" type="stmt" count="4"/>
      <line num="294" type="stmt" count="4"/>
      <line num="295" type="stmt" count="4"/>
      <line num="296" type="stmt" count="4"/>
      <line num="297" type="stmt" count="4"/>
      <line num="298" type="stmt" count="4"/>
      <line num="299" type="stmt" count="4"/>
      <line num="300" type="stmt" count="4"/>
      <line num="301" type="stmt" count="4"/>
      <line num="302" type="stmt" count="4"/>
      <line num="308" type="stmt" count="4"/>
      <line num="309" type="stmt" count="4"/>
      <line num="311" type="stmt" count="4"/>
      <line num="313" type="stmt" count="4"/>
      <line num="315" type="stmt" count="4"/>
      <line num="316" type="stmt" count="4"/>
      <line num="318" type="stmt" count="4"/>
      <line num="319" type="stmt" count="3"/>
      <line num="322" type="stmt" count="4"/>
      <line num="323" type="stmt" count="2"/>
      <line num="325" type="stmt" count="2"/>
      <line num="328" type="stmt" count="4"/>
      <line num="330" type="stmt" count="4"/>
      <line num="331" type="stmt" count="3"/>
      <line num="333" type="stmt" count="3"/>
      <line num="334" type="stmt" count="3"/>
      <line num="335" type="stmt" count="3"/>
      <line num="336" type="stmt" count="3"/>
      <line num="337" type="stmt" count="3"/>
      <line num="338" type="stmt" count="3"/>
      <line num="339" type="stmt" count="3"/>
      <line num="341" type="stmt" count="3"/>
      <line num="342" type="stmt" count="3"/>
      <line num="346" type="stmt" count="4"/>
      <line num="347" type="stmt" count="4"/>
      <line num="350" type="stmt" count="4"/>
      <line num="364" type="method" name="processConfigs" visibility="protected" complexity="9" crap="24.46" count="4"/>
      <line num="365" type="stmt" count="4"/>
      <line num="366" type="stmt" count="4"/>
      <line num="367" type="stmt" count="4"/>
      <line num="368" type="stmt" count="4"/>
      <line num="370" type="stmt" count="4"/>
      <line num="371" type="stmt" count="2"/>
      <line num="374" type="stmt" count="2"/>
      <line num="375" type="stmt" count="2"/>
      <line num="377" type="stmt" count="2"/>
      <line num="378" type="stmt" count="0"/>
      <line num="381" type="stmt" count="2"/>
      <line num="384" type="stmt" count="2"/>
      <line num="385" type="stmt" count="2"/>
      <line num="387" type="stmt" count="0"/>
      <line num="390" type="stmt" count="2"/>
      <line num="391" type="stmt" count="0"/>
      <line num="392" type="stmt" count="0"/>
      <line num="393" type="stmt" count="0"/>
      <line num="394" type="stmt" count="0"/>
      <line num="395" type="stmt" count="0"/>
      <line num="396" type="stmt" count="0"/>
      <line num="397" type="stmt" count="0"/>
      <line num="398" type="stmt" count="0"/>
      <line num="400" type="stmt" count="0"/>
      <line num="401" type="stmt" count="0"/>
      <line num="402" type="stmt" count="0"/>
      <line num="403" type="stmt" count="0"/>
      <line num="404" type="stmt" count="0"/>
      <line num="405" type="stmt" count="0"/>
      <line num="406" type="stmt" count="0"/>
      <line num="407" type="stmt" count="0"/>
      <line num="409" type="stmt" count="0"/>
      <line num="413" type="stmt" count="4"/>
      <line num="421" type="method" name="getSampleConfig" visibility="private" complexity="6" crap="6.64" count="2"/>
      <line num="422" type="stmt" count="2"/>
      <line num="423" type="stmt" count="2"/>
      <line num="424" type="stmt" count="2"/>
      <line num="425" type="stmt" count="2"/>
      <line num="427" type="stmt" count="2"/>
      <line num="428" type="stmt" count="2"/>
      <line num="429" type="stmt" count="2"/>
      <line num="430" type="stmt" count="2"/>
      <line num="432" type="stmt" count="2"/>
      <line num="433" type="stmt" count="2"/>
      <line num="434" type="stmt" count="2"/>
      <line num="436" type="stmt" count="2"/>
      <line num="440" type="stmt" count="2"/>
      <line num="441" type="stmt" count="2"/>
      <line num="443" type="stmt" count="0"/>
      <line num="444" type="stmt" count="0"/>
      <line num="445" type="stmt" count="0"/>
      <line num="446" type="stmt" count="0"/>
      <line num="447" type="stmt" count="0"/>
      <line num="448" type="stmt" count="0"/>
      <line num="452" type="stmt" count="2"/>
      <line num="453" type="stmt" count="2"/>
      <line num="456" type="stmt" count="2"/>
      <line num="464" type="method" name="incrementApiRequestsTotal" visibility="private" complexity="1" crap="1" count="4"/>
      <line num="465" type="stmt" count="4"/>
      <line num="466" type="stmt" count="4"/>
      <line num="467" type="stmt" count="4"/>
      <line num="475" type="method" name="logApiRequestDuration" visibility="private" complexity="1" crap="1" count="4"/>
      <line num="476" type="stmt" count="4"/>
      <line num="477" type="stmt" count="4"/>
      <line num="486" type="method" name="getServerErrorLabel" visibility="private" complexity="1" crap="1" count="3"/>
      <line num="487" type="stmt" count="3"/>
      <line num="488" type="stmt" count="3"/>
      <line num="489" type="stmt" count="3"/>
      <line num="490" type="stmt" count="3"/>
      <line num="491" type="stmt" count="3"/>
      <line num="492" type="stmt" count="3"/>
      <line num="509" type="method" name="getClientErrorLabels" visibility="private" complexity="2" crap="2" count="3"/>
      <line num="510" type="stmt" count="3"/>
      <line num="512" type="stmt" count="3"/>
      <line num="513" type="stmt" count="3"/>
      <line num="515" type="stmt" count="3"/>
      <line num="516" type="stmt" count="2"/>
      <line num="517" type="stmt" count="3"/>
      <line num="518" type="stmt" count="3"/>
      <line num="520" type="stmt" count="3"/>
      <line num="522" type="stmt" count="3"/>
      <line num="526" type="stmt" count="0"/>
      <metrics loc="527" ncloc="401" classes="1" methods="18" coveredmethods="12" conditionals="0" coveredconditionals="0" statements="213" coveredstatements="181" elements="231" coveredelements="193"/>
    </file>
    <file name="/workspace/src/extensions/TestKitchen/includes/Coordination/Coordinator.php">
      <class name="MediaWiki\Extension\TestKitchen\Coordination\Coordinator" namespace="global">
        <metrics complexity="6" methods="2" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="16" coveredstatements="15" elements="18" coveredelements="16"/>
      </class>
      <line num="9" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="3"/>
      <line num="14" type="stmt" count="3"/>
      <line num="34" type="method" name="getAssignmentForUser" visibility="public" complexity="5" crap="5.01" count="3"/>
      <line num="35" type="stmt" count="3"/>
      <line num="36" type="stmt" count="0"/>
      <line num="37" type="stmt" count="3"/>
      <line num="39" type="stmt" count="3"/>
      <line num="40" type="stmt" count="2"/>
      <line num="41" type="stmt" count="2"/>
      <line num="44" type="stmt" count="1"/>
      <line num="45" 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"/>
      <line num="52" type="stmt" count="1"/>
      <line num="56" type="stmt" count="2"/>
      <metrics loc="59" ncloc="41" classes="1" methods="2" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="16" coveredstatements="15" elements="18" coveredelements="16"/>
    </file>
    <file name="/workspace/src/extensions/TestKitchen/includes/Coordination/EnrollmentCssClassSerializer.php">
      <class name="MediaWiki\Extension\TestKitchen\Coordination\EnrollmentCssClassSerializer" namespace="global">
        <metrics complexity="3" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="10" coveredstatements="10" elements="12" coveredelements="12"/>
      </class>
      <line num="17" type="method" name="serialize" visibility="public" complexity="2" crap="2" count="2"/>
      <line num="18" type="stmt" count="2"/>
      <line num="20" type="stmt" count="2"/>
      <line num="21" type="stmt" count="1"/>
      <line num="23" type="stmt" count="1"/>
      <line num="24" type="stmt" count="1"/>
      <line num="27" type="stmt" count="2"/>
      <line num="42" type="method" name="serializeName" visibility="private" complexity="1" crap="1" 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="47" type="stmt" count="1"/>
      <metrics loc="50" ncloc="30" classes="1" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="10" coveredstatements="10" elements="12" coveredelements="12"/>
    </file>
    <file name="/workspace/src/extensions/TestKitchen/includes/Coordination/EnrollmentHeaderSerializer.php">
      <class name="MediaWiki\Extension\TestKitchen\Coordination\EnrollmentHeaderSerializer" namespace="global">
        <metrics complexity="4" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="6" coveredstatements="6" elements="7" coveredelements="7"/>
      </class>
      <line num="6" type="method" name="serialize" visibility="public" complexity="4" crap="4" count="3"/>
      <line num="7" type="stmt" count="3"/>
      <line num="8" type="stmt" count="2"/>
      <line num="11" type="stmt" count="1"/>
      <line num="13" type="stmt" count="1"/>
      <line num="14" type="stmt" count="1"/>
      <line num="17" type="stmt" count="1"/>
      <metrics loc="20" ncloc="20" classes="1" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="6" coveredstatements="6" elements="7" coveredelements="7"/>
    </file>
    <file name="/workspace/src/extensions/TestKitchen/includes/Coordination/EnrollmentResultBuilder.php">
      <class name="MediaWiki\Extension\TestKitchen\Coordination\EnrollmentResultBuilder" namespace="global">
        <metrics complexity="5" methods="4" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="14" coveredstatements="14" elements="18" coveredelements="18"/>
      </class>
      <line num="15" type="method" name="addExperiment" visibility="public" complexity="1" crap="1" count="7"/>
      <line num="16" type="stmt" count="7"/>
      <line num="19" type="method" name="addAssignment" visibility="public" complexity="2" crap="2" count="6"/>
      <line num="20" type="stmt" count="6"/>
      <line num="21" type="stmt" count="6"/>
      <line num="23" type="stmt" count="6"/>
      <line num="24" type="stmt" count="3"/>
      <line num="35" type="method" name="build" visibility="public" complexity="1" crap="1" count="12"/>
      <line num="36" type="stmt" count="12"/>
      <line num="37" type="stmt" count="12"/>
      <line num="38" type="stmt" count="12"/>
      <line num="39" type="stmt" count="12"/>
      <line num="40" type="stmt" count="12"/>
      <line num="41" type="stmt" count="12"/>
      <line num="50" type="method" name="getEnrollmentsWithoutSubjectIds" visibility="public" complexity="1" crap="1" count="4"/>
      <line num="51" type="stmt" count="4"/>
      <line num="52" type="stmt" count="4"/>
      <line num="53" type="stmt" count="4"/>
      <metrics loc="56" ncloc="39" classes="1" methods="4" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="14" coveredstatements="14" elements="18" coveredelements="18"/>
    </file>
    <file name="/workspace/src/extensions/TestKitchen/includes/Coordination/EnrollmentsProcessor.php">
      <class name="MediaWiki\Extension\TestKitchen\Coordination\EnrollmentsProcessor" namespace="global">
        <metrics complexity="5" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="19" coveredstatements="19" elements="21" coveredelements="21"/>
      </class>
      <line num="6" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="8"/>
      <line num="9" type="stmt" count="8"/>
      <line num="11" type="method" name="process" visibility="public" complexity="4" crap="4" count="3"/>
      <line num="17" type="stmt" count="3"/>
      <line num="19" type="stmt" count="3"/>
      <line num="20" type="stmt" count="3"/>
      <line num="22" type="stmt" count="3"/>
      <line num="23" type="stmt" count="3"/>
      <line num="25" type="stmt" count="3"/>
      <line num="26" type="stmt" count="3"/>
      <line num="29" type="stmt" count="3"/>
      <line num="30" type="stmt" count="3"/>
      <line num="31" type="stmt" count="3"/>
      <line num="32" type="stmt" count="3"/>
      <line num="33" type="stmt" count="3"/>
      <line num="35" type="stmt" count="3"/>
      <line num="36" type="stmt" count="3"/>
      <line num="38" type="stmt" count="3"/>
      <line num="39" type="stmt" count="3"/>
      <line num="44" type="stmt" count="3"/>
      <line num="45" type="stmt" count="3"/>
      <metrics loc="50" ncloc="45" classes="1" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="19" coveredstatements="19" elements="21" coveredelements="21"/>
    </file>
    <file name="/workspace/src/extensions/TestKitchen/includes/Coordination/RequestEnrollmentsProcessor.php">
      <class name="MediaWiki\Extension\TestKitchen\Coordination\RequestEnrollmentsProcessor" namespace="global">
        <metrics complexity="15" methods="5" coveredmethods="5" conditionals="0" coveredconditionals="0" statements="68" coveredstatements="68" elements="73" coveredelements="73"/>
      </class>
      <line num="21" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="21"/>
      <line num="22" type="stmt" count="21"/>
      <line num="29" type="method" name="process" visibility="public" complexity="1" crap="1" count="21"/>
      <line num="30" type="stmt" count="21"/>
      <line num="31" type="stmt" count="21"/>
      <line num="33" type="stmt" count="21"/>
      <line num="36" type="method" name="getEveryoneExperimentsEnrollments" visibility="private" complexity="7" crap="7" count="21"/>
      <line num="40" type="stmt" count="21"/>
      <line num="42" type="stmt" count="21"/>
      <line num="43" type="stmt" count="11"/>
      <line num="46" type="stmt" count="10"/>
      <line num="47" type="stmt" count="10"/>
      <line num="49" type="stmt" count="10"/>
      <line num="50" type="stmt" count="10"/>
      <line num="52" type="stmt" count="10"/>
      <line num="53" type="stmt" count="4"/>
      <line num="54" type="stmt" count="4"/>
      <line num="55" type="stmt" count="4"/>
      <line num="57" type="stmt" count="4"/>
      <line num="62" type="stmt" count="8"/>
      <line num="63" type="stmt" 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="67" type="stmt" count="1"/>
      <line num="68" type="stmt" count="1"/>
      <line num="69" type="stmt" count="1"/>
      <line num="71" type="stmt" count="1"/>
      <line num="74" type="stmt" count="7"/>
      <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="81" type="stmt" count="1"/>
      <line num="82" type="stmt" count="1"/>
      <line num="84" type="stmt" count="1"/>
      <line num="87" type="stmt" count="7"/>
      <line num="90" type="stmt" count="4"/>
      <line num="91" type="stmt" count="4"/>
      <line num="92" type="stmt" count="4"/>
      <line num="93" type="stmt" count="4"/>
      <line num="94" type="stmt" count="4"/>
      <line num="95" type="stmt" count="4"/>
      <line num="99" type="method" name="getOverriddenEnrollments" visibility="private" complexity="2" crap="2" count="21"/>
      <line num="100" type="stmt" count="21"/>
      <line num="101" type="stmt" count="21"/>
      <line num="103" type="stmt" count="21"/>
      <line num="105" type="stmt" count="21"/>
      <line num="106" type="stmt" count="21"/>
      <line num="107" type="stmt" count="21"/>
      <line num="108" type="stmt" count="21"/>
      <line num="110" type="stmt" count="21"/>
      <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="132" type="method" name="processRawEnrollmentOverrides" visibility="private" complexity="4" crap="4" count="21"/>
      <line num="133" type="stmt" count="21"/>
      <line num="134" type="stmt" count="20"/>
      <line num="138" type="stmt" count="7"/>
      <line num="140" type="stmt" count="7"/>
      <line num="142" type="stmt" count="7"/>
      <line num="143" type="stmt" count="7"/>
      <line num="145" type="stmt" count="7"/>
      <line num="146" type="stmt" count="1"/>
      <line num="147" type="stmt" count="1"/>
      <line num="148" type="stmt" count="1"/>
      <line num="150" type="stmt" count="1"/>
      <line num="153" type="stmt" count="6"/>
      <line num="156" type="stmt" count="6"/>
      <metrics loc="159" ncloc="134" classes="1" methods="5" coveredmethods="5" conditionals="0" coveredconditionals="0" statements="68" coveredstatements="68" elements="73" coveredelements="73"/>
    </file>
    <file name="/workspace/src/extensions/TestKitchen/includes/Coordination/UserSplitterInstrumentation.php">
      <class name="MediaWiki\Extension\TestKitchen\Coordination\UserSplitterInstrumentation" namespace="global">
        <metrics complexity="7" methods="5" coveredmethods="5" conditionals="0" coveredconditionals="0" statements="15" coveredstatements="15" elements="20" coveredelements="20"/>
      </class>
      <line num="39" type="method" name="getUserHash" visibility="public" complexity="1" crap="1" count="12"/>
      <line num="40" type="stmt" count="12"/>
      <line num="41" type="stmt" count="12"/>
      <line num="53" type="method" name="getSubjectId" visibility="public" complexity="1" crap="1" count="12"/>
      <line num="54" type="stmt" count="12"/>
      <line num="67" type="method" name="isSampled" visibility="public" complexity="2" crap="2" count="23"/>
      <line num="68" type="stmt" count="23"/>
      <line num="69" type="stmt" count="23"/>
      <line num="70" type="stmt" count="23"/>
      <line num="71" type="stmt" count="23"/>
      <line num="72" type="stmt" count="23"/>
      <line num="75" type="stmt" count="19"/>
      <line num="76" type="stmt" count="19"/>
      <line num="88" type="method" name="getBucket" visibility="public" complexity="2" crap="2" count="19"/>
      <line num="89" type="stmt" count="19"/>
      <line num="90" type="stmt" count="8"/>
      <line num="94" type="stmt" count="11"/>
      <line num="96" type="stmt" count="11"/>
      <line num="104" type="method" name="scaledHash" visibility="private" complexity="1" crap="1" count="19"/>
      <line num="105" type="stmt" count="19"/>
      <metrics loc="109" ncloc="44" classes="1" methods="5" coveredmethods="5" conditionals="0" coveredconditionals="0" statements="15" coveredstatements="15" elements="20" coveredelements="20"/>
    </file>
    <file name="/workspace/src/extensions/TestKitchen/includes/Hooks.php">
      <class name="MediaWiki\Extension\TestKitchen\Hooks" namespace="global">
        <metrics complexity="18" methods="7" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="50" coveredstatements="21" elements="57" coveredelements="23"/>
      </class>
      <line num="31" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="8"/>
      <line num="35" type="stmt" count="8"/>
      <line num="36" type="stmt" count="8"/>
      <line num="37" type="stmt" count="8"/>
      <line num="38" type="stmt" count="8"/>
      <line num="39" type="stmt" count="8"/>
      <line num="40" type="stmt" count="8"/>
      <line num="41" type="stmt" count="8"/>
      <line num="42" type="stmt" count="8"/>
      <line num="43" type="stmt" count="8"/>
      <line num="44" type="stmt" count="8"/>
      <line num="47" type="method" name="onAuthPreserveQueryParams" visibility="public" complexity="5" crap="30" 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="52" type="stmt" count="0"/>
      <line num="54" type="stmt" 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="63" type="stmt" count="0"/>
      <line num="64" type="stmt" count="0"/>
      <line num="71" type="method" name="onBeforeInitialize" visibility="public" complexity="2" crap="2.15" count="8"/>
      <line num="72" type="stmt" count="8"/>
      <line num="73" type="stmt" count="0"/>
      <line num="76" type="stmt" count="8"/>
      <line num="82" type="method" name="onBeforePageDisplay" visibility="public" complexity="4" crap="4.18" count="8"/>
      <line num="83" type="stmt" count="8"/>
      <line num="84" type="stmt" count="0"/>
      <line num="87" type="stmt" count="8"/>
      <line num="88" type="stmt" count="8"/>
      <line num="96" type="stmt" count="8"/>
      <line num="97" type="stmt" count="8"/>
      <line num="101" type="stmt" count="8"/>
      <line num="107" type="stmt" count="8"/>
      <line num="108" type="stmt" count="0"/>
      <line num="115" type="method" name="onApiBeforeMain" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="116" type="stmt" count="0"/>
      <line num="117" type="stmt" count="0"/>
      <line num="120" type="stmt" count="0"/>
      <line num="126" type="method" name="onAPIAfterExecute" visibility="public" complexity="3" crap="12" count="0"/>
      <line num="127" type="stmt" count="0"/>
      <line num="128" type="stmt" count="0"/>
      <line num="131" type="stmt" count="0"/>
      <line num="132" type="stmt" count="0"/>
      <line num="134" type="stmt" count="0"/>
      <line num="136" type="stmt" count="0"/>
      <line num="137" type="stmt" count="0"/>
      <line num="138" type="stmt" count="0"/>
      <line num="139" type="stmt" count="0"/>
      <line num="150" type="method" name="doEnrollUser" visibility="private" complexity="1" crap="1" count="8"/>
      <line num="151" type="stmt" count="8"/>
      <line num="152" type="stmt" count="8"/>
      <metrics loc="155" ncloc="124" classes="1" methods="7" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="50" coveredstatements="21" elements="57" coveredelements="23"/>
    </file>
    <file name="/workspace/src/extensions/TestKitchen/includes/ResourceLoader/Hooks.php">
      <class name="MediaWiki\Extension\TestKitchen\ResourceLoader\Hooks" namespace="global">
        <metrics complexity="5" methods="3" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="38" coveredstatements="38" elements="41" coveredelements="41"/>
      </class>
      <line num="17" type="method" name="getConfigForTestKitchenModule" visibility="public" complexity="1" crap="1" count="3"/>
      <line num="18" type="stmt" count="3"/>
      <line num="19" type="stmt" count="3"/>
      <line num="20" type="stmt" count="3"/>
      <line num="21" type="stmt" count="3"/>
      <line num="22" type="stmt" count="3"/>
      <line num="23" type="stmt" count="3"/>
      <line num="24" type="stmt" count="3"/>
      <line num="25" type="stmt" count="3"/>
      <line num="27" type="stmt" count="3"/>
      <line num="28" type="stmt" count="3"/>
      <line num="29" type="stmt" count="3"/>
      <line num="30" type="stmt" count="3"/>
      <line num="41" type="method" name="getExperimentConfigs" visibility="private" complexity="2" crap="2" count="3"/>
      <line num="42" type="stmt" count="3"/>
      <line num="43" type="stmt" count="3"/>
      <line num="45" type="stmt" count="3"/>
      <line num="46" 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"/>
      <line num="52" type="stmt" count="1"/>
      <line num="53" type="stmt" count="1"/>
      <line num="54" type="stmt" count="1"/>
      <line num="55" type="stmt" count="1"/>
      <line num="56" type="stmt" count="1"/>
      <line num="57" type="stmt" count="1"/>
      <line num="59" type="stmt" count="3"/>
      <line num="71" type="method" name="getInstrumentConfigs" visibility="private" complexity="2" crap="2" count="3"/>
      <line num="72" type="stmt" count="3"/>
      <line num="73" type="stmt" count="3"/>
      <line num="75" type="stmt" count="3"/>
      <line num="76" 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="81" type="stmt" count="1"/>
      <line num="83" type="stmt" count="1"/>
      <line num="84" type="stmt" count="1"/>
      <line num="87" type="stmt" count="3"/>
      <metrics loc="90" ncloc="66" classes="1" methods="3" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="38" coveredstatements="38" elements="41" coveredelements="41"/>
    </file>
    <file name="/workspace/src/extensions/TestKitchen/includes/Sdk/ContextualAttributesFactory.php">
      <class name="MediaWiki\Extension\TestKitchen\Sdk\ContextualAttributesFactory" namespace="global">
        <metrics complexity="18" methods="7" coveredmethods="5" conditionals="0" coveredconditionals="0" statements="83" coveredstatements="81" elements="90" coveredelements="86"/>
      </class>
      <line num="29" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="11"/>
      <line num="41" type="stmt" count="11"/>
      <line num="46" type="method" name="newContextAttributes" visibility="public" complexity="1" crap="1" count="11"/>
      <line num="47" type="stmt" count="11"/>
      <line num="48" type="stmt" count="11"/>
      <line num="49" type="stmt" count="11"/>
      <line num="50" type="stmt" count="11"/>
      <line num="51" type="stmt" count="11"/>
      <line num="53" type="stmt" count="11"/>
      <line num="59" type="method" name="shouldDisplayMobileView" visibility="protected" complexity="2" crap="2.15" count="3"/>
      <line num="60" type="stmt" count="3"/>
      <line num="62" type="stmt" count="0"/>
      <line num="65" type="stmt" count="3"/>
      <line num="68" type="method" name="getAgentContextAttributes" visibility="private" complexity="2" crap="2" count="11"/>
      <line num="69" type="stmt" count="11"/>
      <line num="70" type="stmt" count="11"/>
      <line num="71" type="stmt" count="11"/>
      <line num="72" type="stmt" count="11"/>
      <line num="73" type="stmt" count="11"/>
      <line num="74" type="stmt" count="11"/>
      <line num="75" type="stmt" count="11"/>
      <line num="78" type="method" name="getPageContextAttributes" visibility="private" complexity="5" crap="5" count="11"/>
      <line num="79" type="stmt" count="11"/>
      <line num="80" type="stmt" count="11"/>
      <line num="81" type="stmt" count="11"/>
      <line num="83" type="stmt" count="11"/>
      <line num="87" type="stmt" count="11"/>
      <line num="89" type="stmt" count="11"/>
      <line num="91" type="stmt" count="11"/>
      <line num="96" type="stmt" count="11"/>
      <line num="97" type="stmt" count="0"/>
      <line num="100" type="stmt" count="11"/>
      <line num="102" type="stmt" count="11"/>
      <line num="103" type="stmt" count="11"/>
      <line num="104" type="stmt" count="11"/>
      <line num="105" type="stmt" count="11"/>
      <line num="106" type="stmt" count="11"/>
      <line num="107" type="stmt" count="11"/>
      <line num="108" type="stmt" count="11"/>
      <line num="109" type="stmt" count="11"/>
      <line num="110" type="stmt" count="11"/>
      <line num="111" type="stmt" count="11"/>
      <line num="116" type="stmt" count="11"/>
      <line num="118" type="stmt" count="11"/>
      <line num="119" type="stmt" count="10"/>
      <line num="125" type="stmt" count="11"/>
      <line num="126" type="stmt" count="10"/>
      <line num="129" type="stmt" count="11"/>
      <line num="132" type="method" name="getMediaWikiContextAttributes" visibility="private" complexity="1" crap="1" count="11"/>
      <line num="133" type="stmt" count="11"/>
      <line num="135" type="stmt" count="11"/>
      <line num="136" type="stmt" count="11"/>
      <line num="140" type="stmt" count="11"/>
      <line num="142" type="stmt" count="11"/>
      <line num="143" type="stmt" count="11"/>
      <line num="144" type="stmt" count="11"/>
      <line num="145" type="stmt" count="11"/>
      <line num="146" type="stmt" count="11"/>
      <line num="147" type="stmt" count="11"/>
      <line num="148" type="stmt" count="11"/>
      <line num="149" type="stmt" count="11"/>
      <line num="152" type="method" name="getPerformerContextAttributes" visibility="private" complexity="6" crap="6" count="11"/>
      <line num="153" type="stmt" count="11"/>
      <line num="154" type="stmt" count="11"/>
      <line num="155" type="stmt" count="11"/>
      <line num="157" type="stmt" count="11"/>
      <line num="158" type="stmt" count="11"/>
      <line num="160" type="stmt" count="11"/>
      <line num="161" type="stmt" count="11"/>
      <line num="162" type="stmt" count="11"/>
      <line num="164" type="stmt" count="11"/>
      <line num="165" type="stmt" count="11"/>
      <line num="166" type="stmt" count="11"/>
      <line num="167" type="stmt" count="11"/>
      <line num="168" type="stmt" count="11"/>
      <line num="169" type="stmt" count="11"/>
      <line num="170" type="stmt" count="11"/>
      <line num="171" type="stmt" count="11"/>
      <line num="172" type="stmt" count="11"/>
      <line num="173" type="stmt" count="11"/>
      <line num="174" type="stmt" count="11"/>
      <line num="175" type="stmt" count="11"/>
      <line num="179" type="stmt" count="11"/>
      <line num="180" type="stmt" count="11"/>
      <line num="181" type="stmt" count="3"/>
      <line num="182" type="stmt" count="3"/>
      <line num="188" type="stmt" count="11"/>
      <line num="190" type="stmt" count="11"/>
      <line num="191" type="stmt" count="11"/>
      <line num="194" type="stmt" count="11"/>
      <metrics loc="197" ncloc="162" classes="1" methods="7" coveredmethods="5" conditionals="0" coveredconditionals="0" statements="83" coveredstatements="81" elements="90" coveredelements="86"/>
    </file>
    <file name="/workspace/src/extensions/TestKitchen/includes/Sdk/DisabledEventSender.php">
      <class name="MediaWiki\Extension\TestKitchen\Sdk\DisabledEventSender" namespace="global">
        <metrics complexity="2" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="2" coveredstatements="0" elements="4" coveredelements="0"/>
      </class>
      <line num="12" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="13" type="stmt" count="0"/>
      <line num="15" type="method" name="sendEvent" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="16" type="stmt" count="0"/>
      <metrics loc="18" ncloc="12" classes="1" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="2" coveredstatements="0" elements="4" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/TestKitchen/includes/Sdk/EventFactory.php">
      <class name="MediaWiki\Extension\TestKitchen\Sdk\EventFactory" namespace="global">
        <metrics complexity="7" methods="4" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="28" coveredstatements="28" elements="32" coveredelements="32"/>
      </class>
      <line num="37" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="4"/>
      <line num="42" type="stmt" count="4"/>
      <line num="44" type="stmt" count="4"/>
      <line num="65" type="method" name="newEvent" visibility="public" complexity="1" crap="1" count="3"/>
      <line num="72" type="stmt" count="3"/>
      <line num="73" type="stmt" count="3"/>
      <line num="74" type="stmt" count="3"/>
      <line num="75" type="stmt" count="3"/>
      <line num="76" type="stmt" count="3"/>
      <line num="77" type="stmt" count="3"/>
      <line num="78" type="stmt" count="3"/>
      <line num="79" type="stmt" count="3"/>
      <line num="80" type="stmt" count="3"/>
      <line num="81" type="stmt" count="3"/>
      <line num="83" type="stmt" count="3"/>
      <line num="86" type="method" name="addContextualAttributes" visibility="private" complexity="4" crap="4" count="3"/>
      <line num="87" type="stmt" count="3"/>
      <line num="88" type="stmt" count="3"/>
      <line num="89" type="stmt" count="3"/>
      <line num="90" type="stmt" count="3"/>
      <line num="92" type="stmt" count="3"/>
      <line num="93" type="stmt" count="3"/>
      <line num="94" type="stmt" count="3"/>
      <line num="97" type="stmt" count="3"/>
      <line num="98" type="stmt" count="3"/>
      <line num="102" type="stmt" count="3"/>
      <line num="103" type="stmt" count="1"/>
      <line num="106" type="stmt" count="2"/>
      <line num="108" type="stmt" count="2"/>
      <line num="111" type="stmt" count="3"/>
      <line num="117" type="method" name="getTimestamp" visibility="private" complexity="1" crap="1" count="3"/>
      <line num="118" type="stmt" count="3"/>
      <metrics loc="121" ncloc="85" classes="1" methods="4" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="28" coveredstatements="28" elements="32" coveredelements="32"/>
    </file>
    <file name="/workspace/src/extensions/TestKitchen/includes/Sdk/EventSender.php">
      <class name="MediaWiki\Extension\TestKitchen\Sdk\EventSender" namespace="global">
        <metrics complexity="4" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="14" coveredstatements="14" elements="16" coveredelements="16"/>
      </class>
      <line num="16" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="19" type="stmt" count="2"/>
      <line num="20" type="stmt" count="2"/>
      <line num="21" type="stmt" count="2"/>
      <line num="32" type="method" name="sendEvent" visibility="public" complexity="3" crap="3" count="2"/>
      <line num="33" type="stmt" count="2"/>
      <line num="34" type="stmt" count="1"/>
      <line num="36" type="stmt" count="1"/>
      <line num="39" 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="48" type="stmt" count="1"/>
      <metrics loc="52" ncloc="41" classes="1" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="14" coveredstatements="14" elements="16" coveredelements="16"/>
    </file>
    <file name="/workspace/src/extensions/TestKitchen/includes/Sdk/Experiment.php">
      <class name="MediaWiki\Extension\TestKitchen\Sdk\Experiment" namespace="global">
        <metrics complexity="14" methods="9" coveredmethods="9" conditionals="0" coveredconditionals="0" statements="59" coveredstatements="59" elements="68" coveredelements="68"/>
      </class>
      <line num="22" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="15"/>
      <line num="29" type="stmt" count="15"/>
      <line num="34" type="method" name="getAssignedGroup" visibility="public" complexity="1" crap="1" count="12"/>
      <line num="35" type="stmt" count="12"/>
      <line num="41" type="method" name="isAssignedGroup" visibility="public" complexity="1" crap="1" count="3"/>
      <line num="42" type="stmt" count="3"/>
      <line num="48" type="method" name="send" visibility="public" complexity="3" crap="3" count="7"/>
      <line num="52" type="stmt" count="7"/>
      <line num="53" type="stmt" count="6"/>
      <line num="55" type="stmt" count="6"/>
      <line num="56" type="stmt" count="6"/>
      <line num="57" type="stmt" count="6"/>
      <line num="59" type="stmt" count="6"/>
      <line num="60" type="stmt" count="3"/>
      <line num="61" type="stmt" count="3"/>
      <line num="62" type="stmt" count="3"/>
      <line num="63" type="stmt" count="3"/>
      <line num="67" type="stmt" count="6"/>
      <line num="68" type="stmt" count="6"/>
      <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="74" type="stmt" count="6"/>
      <line num="75" type="stmt" count="6"/>
      <line num="76" type="stmt" count="6"/>
      <line num="78" type="stmt" count="6"/>
      <line num="79" type="stmt" count="6"/>
      <line num="80" type="stmt" 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="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="90" type="stmt" count="6"/>
      <line num="91" type="stmt" count="6"/>
      <line num="93" type="stmt" count="6"/>
      <line num="96" type="stmt" count="6"/>
      <line num="105" type="method" name="getExperimentConfig" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="106" type="stmt" count="1"/>
      <line num="114" type="method" name="isEnrolled" visibility="private" complexity="1" crap="1" count="8"/>
      <line num="115" type="stmt" count="8"/>
      <line num="123" type="method" name="incrementExperimentEventsSentTotal" visibility="private" complexity="1" crap="1" count="6"/>
      <line num="124" type="stmt" count="6"/>
      <line num="125" type="stmt" count="6"/>
      <line num="126" type="stmt" count="6"/>
      <line num="127" type="stmt" count="6"/>
      <line num="133" type="method" name="sendExposure" visibility="public" complexity="3" crap="3" count="2"/>
      <line num="134" type="stmt" count="2"/>
      <line num="135" type="stmt" count="1"/>
      <line num="138" type="stmt" count="1"/>
      <line num="140" type="stmt" count="1"/>
      <line num="141" type="stmt" count="1"/>
      <line num="142" type="stmt" count="1"/>
      <line num="143" type="stmt" count="1"/>
      <line num="147" type="stmt" count="1"/>
      <line num="148" type="stmt" count="1"/>
      <line num="149" type="stmt" count="1"/>
      <line num="150" type="stmt" count="1"/>
      <line num="151" type="stmt" count="1"/>
      <line num="152" type="stmt" count="1"/>
      <line num="156" type="method" name="getStartDate" visibility="public" complexity="2" crap="2" count="3"/>
      <line num="157" type="stmt" count="3"/>
      <line num="158" type="stmt" count="3"/>
      <metrics loc="161" ncloc="125" classes="1" methods="9" coveredmethods="9" conditionals="0" coveredconditionals="0" statements="59" coveredstatements="59" elements="68" coveredelements="68"/>
    </file>
    <file name="/workspace/src/extensions/TestKitchen/includes/Sdk/ExperimentCoordinatorInterface.php">
      <metrics loc="58" ncloc="15" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/TestKitchen/includes/Sdk/ExperimentInterface.php">
      <metrics loc="64" ncloc="21" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/TestKitchen/includes/Sdk/ExperimentManager.php">
      <class name="MediaWiki\Extension\TestKitchen\Sdk\ExperimentManager" namespace="global">
        <metrics complexity="18" methods="9" coveredmethods="9" conditionals="0" coveredconditionals="0" statements="109" coveredstatements="109" elements="118" coveredelements="118"/>
      </class>
      <line num="34" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="20"/>
      <line num="45" type="stmt" count="20"/>
      <line num="46" type="stmt" count="20"/>
      <line num="47" type="stmt" count="20"/>
      <line num="50" type="method" name="setRequest" visibility="public" complexity="1" crap="1" count="16"/>
      <line num="51" type="stmt" count="16"/>
      <line num="54" type="stmt" count="16"/>
      <line num="57" type="method" name="updateUser" visibility="public" complexity="3" crap="3" count="9"/>
      <line num="58" type="stmt" count="9"/>
      <line num="59" type="stmt" count="5"/>
      <line num="62" type="stmt" count="4"/>
      <line num="66" type="stmt" count="3"/>
      <line num="68" type="stmt" count="1"/>
      <line num="71" type="stmt" count="4"/>
      <line num="74" type="method" name="updateIdentifier" visibility="public" complexity="1" crap="1" count="6"/>
      <line num="75" type="stmt" count="6"/>
      <line num="76" type="stmt" count="6"/>
      <line num="77" type="stmt" count="6"/>
      <line num="78" type="stmt" count="6"/>
      <line num="79" type="stmt" count="6"/>
      <line num="81" type="stmt" count="5"/>
      <line num="82" type="stmt" count="5"/>
      <line num="83" type="stmt" count="5"/>
      <line num="84" type="stmt" count="5"/>
      <line num="85" type="stmt" count="5"/>
      <line num="86" type="stmt" count="5"/>
      <line num="88" type="stmt" count="5"/>
      <line num="94" type="method" name="getExperiment" visibility="public" complexity="6" crap="6" count="8"/>
      <line num="95" type="stmt" count="8"/>
      <line num="97" type="stmt" count="8"/>
      <line num="98" type="stmt" count="8"/>
      <line num="100" type="stmt" count="8"/>
      <line num="101" type="stmt" count="8"/>
      <line num="103" type="stmt" count="8"/>
      <line num="105" type="stmt" count="8"/>
      <line num="106" type="stmt" count="2"/>
      <line num="115" type="stmt" count="6"/>
      <line num="116" type="stmt" count="2"/>
      <line num="117" type="stmt" count="2"/>
      <line num="118" type="stmt" count="2"/>
      <line num="119" type="stmt" count="2"/>
      <line num="120" type="stmt" count="2"/>
      <line num="122" type="stmt" count="2"/>
      <line num="125" type="stmt" count="4"/>
      <line num="126" type="stmt" count="4"/>
      <line num="127" type="stmt" count="4"/>
      <line num="128" type="stmt" count="4"/>
      <line num="130" type="stmt" count="4"/>
      <line num="131" type="stmt" count="2"/>
      <line num="134" type="stmt" count="2"/>
      <line num="137" type="stmt" count="2"/>
      <line num="140" type="stmt" count="2"/>
      <line num="142" type="stmt" count="2"/>
      <line num="145" type="method" name="getEnrollments" visibility="public" complexity="1" crap="1" count="11"/>
      <line num="146" type="stmt" count="11"/>
      <line num="149" type="method" name="newUnenrolledExperiment" visibility="private" complexity="2" crap="2" count="4"/>
      <line num="150" type="stmt" count="4"/>
      <line num="152" type="stmt" count="4"/>
      <line num="153" type="stmt" count="2"/>
      <line num="158" type="stmt" count="4"/>
      <line num="159" type="stmt" count="4"/>
      <line num="160" type="stmt" count="4"/>
      <line num="161" type="stmt" count="4"/>
      <line num="162" type="stmt" count="4"/>
      <line num="163" type="stmt" count="4"/>
      <line num="164" type="stmt" count="4"/>
      <line num="167" type="method" name="newOverriddenExperiment" visibility="private" complexity="2" crap="2" count="2"/>
      <line num="168" type="stmt" count="2"/>
      <line num="169" type="stmt" count="2"/>
      <line num="170" type="stmt" count="2"/>
      <line num="171" type="stmt" count="2"/>
      <line num="172" type="stmt" count="2"/>
      <line num="173" type="stmt" count="2"/>
      <line num="174" type="stmt" count="2"/>
      <line num="175" type="stmt" count="2"/>
      <line num="176" type="stmt" count="2"/>
      <line num="177" type="stmt" count="2"/>
      <line num="178" type="stmt" count="2"/>
      <line num="179" type="stmt" count="2"/>
      <line num="181" type="stmt" count="2"/>
      <line num="182" type="stmt" count="2"/>
      <line num="183" type="stmt" count="2"/>
      <line num="184" type="stmt" count="2"/>
      <line num="185" type="stmt" count="2"/>
      <line num="186" type="stmt" count="2"/>
      <line num="187" type="stmt" count="2"/>
      <line num="188" type="stmt" count="2"/>
      <line num="189" type="stmt" count="2"/>
      <line num="190" type="stmt" count="2"/>
      <line num="193" type="stmt" count="2"/>
      <line num="194" type="stmt" count="2"/>
      <line num="195" type="stmt" count="2"/>
      <line num="196" type="stmt" count="2"/>
      <line num="197" type="stmt" count="2"/>
      <line num="198" type="stmt" count="2"/>
      <line num="199" type="stmt" count="2"/>
      <line num="200" type="stmt" count="2"/>
      <line num="203" type="method" name="newExperiment" visibility="private" complexity="1" crap="1" count="2"/>
      <line num="204" type="stmt" count="2"/>
      <line num="205" type="stmt" count="2"/>
      <line num="206" type="stmt" count="2"/>
      <line num="207" type="stmt" count="2"/>
      <line num="208" type="stmt" count="2"/>
      <line num="209" type="stmt" count="2"/>
      <line num="210" type="stmt" count="2"/>
      <line num="211" type="stmt" count="2"/>
      <line num="212" type="stmt" count="2"/>
      <line num="213" type="stmt" count="2"/>
      <line num="214" type="stmt" count="2"/>
      <line num="215" type="stmt" count="2"/>
      <line num="216" type="stmt" count="2"/>
      <line num="218" type="stmt" count="2"/>
      <line num="219" type="stmt" count="2"/>
      <line num="220" type="stmt" count="2"/>
      <line num="221" type="stmt" count="2"/>
      <line num="222" type="stmt" count="2"/>
      <line num="223" type="stmt" count="2"/>
      <line num="224" type="stmt" count="2"/>
      <metrics loc="227" ncloc="210" classes="1" methods="9" coveredmethods="9" conditionals="0" coveredconditionals="0" statements="109" coveredstatements="109" elements="118" coveredelements="118"/>
    </file>
    <file name="/workspace/src/extensions/TestKitchen/includes/Sdk/ExperimentManagerInterface.php">
      <metrics loc="31" ncloc="9" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/TestKitchen/includes/Sdk/ExposureLogTracker.php">
      <class name="MediaWiki\Extension\TestKitchen\Sdk\ExposureLogTracker" namespace="global">
        <metrics complexity="3" methods="3" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="4" coveredstatements="2" elements="7" coveredelements="4"/>
      </class>
      <line num="32" type="method" name="addLog" visibility="public" complexity="1" crap="1" count="5"/>
      <line num="34" type="stmt" count="5"/>
      <line num="45" type="method" name="checkShouldSend" visibility="public" complexity="1" crap="1" count="6"/>
      <line num="47" type="stmt" count="6"/>
      <line num="63" type="method" name="makeKey" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="68" type="stmt" count="0"/>
      <line num="70" type="stmt" count="0"/>
      <metrics loc="73" ncloc="26" classes="1" methods="3" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="4" coveredstatements="2" elements="7" coveredelements="4"/>
    </file>
    <file name="/workspace/src/extensions/TestKitchen/includes/Sdk/Instrument.php">
      <class name="MediaWiki\Extension\TestKitchen\Sdk\Instrument" namespace="global">
        <metrics complexity="4" methods="4" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="23" coveredstatements="23" elements="27" coveredelements="27"/>
      </class>
      <line num="12" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="4"/>
      <line num="17" type="stmt" count="4"/>
      <line num="23" type="method" name="send" visibility="public" complexity="1" crap="1" count="3"/>
      <line num="24" type="stmt" count="3"/>
      <line num="25" type="stmt" count="3"/>
      <line num="26" type="stmt" count="3"/>
      <line num="27" type="stmt" count="3"/>
      <line num="29" type="stmt" count="3"/>
      <line num="30" type="stmt" count="3"/>
      <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="3"/>
      <line num="37" type="stmt" count="3"/>
      <line num="38" type="stmt" count="3"/>
      <line num="39" type="stmt" count="3"/>
      <line num="40" type="stmt" count="3"/>
      <line num="41" type="stmt" count="3"/>
      <line num="42" type="stmt" count="3"/>
      <line num="43" type="stmt" count="3"/>
      <line num="45" type="stmt" count="3"/>
      <line num="51" type="method" name="setSchema" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="52" type="stmt" count="1"/>
      <line num="53" type="stmt" count="1"/>
      <line num="61" type="method" name="getConfig" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="62" type="stmt" count="1"/>
      <metrics loc="65" ncloc="51" classes="1" methods="4" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="23" coveredstatements="23" elements="27" coveredelements="27"/>
    </file>
    <file name="/workspace/src/extensions/TestKitchen/includes/Sdk/InstrumentInterface.php">
      <metrics loc="28" ncloc="11" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/TestKitchen/includes/Sdk/InstrumentManager.php">
      <class name="MediaWiki\Extension\TestKitchen\Sdk\InstrumentManager" namespace="global">
        <metrics complexity="6" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="20" coveredstatements="20" elements="22" coveredelements="22"/>
      </class>
      <line num="13" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="3"/>
      <line num="18" type="stmt" count="3"/>
      <line num="23" type="method" name="getInstrument" visibility="public" complexity="5" crap="5" count="3"/>
      <line num="24" type="stmt" count="3"/>
      <line num="25" type="stmt" count="3"/>
      <line num="28" type="stmt" count="3"/>
      <line num="31" type="stmt" count="3"/>
      <line num="32" type="stmt" count="1"/>
      <line num="33" type="stmt" count="1"/>
      <line num="34" type="stmt" count="1"/>
      <line num="39" type="stmt" count="3"/>
      <line num="40" type="stmt" count="2"/>
      <line num="41" type="stmt" count="2"/>
      <line num="42" type="stmt" count="2"/>
      <line num="43" type="stmt" count="2"/>
      <line num="44" type="stmt" count="2"/>
      <line num="50" type="stmt" count="1"/>
      <line num="53" type="stmt" count="1"/>
      <line num="54" type="stmt" count="1"/>
      <line num="55" type="stmt" count="1"/>
      <line num="56" type="stmt" count="1"/>
      <line num="57" type="stmt" count="1"/>
      <metrics loc="60" ncloc="51" classes="1" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="20" coveredstatements="20" elements="22" coveredelements="22"/>
    </file>
    <file name="/workspace/src/extensions/TestKitchen/includes/Sdk/InstrumentManagerInterface.php">
      <metrics loc="14" ncloc="8" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/TestKitchen/includes/Sdk/OverriddenExperiment.php">
      <class name="MediaWiki\Extension\TestKitchen\Sdk\OverriddenExperiment" namespace="global">
        <metrics complexity="2" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="17" coveredstatements="0" elements="19" coveredelements="0"/>
      </class>
      <line num="13" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="21" type="stmt" count="0"/>
      <line num="22" type="stmt" count="0"/>
      <line num="23" type="stmt" count="0"/>
      <line num="24" type="stmt" count="0"/>
      <line num="25" type="stmt" count="0"/>
      <line num="26" type="stmt" count="0"/>
      <line num="27" type="stmt" count="0"/>
      <line num="33" type="method" name="send" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="36" 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="44" type="stmt" count="0"/>
      <line num="45" type="stmt" count="0"/>
      <line num="46" type="stmt" count="0"/>
      <metrics loc="49" ncloc="43" classes="1" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="17" coveredstatements="0" elements="19" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/TestKitchen/includes/Sdk/UnenrolledExperiment.php">
      <class name="MediaWiki\Extension\TestKitchen\Sdk\UnenrolledExperiment" namespace="global">
        <metrics complexity="3" methods="3" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="9" coveredstatements="0" elements="12" coveredelements="0"/>
      </class>
      <line num="13" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="20" type="stmt" count="0"/>
      <line num="21" type="stmt" count="0"/>
      <line num="22" type="stmt" count="0"/>
      <line num="23" type="stmt" count="0"/>
      <line num="24" type="stmt" count="0"/>
      <line num="25" type="stmt" count="0"/>
      <line num="26" type="stmt" count="0"/>
      <line num="32" type="method" name="send" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="35" type="stmt" count="0"/>
      <line num="40" type="method" name="sendExposure" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="41" type="stmt" count="0"/>
      <metrics loc="43" ncloc="34" classes="1" methods="3" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="9" coveredstatements="0" elements="12" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/TestKitchen/includes/Sdk/UnsampledInstrument.php">
      <class name="MediaWiki\Extension\TestKitchen\Sdk\UnsampledInstrument" namespace="global">
        <metrics complexity="3" methods="3" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="7" coveredstatements="0" elements="10" coveredelements="0"/>
      </class>
      <line num="10" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="15" type="stmt" count="0"/>
      <line num="16" type="stmt" count="0"/>
      <line num="17" type="stmt" count="0"/>
      <line num="18" type="stmt" count="0"/>
      <line num="19" type="stmt" count="0"/>
      <line num="25" type="method" name="send" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="26" type="stmt" count="0"/>
      <line num="31" type="method" name="setSchema" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="32" type="stmt" count="0"/>
      <metrics loc="35" ncloc="26" classes="1" methods="3" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="7" coveredstatements="0" elements="10" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/TestKitchen/includes/Sdk/UserEditCountService.php">
      <class name="MediaWiki\Extension\TestKitchen\Sdk\UserEditCountService" namespace="global">
        <metrics complexity="5" methods="1" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="9" coveredstatements="0" elements="10" coveredelements="0"/>
      </class>
      <line num="31" type="method" name="getUserEditCountBucket" visibility="public" complexity="5" crap="30" count="0"/>
      <line num="32" type="stmt" count="0"/>
      <line num="33" type="stmt" count="0"/>
      <line num="35" type="stmt" count="0"/>
      <line num="36" type="stmt" count="0"/>
      <line num="38" type="stmt" count="0"/>
      <line num="39" type="stmt" count="0"/>
      <line num="41" type="stmt" count="0"/>
      <line num="42" type="stmt" count="0"/>
      <line num="44" type="stmt" count="0"/>
      <metrics loc="47" ncloc="23" classes="1" methods="1" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="9" coveredstatements="0" elements="10" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/TestKitchen/includes/Services.php">
      <class name="MediaWiki\Extension\TestKitchen\Services" namespace="global">
        <metrics complexity="1" methods="1" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="1" coveredstatements="0" elements="2" coveredelements="0"/>
      </class>
      <line num="8" type="method" name="getConfigsFetcher" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="9" type="stmt" count="0"/>
      <metrics loc="12" ncloc="12" classes="1" methods="1" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="1" coveredstatements="0" elements="2" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/TestKitchen/maintenance/UpdateConfigs.php">
      <class name="MediaWiki\Extension\TestKitchen\Maintenance\UpdateConfigs" namespace="global">
        <metrics complexity="3" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="17" coveredstatements="0" elements="19" coveredelements="0"/>
      </class>
      <line num="18" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="19" type="stmt" count="0"/>
      <line num="21" type="stmt" count="0"/>
      <line num="22" type="stmt" count="0"/>
      <line num="23" type="stmt" count="0"/>
      <line num="24" type="stmt" count="0"/>
      <line num="25" type="stmt" count="0"/>
      <line num="28" type="method" name="execute" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="30" type="stmt" count="0"/>
      <line num="32" type="stmt" count="0"/>
      <line num="33" type="stmt" count="0"/>
      <line num="36" type="stmt" count="0"/>
      <line num="40" type="stmt" count="0"/>
      <line num="42" type="stmt" count="0"/>
      <line num="43" type="stmt" count="0"/>
      <line num="44" type="stmt" count="0"/>
      <line num="46" type="stmt" count="0"/>
      <line num="47" type="stmt" count="0"/>
      <line num="48" type="stmt" count="0"/>
      <metrics loc="56" ncloc="50" classes="1" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="17" coveredstatements="0" elements="19" coveredelements="0"/>
    </file>
    <metrics files="30" loc="2686" ncloc="1959" classes="25" methods="103" coveredmethods="74" conditionals="0" coveredconditionals="0" statements="851" coveredstatements="723" elements="954" coveredelements="797"/>
  </project>
</coverage>
