324 lines
87 KiB
HTML
324 lines
87 KiB
HTML
<!DOCTYPE html>
|
||
<html>
|
||
<head>
|
||
<meta charset="utf-8" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||
<meta http-equiv="X-UA-Compatible" content="IE=EDGE,chrome=1" />
|
||
<link href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAn1BMVEUAAADCAAAAAAA3yDfUAAA3yDfUAAA8PDzr6+sAAAD4+Pg3yDeQkJDTAADt7e3V1dU3yDdCQkIAAADbMTHUAABBykHUAAA2yDY3yDfr6+vTAAB3diDR0dGYcHDUAAAjhiPSAAA3yDeuAADUAAA3yDf////OCALg9+BLzktBuzRelimzKgv87+/dNTVflSn1/PWz6rO126g5yDlYniy0KgwjJ0TyAAAAI3RSTlMABAj0WD6rJcsN7X1HzMqUJyYW+/X08+bltqSeaVRBOy0cE+citBEAAADBSURBVDjLlczXEoIwFIThJPYGiL0XiL3r+z+bBOJs9JDMuLffP8v+Gxfc6aIyDQVjQcnqnvRDEQwLJYtXpZT+YhDHKIjLbS+OUeT4TjkKi6OwOArq+yeKXD9uDqQQbcOjyCy0e6bTojZSftX+U6zUQ7OuittDu1k0WHqRFfdXQijgjKfF6ZwAikvmKD6OQjmKWUcDigkztm5FZN05nMON9ZcoinlBmTNnAUdBnRbUUbgdBZwWbkcBpwXcVsBtxfjb31j1QB5qeebOAAAAAElFTkSuQmCC" rel="icon" type="image/x-icon" />
|
||
<title>CounterDrone.Core.Algorithms.DefaultDefenseAdvisor - Coverage Report</title>
|
||
<link rel="stylesheet" type="text/css" href="report.css" />
|
||
</head><body><div class="container"><div class="containerleft">
|
||
<h1><a href="index.html" class="back"><</a> Summary</h1>
|
||
<div class="card-group">
|
||
<div class="card">
|
||
<div class="card-header">Information</div>
|
||
<div class="card-body">
|
||
<div class="table">
|
||
<table>
|
||
<tr>
|
||
<th>Class:</th>
|
||
<td class="limit-width " title="CounterDrone.Core.Algorithms.DefaultDefenseAdvisor">CounterDrone.Core.Algorithms.DefaultDefenseAdvisor</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Assembly:</th>
|
||
<td class="limit-width " title="CounterDrone.Core">CounterDrone.Core</td>
|
||
</tr>
|
||
<tr>
|
||
<th>File(s):</th>
|
||
<td class="overflow-wrap"><a href="#CUsersTellmeappsCounterDroneBackendsrcCounterDroneCoreAlgorithmsDefaultDefenseAdvisorcs" class="navigatetohash">C:\Users\Tellme\apps\CounterDroneBackend\src\CounterDrone.Core\Algorithms\DefaultDefenseAdvisor.cs</a></td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="card-group">
|
||
<div class="card">
|
||
<div class="card-header">Line coverage</div>
|
||
<div class="card-body">
|
||
<div class="large cardpercentagebar cardpercentagebar5">94%</div>
|
||
<div class="table">
|
||
<table>
|
||
<tr>
|
||
<th>Covered lines:</th>
|
||
<td class="limit-width right" title="132">132</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Uncovered lines:</th>
|
||
<td class="limit-width right" title="7">7</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Coverable lines:</th>
|
||
<td class="limit-width right" title="139">139</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Total lines:</th>
|
||
<td class="limit-width right" title="187">187</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Line coverage:</th>
|
||
<td class="limit-width right" title="132 of 139">94.9%</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="card">
|
||
<div class="card-header">Branch coverage</div>
|
||
<div class="card-body">
|
||
<div class="large cardpercentagebar cardpercentagebar17">83%</div>
|
||
<div class="table">
|
||
<table>
|
||
<tr>
|
||
<th>Covered branches:</th>
|
||
<td class="limit-width right" title="20">20</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Total branches:</th>
|
||
<td class="limit-width right" title="24">24</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Branch coverage:</th>
|
||
<td class="limit-width right" title="20 of 24">83.3%</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="card">
|
||
<div class="card-header">Method coverage</div>
|
||
<div class="card-body">
|
||
<div class="center">
|
||
<p>Feature is only available for sponsors</p>
|
||
<a class="pro-button" href="https://reportgenerator.io/pro" target="_blank">Upgrade to PRO version</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h1>Metrics</h1>
|
||
<div class="table-responsive">
|
||
<table class="overview table-fixed">
|
||
<colgroup>
|
||
<col class="column-min-200" />
|
||
<col class="column105" />
|
||
<col class="column105" />
|
||
<col class="column105" />
|
||
<col class="column105" />
|
||
</colgroup>
|
||
<thead><tr><th>Method</th><th>Branch coverage <a href="https://en.wikipedia.org/wiki/Code_coverage" target="_blank"><i class="icon-info-circled"></i></a></th><th>Crap Score <a href="https://googletesting.blogspot.de/2011/02/this-code-is-crap.html" target="_blank"><i class="icon-info-circled"></i></a></th><th>Cyclomatic complexity <a href="https://en.wikipedia.org/wiki/Cyclomatic_complexity" target="_blank"><i class="icon-info-circled"></i></a></th><th>Line coverage <a href="https://en.wikipedia.org/wiki/Code_coverage" target="_blank"><i class="icon-info-circled"></i></a></th></tr></thead>
|
||
<tbody>
|
||
<tr><td title=".ctor(System.Collections.Generic.List`1<CounterDrone.Core.Models.AmmunitionSpec>)"><a href="#file0_line12" class="navigatetohash">.ctor(...)</a></td><td>100%</td><td>2</td><td>2</td><td>100%</td></tr>
|
||
<tr><td title=".cctor()"><a href="#file0_line17" class="navigatetohash">.cctor()</a></td><td>100%</td><td>1</td><td>1</td><td>100%</td></tr>
|
||
<tr><td title="Recommend(CounterDrone.Core.Algorithms.ThreatProfile)"><a href="#file0_line25" class="navigatetohash">Recommend(...)</a></td><td>81.81%</td><td>22</td><td>22</td><td>94.53%</td></tr>
|
||
<tr><td title="ToV3(CounterDrone.Core.Models.Waypoint)"><a href="#file0_line185" class="navigatetohash">ToV3(...)</a></td><td>100%</td><td>1</td><td>1</td><td>100%</td></tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
<h1>File(s)</h1>
|
||
<h2 id="CUsersTellmeappsCounterDroneBackendsrcCounterDroneCoreAlgorithmsDefaultDefenseAdvisorcs">C:\Users\Tellme\apps\CounterDroneBackend\src\CounterDrone.Core\Algorithms\DefaultDefenseAdvisor.cs</h2>
|
||
<div class="table-responsive">
|
||
<table class="lineAnalysis">
|
||
<thead><tr><th></th><th>#</th><th>Line</th><th></th><th>Line coverage</th></tr></thead>
|
||
<tbody>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line1"></a><code>1</code></td><td></td><td class="lightgray"><code>using System;</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line2"></a><code>2</code></td><td></td><td class="lightgray"><code>using System.Collections.Generic;</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line3"></a><code>3</code></td><td></td><td class="lightgray"><code>using System.Linq;</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line4"></a><code>4</code></td><td></td><td class="lightgray"><code>using CounterDrone.Core.Models;</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line5"></a><code>5</code></td><td></td><td class="lightgray"><code></code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line6"></a><code>6</code></td><td></td><td class="lightgray"><code>namespace CounterDrone.Core.Algorithms</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line7"></a><code>7</code></td><td></td><td class="lightgray"><code>{</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line8"></a><code>8</code></td><td></td><td class="lightgray"><code> public class DefaultDefenseAdvisor : IDefenseAdvisor</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line9"></a><code>9</code></td><td></td><td class="lightgray"><code> {</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line10"></a><code>10</code></td><td></td><td class="lightgray"><code> private readonly List<AmmunitionSpec> _ammoCatalog;</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line11"></a><code>11</code></td><td></td><td class="lightgray"><code></code></td></tr>
|
||
<tr class="coverableline" title="Covered (16 visits)" data-coverage="{'AllTestMethods': {'VC': '16', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">16</td><td class="rightmargin right"><a id="file0_line12"></a><code>12</code></td><td></td><td class="lightgreen"><code> public DefaultDefenseAdvisor(List<AmmunitionSpec> ammoCatalog)</code></td></tr>
|
||
<tr class="coverableline" title="Covered (16 visits)" data-coverage="{'AllTestMethods': {'VC': '16', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">16</td><td class="rightmargin right"><a id="file0_line13"></a><code>13</code></td><td></td><td class="lightgreen"><code> {</code></td></tr>
|
||
<tr class="coverableline" title="Covered (16 visits, 2 of 2 branches are covered)" data-coverage="{'AllTestMethods': {'VC': '16', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">16</td><td class="rightmargin right"><a id="file0_line14"></a><code>14</code></td><td class="percentagebar percentagebar100"><i class="icon-fork"></i></td><td class="lightgreen"><code> _ammoCatalog = ammoCatalog ?? new List<AmmunitionSpec>();</code></td></tr>
|
||
<tr class="coverableline" title="Covered (16 visits)" data-coverage="{'AllTestMethods': {'VC': '16', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">16</td><td class="rightmargin right"><a id="file0_line15"></a><code>15</code></td><td></td><td class="lightgreen"><code> }</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line16"></a><code>16</code></td><td></td><td class="lightgray"><code></code></td></tr>
|
||
<tr class="coverableline" title="Covered (1 visits)" data-coverage="{'AllTestMethods': {'VC': '1', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">1</td><td class="rightmargin right"><a id="file0_line17"></a><code>17</code></td><td></td><td class="lightgreen"><code> private static readonly Dictionary<PowerType, AerosolType> MatchTable = new()</code></td></tr>
|
||
<tr class="coverableline" title="Covered (1 visits)" data-coverage="{'AllTestMethods': {'VC': '1', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">1</td><td class="rightmargin right"><a id="file0_line18"></a><code>18</code></td><td></td><td class="lightgreen"><code> {</code></td></tr>
|
||
<tr class="coverableline" title="Covered (1 visits)" data-coverage="{'AllTestMethods': {'VC': '1', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">1</td><td class="rightmargin right"><a id="file0_line19"></a><code>19</code></td><td></td><td class="lightgreen"><code> { PowerType.Electric, AerosolType.InertGas },</code></td></tr>
|
||
<tr class="coverableline" title="Covered (1 visits)" data-coverage="{'AllTestMethods': {'VC': '1', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">1</td><td class="rightmargin right"><a id="file0_line20"></a><code>20</code></td><td></td><td class="lightgreen"><code> { PowerType.Piston, AerosolType.InertGas },</code></td></tr>
|
||
<tr class="coverableline" title="Covered (1 visits)" data-coverage="{'AllTestMethods': {'VC': '1', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">1</td><td class="rightmargin right"><a id="file0_line21"></a><code>21</code></td><td></td><td class="lightgreen"><code> { PowerType.Jet, AerosolType.ActiveMaterial },</code></td></tr>
|
||
<tr class="coverableline" title="Covered (1 visits)" data-coverage="{'AllTestMethods': {'VC': '1', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">1</td><td class="rightmargin right"><a id="file0_line22"></a><code>22</code></td><td></td><td class="lightgreen"><code> };</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line23"></a><code>23</code></td><td></td><td class="lightgray"><code></code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line24"></a><code>24</code></td><td></td><td class="lightgray"><code> public DefenseRecommendation Recommend(ThreatProfile threat)</code></td></tr>
|
||
<tr class="coverableline" title="Covered (15 visits)" data-coverage="{'AllTestMethods': {'VC': '15', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">15</td><td class="rightmargin right"><a id="file0_line25"></a><code>25</code></td><td></td><td class="lightgreen"><code> {</code></td></tr>
|
||
<tr class="coverableline" title="Covered (15 visits)" data-coverage="{'AllTestMethods': {'VC': '15', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">15</td><td class="rightmargin right"><a id="file0_line26"></a><code>26</code></td><td></td><td class="lightgreen"><code> var result = new DefenseRecommendation</code></td></tr>
|
||
<tr class="coverableline" title="Covered (15 visits)" data-coverage="{'AllTestMethods': {'VC': '15', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">15</td><td class="rightmargin right"><a id="file0_line27"></a><code>27</code></td><td></td><td class="lightgreen"><code> {</code></td></tr>
|
||
<tr class="coverableline" title="Covered (15 visits)" data-coverage="{'AllTestMethods': {'VC': '15', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">15</td><td class="rightmargin right"><a id="file0_line28"></a><code>28</code></td><td></td><td class="lightgreen"><code> Best = new DefenseSolution(),</code></td></tr>
|
||
<tr class="coverableline" title="Covered (15 visits)" data-coverage="{'AllTestMethods': {'VC': '15', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">15</td><td class="rightmargin right"><a id="file0_line29"></a><code>29</code></td><td></td><td class="lightgreen"><code> Critical = new DefenseSolution(),</code></td></tr>
|
||
<tr class="coverableline" title="Covered (15 visits)" data-coverage="{'AllTestMethods': {'VC': '15', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">15</td><td class="rightmargin right"><a id="file0_line30"></a><code>30</code></td><td></td><td class="lightgreen"><code> };</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line31"></a><code>31</code></td><td></td><td class="lightgray"><code></code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line32"></a><code>32</code></td><td></td><td class="lightgray"><code> // ===== 输入校验 =====</code></td></tr>
|
||
<tr class="coverableline" title="Covered (15 visits, 2 of 2 branches are covered)" data-coverage="{'AllTestMethods': {'VC': '15', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">15</td><td class="rightmargin right"><a id="file0_line33"></a><code>33</code></td><td class="percentagebar percentagebar100"><i class="icon-fork"></i></td><td class="lightgreen"><code> if (threat.Targets.Count == 0)</code></td></tr>
|
||
<tr class="coverableline" title="Covered (1 visits)" data-coverage="{'AllTestMethods': {'VC': '1', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">1</td><td class="rightmargin right"><a id="file0_line34"></a><code>34</code></td><td></td><td class="lightgreen"><code> {</code></td></tr>
|
||
<tr class="coverableline" title="Covered (1 visits)" data-coverage="{'AllTestMethods': {'VC': '1', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">1</td><td class="rightmargin right"><a id="file0_line35"></a><code>35</code></td><td></td><td class="lightgreen"><code> result.Best.SummaryRationale = "失败:未配置威胁目标";</code></td></tr>
|
||
<tr class="coverableline" title="Covered (1 visits)" data-coverage="{'AllTestMethods': {'VC': '1', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">1</td><td class="rightmargin right"><a id="file0_line36"></a><code>36</code></td><td></td><td class="lightgreen"><code> return result;</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line37"></a><code>37</code></td><td></td><td class="lightgray"><code> }</code></td></tr>
|
||
<tr class="coverableline" title="Covered (14 visits, 2 of 2 branches are covered)" data-coverage="{'AllTestMethods': {'VC': '14', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">14</td><td class="rightmargin right"><a id="file0_line38"></a><code>38</code></td><td class="percentagebar percentagebar100"><i class="icon-fork"></i></td><td class="lightgreen"><code> if (threat.Waypoints.Count < 2)</code></td></tr>
|
||
<tr class="coverableline" title="Covered (1 visits)" data-coverage="{'AllTestMethods': {'VC': '1', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">1</td><td class="rightmargin right"><a id="file0_line39"></a><code>39</code></td><td></td><td class="lightgreen"><code> {</code></td></tr>
|
||
<tr class="coverableline" title="Covered (1 visits)" data-coverage="{'AllTestMethods': {'VC': '1', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">1</td><td class="rightmargin right"><a id="file0_line40"></a><code>40</code></td><td></td><td class="lightgreen"><code> result.Best.SummaryRationale = "失败:需要至少两个航路点";</code></td></tr>
|
||
<tr class="coverableline" title="Covered (1 visits)" data-coverage="{'AllTestMethods': {'VC': '1', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">1</td><td class="rightmargin right"><a id="file0_line41"></a><code>41</code></td><td></td><td class="lightgreen"><code> return result;</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line42"></a><code>42</code></td><td></td><td class="lightgray"><code> }</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line43"></a><code>43</code></td><td></td><td class="lightgray"><code></code></td></tr>
|
||
<tr class="coverableline" title="Covered (13 visits)" data-coverage="{'AllTestMethods': {'VC': '13', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">13</td><td class="rightmargin right"><a id="file0_line44"></a><code>44</code></td><td></td><td class="lightgreen"><code> var target = threat.Targets[0];</code></td></tr>
|
||
<tr class="coverableline" title="Partially covered (13 visits, 1 of 2 branches are covered)" data-coverage="{'AllTestMethods': {'VC': '13', 'LVS': 'orange'}}"><td class="orange"> </td><td class="leftmargin rightmargin right">13</td><td class="rightmargin right"><a id="file0_line45"></a><code>45</code></td><td class="percentagebar percentagebar50"><i class="icon-fork"></i></td><td class="lightorange"><code> if (target.TypicalSpeed <= 0)</code></td></tr>
|
||
<tr class="coverableline" title="Not covered (0 visits)" data-coverage="{'AllTestMethods': {'VC': '0', 'LVS': 'red'}}"><td class="red"> </td><td class="leftmargin rightmargin right">0</td><td class="rightmargin right"><a id="file0_line46"></a><code>46</code></td><td></td><td class="lightred"><code> {</code></td></tr>
|
||
<tr class="coverableline" title="Not covered (0 visits)" data-coverage="{'AllTestMethods': {'VC': '0', 'LVS': 'red'}}"><td class="red"> </td><td class="leftmargin rightmargin right">0</td><td class="rightmargin right"><a id="file0_line47"></a><code>47</code></td><td></td><td class="lightred"><code> result.Best.SummaryRationale = "失败:目标速度为 0";</code></td></tr>
|
||
<tr class="coverableline" title="Not covered (0 visits)" data-coverage="{'AllTestMethods': {'VC': '0', 'LVS': 'red'}}"><td class="red"> </td><td class="leftmargin rightmargin right">0</td><td class="rightmargin right"><a id="file0_line48"></a><code>48</code></td><td></td><td class="lightred"><code> return result;</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line49"></a><code>49</code></td><td></td><td class="lightgray"><code> }</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line50"></a><code>50</code></td><td></td><td class="lightgray"><code></code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line51"></a><code>51</code></td><td></td><td class="lightgray"><code> // ===== Step A:气溶胶选型 =====</code></td></tr>
|
||
<tr class="coverableline" title="Covered (13 visits)" data-coverage="{'AllTestMethods': {'VC': '13', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">13</td><td class="rightmargin right"><a id="file0_line52"></a><code>52</code></td><td></td><td class="lightgreen"><code> var powerType = (PowerType)target.PowerType;</code></td></tr>
|
||
<tr class="coverableline" title="Partially covered (13 visits, 1 of 2 branches are covered)" data-coverage="{'AllTestMethods': {'VC': '13', 'LVS': 'orange'}}"><td class="orange"> </td><td class="leftmargin rightmargin right">13</td><td class="rightmargin right"><a id="file0_line53"></a><code>53</code></td><td class="percentagebar percentagebar50"><i class="icon-fork"></i></td><td class="lightorange"><code> var aerosolType = MatchTable.TryGetValue(powerType, out var match)</code></td></tr>
|
||
<tr class="coverableline" title="Covered (13 visits)" data-coverage="{'AllTestMethods': {'VC': '13', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">13</td><td class="rightmargin right"><a id="file0_line54"></a><code>54</code></td><td></td><td class="lightgreen"><code> ? match : AerosolType.InertGas;</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line55"></a><code>55</code></td><td></td><td class="lightgray"><code></code></td></tr>
|
||
<tr class="coverableline" title="Covered (27 visits)" data-coverage="{'AllTestMethods': {'VC': '27', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">27</td><td class="rightmargin right"><a id="file0_line56"></a><code>56</code></td><td></td><td class="lightgreen"><code> var ammo = _ammoCatalog.FirstOrDefault(a => a.AerosolType == (int)aerosolType);</code></td></tr>
|
||
<tr class="coverableline" title="Covered (13 visits, 2 of 2 branches are covered)" data-coverage="{'AllTestMethods': {'VC': '13', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">13</td><td class="rightmargin right"><a id="file0_line57"></a><code>57</code></td><td class="percentagebar percentagebar100"><i class="icon-fork"></i></td><td class="lightgreen"><code> if (ammo == null)</code></td></tr>
|
||
<tr class="coverableline" title="Covered (1 visits)" data-coverage="{'AllTestMethods': {'VC': '1', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">1</td><td class="rightmargin right"><a id="file0_line58"></a><code>58</code></td><td></td><td class="lightgreen"><code> {</code></td></tr>
|
||
<tr class="coverableline" title="Covered (1 visits)" data-coverage="{'AllTestMethods': {'VC': '1', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">1</td><td class="rightmargin right"><a id="file0_line59"></a><code>59</code></td><td></td><td class="lightgreen"><code> result.Best.SummaryRationale = $"失败:弹药库中未找到 {aerosolType} 类型的弹药规格";</code></td></tr>
|
||
<tr class="coverableline" title="Covered (1 visits)" data-coverage="{'AllTestMethods': {'VC': '1', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">1</td><td class="rightmargin right"><a id="file0_line60"></a><code>60</code></td><td></td><td class="lightgreen"><code> return result;</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line61"></a><code>61</code></td><td></td><td class="lightgray"><code> }</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line62"></a><code>62</code></td><td></td><td class="lightgray"><code></code></td></tr>
|
||
<tr class="coverableline" title="Partially covered (12 visits, 3 of 4 branches are covered)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'orange'}}"><td class="orange"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line63"></a><code>63</code></td><td class="percentagebar percentagebar70"><i class="icon-fork"></i></td><td class="lightorange"><code> var rationale = powerType switch</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line64"></a><code>64</code></td><td></td><td class="lightgreen"><code> {</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line65"></a><code>65</code></td><td></td><td class="lightgreen"><code> PowerType.Electric or PowerType.Piston =></code></td></tr>
|
||
<tr class="coverableline" title="Covered (10 visits)" data-coverage="{'AllTestMethods': {'VC': '10', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">10</td><td class="rightmargin right"><a id="file0_line66"></a><code>66</code></td><td></td><td class="lightgreen"><code> $"{powerType}发动机依赖氧气,推荐惰性气体窒息方案",</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line67"></a><code>67</code></td><td></td><td class="lightgreen"><code> PowerType.Jet =></code></td></tr>
|
||
<tr class="coverableline" title="Covered (2 visits)" data-coverage="{'AllTestMethods': {'VC': '2', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">2</td><td class="rightmargin right"><a id="file0_line68"></a><code>68</code></td><td></td><td class="lightgreen"><code> $"{powerType}发动机高温表面可触发活性材料爆燃反应",</code></td></tr>
|
||
<tr class="coverableline" title="Not covered (0 visits)" data-coverage="{'AllTestMethods': {'VC': '0', 'LVS': 'red'}}"><td class="red"> </td><td class="leftmargin rightmargin right">0</td><td class="rightmargin right"><a id="file0_line69"></a><code>69</code></td><td></td><td class="lightred"><code> _ => "默认推荐惰性气体方案",</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line70"></a><code>70</code></td><td></td><td class="lightgreen"><code> };</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line71"></a><code>71</code></td><td></td><td class="lightgray"><code></code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line72"></a><code>72</code></td><td></td><td class="lightgray"><code> // ===== Step B:时空交汇优化 =====</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line73"></a><code>73</code></td><td></td><td class="lightgreen"><code> var start = ToV3(threat.Waypoints[0]);</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line74"></a><code>74</code></td><td></td><td class="lightgreen"><code> var end = ToV3(threat.Waypoints[^1]);</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line75"></a><code>75</code></td><td></td><td class="lightgreen"><code> var mid = new Vector3((start.X + end.X) / 2f, (start.Y + end.Y) / 2f, (start.Z + end.Z) / 2f);</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line76"></a><code>76</code></td><td></td><td class="lightgreen"><code> var routeLength = start.DistanceTo(end);</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line77"></a><code>77</code></td><td></td><td class="lightgreen"><code> var avgSpeed = (float)target.TypicalSpeed / 3.6f;</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line78"></a><code>78</code></td><td></td><td class="lightgreen"><code> var totalFlightTime = routeLength / avgSpeed;</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line79"></a><code>79</code></td><td></td><td class="lightgray"><code></code></td></tr>
|
||
<tr class="coverableline" title="Partially covered (12 visits, 1 of 2 branches are covered)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'orange'}}"><td class="orange"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line80"></a><code>80</code></td><td class="percentagebar percentagebar50"><i class="icon-fork"></i></td><td class="lightorange"><code> if (routeLength < 100)</code></td></tr>
|
||
<tr class="coverableline" title="Not covered (0 visits)" data-coverage="{'AllTestMethods': {'VC': '0', 'LVS': 'red'}}"><td class="red"> </td><td class="leftmargin rightmargin right">0</td><td class="rightmargin right"><a id="file0_line81"></a><code>81</code></td><td></td><td class="lightred"><code> {</code></td></tr>
|
||
<tr class="coverableline" title="Not covered (0 visits)" data-coverage="{'AllTestMethods': {'VC': '0', 'LVS': 'red'}}"><td class="red"> </td><td class="leftmargin rightmargin right">0</td><td class="rightmargin right"><a id="file0_line82"></a><code>82</code></td><td></td><td class="lightred"><code> result.Best.SummaryRationale = "失败:航路太短(<100m)";</code></td></tr>
|
||
<tr class="coverableline" title="Not covered (0 visits)" data-coverage="{'AllTestMethods': {'VC': '0', 'LVS': 'red'}}"><td class="red"> </td><td class="leftmargin rightmargin right">0</td><td class="rightmargin right"><a id="file0_line83"></a><code>83</code></td><td></td><td class="lightred"><code> return result;</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line84"></a><code>84</code></td><td></td><td class="lightgray"><code> }</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line85"></a><code>85</code></td><td></td><td class="lightgray"><code></code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line86"></a><code>86</code></td><td></td><td class="lightgray"><code> // 弹药参数</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line87"></a><code>87</code></td><td></td><td class="lightgreen"><code> var initialR = (float)ammo.InitialRadius;</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line88"></a><code>88</code></td><td></td><td class="lightgreen"><code> var maxDur = (float)ammo.MaxDuration;</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line89"></a><code>89</code></td><td></td><td class="lightgray"><code></code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line90"></a><code>90</code></td><td></td><td class="lightgray"><code> // 无人机穿过单个云团的时间</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line91"></a><code>91</code></td><td></td><td class="lightgreen"><code> var crossTime = (2f * initialR) / avgSpeed;</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits, 2 of 2 branches are covered)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line92"></a><code>92</code></td><td class="percentagebar percentagebar100"><i class="icon-fork"></i></td><td class="lightgreen"><code> var neededExposure = aerosolType == AerosolType.ActiveMaterial ? 2f : 6f;</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line93"></a><code>93</code></td><td></td><td class="lightgreen"><code> var spacing = initialR * 1.5f; // 云团间隔</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line94"></a><code>94</code></td><td></td><td class="lightgray"><code></code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line95"></a><code>95</code></td><td></td><td class="lightgray"><code> // 有效覆盖距离 = 间距×(N-1) + 直径,需 ≥ 所需暴露时间 × 速度</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line96"></a><code>96</code></td><td></td><td class="lightgreen"><code> var requiredCoverage = neededExposure * avgSpeed;</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line97"></a><code>97</code></td><td></td><td class="lightgreen"><code> var roundsNeeded = Math.Max(1,</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line98"></a><code>98</code></td><td></td><td class="lightgreen"><code> (int)Math.Ceiling((requiredCoverage - 2f * initialR) / spacing) + 1);</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line99"></a><code>99</code></td><td></td><td class="lightgray"><code></code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line100"></a><code>100</code></td><td></td><td class="lightgray"><code> // 实际有效暴露时间</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line101"></a><code>101</code></td><td></td><td class="lightgreen"><code> var actualCoverage = spacing * (roundsNeeded - 1) + 2f * initialR;</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line102"></a><code>102</code></td><td></td><td class="lightgreen"><code> var actualExposure = actualCoverage / avgSpeed;</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line103"></a><code>103</code></td><td></td><td class="lightgreen"><code> var prob = Math.Min(0.95f, actualExposure / neededExposure);</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line104"></a><code>104</code></td><td></td><td class="lightgray"><code></code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line105"></a><code>105</code></td><td></td><td class="lightgray"><code> // 多轮次云团:沿航路等距分布</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line106"></a><code>106</code></td><td></td><td class="lightgreen"><code> var cloudSalvo = new List<CloudDispersal>();</code></td></tr>
|
||
<tr class="coverableline" title="Covered (112 visits, 2 of 2 branches are covered)" data-coverage="{'AllTestMethods': {'VC': '112', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">112</td><td class="rightmargin right"><a id="file0_line107"></a><code>107</code></td><td class="percentagebar percentagebar100"><i class="icon-fork"></i></td><td class="lightgreen"><code> for (int i = 0; i < roundsNeeded; i++)</code></td></tr>
|
||
<tr class="coverableline" title="Covered (44 visits)" data-coverage="{'AllTestMethods': {'VC': '44', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">44</td><td class="rightmargin right"><a id="file0_line108"></a><code>108</code></td><td></td><td class="lightgreen"><code> {</code></td></tr>
|
||
<tr class="coverableline" title="Covered (44 visits)" data-coverage="{'AllTestMethods': {'VC': '44', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">44</td><td class="rightmargin right"><a id="file0_line109"></a><code>109</code></td><td></td><td class="lightgreen"><code> var offset = (i - (roundsNeeded - 1) / 2f) * spacing;</code></td></tr>
|
||
<tr class="coverableline" title="Covered (44 visits)" data-coverage="{'AllTestMethods': {'VC': '44', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">44</td><td class="rightmargin right"><a id="file0_line110"></a><code>110</code></td><td></td><td class="lightgreen"><code> cloudSalvo.Add(new CloudDispersal</code></td></tr>
|
||
<tr class="coverableline" title="Covered (44 visits)" data-coverage="{'AllTestMethods': {'VC': '44', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">44</td><td class="rightmargin right"><a id="file0_line111"></a><code>111</code></td><td></td><td class="lightgreen"><code> {</code></td></tr>
|
||
<tr class="coverableline" title="Covered (44 visits)" data-coverage="{'AllTestMethods': {'VC': '44', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">44</td><td class="rightmargin right"><a id="file0_line112"></a><code>112</code></td><td></td><td class="lightgreen"><code> AerosolType = (int)aerosolType,</code></td></tr>
|
||
<tr class="coverableline" title="Covered (44 visits)" data-coverage="{'AllTestMethods': {'VC': '44', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">44</td><td class="rightmargin right"><a id="file0_line113"></a><code>113</code></td><td></td><td class="lightgreen"><code> PositionX = mid.X + offset,</code></td></tr>
|
||
<tr class="coverableline" title="Covered (44 visits)" data-coverage="{'AllTestMethods': {'VC': '44', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">44</td><td class="rightmargin right"><a id="file0_line114"></a><code>114</code></td><td></td><td class="lightgreen"><code> PositionY = mid.Y,</code></td></tr>
|
||
<tr class="coverableline" title="Covered (44 visits)" data-coverage="{'AllTestMethods': {'VC': '44', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">44</td><td class="rightmargin right"><a id="file0_line115"></a><code>115</code></td><td></td><td class="lightgreen"><code> PositionZ = mid.Z,</code></td></tr>
|
||
<tr class="coverableline" title="Covered (44 visits)" data-coverage="{'AllTestMethods': {'VC': '44', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">44</td><td class="rightmargin right"><a id="file0_line116"></a><code>116</code></td><td></td><td class="lightgreen"><code> DisperseHeight = (float)target.TypicalAltitude,</code></td></tr>
|
||
<tr class="coverableline" title="Covered (44 visits)" data-coverage="{'AllTestMethods': {'VC': '44', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">44</td><td class="rightmargin right"><a id="file0_line117"></a><code>117</code></td><td></td><td class="lightgreen"><code> TriggerMode = (int)TriggerMode.Time,</code></td></tr>
|
||
<tr class="coverableline" title="Covered (44 visits)" data-coverage="{'AllTestMethods': {'VC': '44', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">44</td><td class="rightmargin right"><a id="file0_line118"></a><code>118</code></td><td></td><td class="lightgreen"><code> Duration = (int)maxDur,</code></td></tr>
|
||
<tr class="coverableline" title="Covered (44 visits)" data-coverage="{'AllTestMethods': {'VC': '44', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">44</td><td class="rightmargin right"><a id="file0_line119"></a><code>119</code></td><td></td><td class="lightgreen"><code> InitialScale = ammo.InitialVolume,</code></td></tr>
|
||
<tr class="coverableline" title="Covered (44 visits)" data-coverage="{'AllTestMethods': {'VC': '44', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">44</td><td class="rightmargin right"><a id="file0_line120"></a><code>120</code></td><td></td><td class="lightgreen"><code> ReleaseMode = (int)ReleaseMode.Single,</code></td></tr>
|
||
<tr class="coverableline" title="Covered (44 visits)" data-coverage="{'AllTestMethods': {'VC': '44', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">44</td><td class="rightmargin right"><a id="file0_line121"></a><code>121</code></td><td></td><td class="lightgreen"><code> Source = "Algorithm",</code></td></tr>
|
||
<tr class="coverableline" title="Covered (44 visits)" data-coverage="{'AllTestMethods': {'VC': '44', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">44</td><td class="rightmargin right"><a id="file0_line122"></a><code>122</code></td><td></td><td class="lightgreen"><code> PositionMode = (int)PositionMode.AlgorithmRecommended,</code></td></tr>
|
||
<tr class="coverableline" title="Covered (44 visits)" data-coverage="{'AllTestMethods': {'VC': '44', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">44</td><td class="rightmargin right"><a id="file0_line123"></a><code>123</code></td><td></td><td class="lightgreen"><code> RecommendedTiming = totalFlightTime / 2f,</code></td></tr>
|
||
<tr class="coverableline" title="Covered (44 visits)" data-coverage="{'AllTestMethods': {'VC': '44', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">44</td><td class="rightmargin right"><a id="file0_line124"></a><code>124</code></td><td></td><td class="lightgreen"><code> });</code></td></tr>
|
||
<tr class="coverableline" title="Covered (44 visits)" data-coverage="{'AllTestMethods': {'VC': '44', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">44</td><td class="rightmargin right"><a id="file0_line125"></a><code>125</code></td><td></td><td class="lightgreen"><code> }</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line126"></a><code>126</code></td><td></td><td class="lightgray"><code></code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line127"></a><code>127</code></td><td></td><td class="lightgray"><code> // 平台部署:假设齐射(同时发射),每门炮打一发后冷却 5s</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line128"></a><code>128</code></td><td></td><td class="lightgray"><code> // 需要 roundsNeeded 门炮同时发射</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line129"></a><code>129</code></td><td></td><td class="lightgreen"><code> var gunCount = roundsNeeded;</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line130"></a><code>130</code></td><td></td><td class="lightgreen"><code> var platforms = new List<RecommendedPlatform>();</code></td></tr>
|
||
<tr class="coverableline" title="Covered (112 visits, 2 of 2 branches are covered)" data-coverage="{'AllTestMethods': {'VC': '112', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">112</td><td class="rightmargin right"><a id="file0_line131"></a><code>131</code></td><td class="percentagebar percentagebar100"><i class="icon-fork"></i></td><td class="lightgreen"><code> for (int i = 0; i < gunCount; i++)</code></td></tr>
|
||
<tr class="coverableline" title="Covered (44 visits)" data-coverage="{'AllTestMethods': {'VC': '44', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">44</td><td class="rightmargin right"><a id="file0_line132"></a><code>132</code></td><td></td><td class="lightgreen"><code> platforms.Add(new RecommendedPlatform</code></td></tr>
|
||
<tr class="coverableline" title="Covered (44 visits)" data-coverage="{'AllTestMethods': {'VC': '44', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">44</td><td class="rightmargin right"><a id="file0_line133"></a><code>133</code></td><td></td><td class="lightgreen"><code> {</code></td></tr>
|
||
<tr class="coverableline" title="Covered (44 visits)" data-coverage="{'AllTestMethods': {'VC': '44', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">44</td><td class="rightmargin right"><a id="file0_line134"></a><code>134</code></td><td></td><td class="lightgreen"><code> Type = PlatformType.GroundBased,</code></td></tr>
|
||
<tr class="coverableline" title="Covered (44 visits)" data-coverage="{'AllTestMethods': {'VC': '44', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">44</td><td class="rightmargin right"><a id="file0_line135"></a><code>135</code></td><td></td><td class="lightgreen"><code> Position = new Vector3(mid.X + i * 50, 0, 50),</code></td></tr>
|
||
<tr class="coverableline" title="Covered (44 visits)" data-coverage="{'AllTestMethods': {'VC': '44', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">44</td><td class="rightmargin right"><a id="file0_line136"></a><code>136</code></td><td></td><td class="lightgreen"><code> Quantity = 1,</code></td></tr>
|
||
<tr class="coverableline" title="Covered (44 visits)" data-coverage="{'AllTestMethods': {'VC': '44', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">44</td><td class="rightmargin right"><a id="file0_line137"></a><code>137</code></td><td></td><td class="lightgreen"><code> MunitionCount = 1,</code></td></tr>
|
||
<tr class="coverableline" title="Covered (44 visits)" data-coverage="{'AllTestMethods': {'VC': '44', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">44</td><td class="rightmargin right"><a id="file0_line138"></a><code>138</code></td><td></td><td class="lightgreen"><code> CoverageVolume = (float)ammo.InitialVolume,</code></td></tr>
|
||
<tr class="coverableline" title="Covered (44 visits)" data-coverage="{'AllTestMethods': {'VC': '44', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">44</td><td class="rightmargin right"><a id="file0_line139"></a><code>139</code></td><td></td><td class="lightgreen"><code> Cooldown = 5f,</code></td></tr>
|
||
<tr class="coverableline" title="Covered (44 visits)" data-coverage="{'AllTestMethods': {'VC': '44', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">44</td><td class="rightmargin right"><a id="file0_line140"></a><code>140</code></td><td></td><td class="lightgreen"><code> MuzzleVelocity = 800f,</code></td></tr>
|
||
<tr class="coverableline" title="Covered (44 visits)" data-coverage="{'AllTestMethods': {'VC': '44', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">44</td><td class="rightmargin right"><a id="file0_line141"></a><code>141</code></td><td></td><td class="lightgreen"><code> });</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line142"></a><code>142</code></td><td></td><td class="lightgray"><code></code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line143"></a><code>143</code></td><td></td><td class="lightgreen"><code> result.Best = new DefenseSolution</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line144"></a><code>144</code></td><td></td><td class="lightgreen"><code> {</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line145"></a><code>145</code></td><td></td><td class="lightgreen"><code> RecommendedAerosolType = aerosolType,</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line146"></a><code>146</code></td><td></td><td class="lightgreen"><code> AerosolRationale = rationale,</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line147"></a><code>147</code></td><td></td><td class="lightgreen"><code> RecommendedCloud = cloudSalvo[0],</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line148"></a><code>148</code></td><td></td><td class="lightgreen"><code> CloudSalvo = cloudSalvo,</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line149"></a><code>149</code></td><td></td><td class="lightgreen"><code> Platforms = platforms,</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line150"></a><code>150</code></td><td></td><td class="lightgreen"><code> Detections = new List<RecommendedDetection></code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line151"></a><code>151</code></td><td></td><td class="lightgreen"><code> {</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line152"></a><code>152</code></td><td></td><td class="lightgreen"><code> new RecommendedDetection</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line153"></a><code>153</code></td><td></td><td class="lightgreen"><code> {</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line154"></a><code>154</code></td><td></td><td class="lightgreen"><code> Position = new Vector3(mid.X, mid.Y, 0),</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line155"></a><code>155</code></td><td></td><td class="lightgreen"><code> DetectionRadius = Math.Max(3000f, routeLength * 0.4f),</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line156"></a><code>156</code></td><td></td><td class="lightgreen"><code> Quantity = 1,</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line157"></a><code>157</code></td><td></td><td class="lightgreen"><code> }</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line158"></a><code>158</code></td><td></td><td class="lightgreen"><code> },</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line159"></a><code>159</code></td><td></td><td class="lightgreen"><code> InterceptProbability = prob,</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line160"></a><code>160</code></td><td></td><td class="lightgreen"><code> SummaryRationale = $"{aerosolType}方案,{roundsNeeded}发,预计拦截概率 {prob:P0}",</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line161"></a><code>161</code></td><td></td><td class="lightgreen"><code> };</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line162"></a><code>162</code></td><td></td><td class="lightgray"><code></code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line163"></a><code>163</code></td><td></td><td class="lightgreen"><code> result.Critical = new DefenseSolution</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line164"></a><code>164</code></td><td></td><td class="lightgreen"><code> {</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line165"></a><code>165</code></td><td></td><td class="lightgreen"><code> RecommendedAerosolType = aerosolType,</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line166"></a><code>166</code></td><td></td><td class="lightgreen"><code> RecommendedCloud = new CloudDispersal</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line167"></a><code>167</code></td><td></td><td class="lightgreen"><code> {</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line168"></a><code>168</code></td><td></td><td class="lightgreen"><code> AerosolType = (int)aerosolType,</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line169"></a><code>169</code></td><td></td><td class="lightgreen"><code> PositionX = start.X + (end.X - start.X) * 0.25f,</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line170"></a><code>170</code></td><td></td><td class="lightgreen"><code> PositionY = start.Y, PositionZ = start.Z,</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line171"></a><code>171</code></td><td></td><td class="lightgreen"><code> DisperseHeight = (float)target.TypicalAltitude,</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line172"></a><code>172</code></td><td></td><td class="lightgreen"><code> Duration = (int)maxDur,</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line173"></a><code>173</code></td><td></td><td class="lightgreen"><code> Source = "Algorithm",</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line174"></a><code>174</code></td><td></td><td class="lightgreen"><code> PositionMode = (int)PositionMode.AlgorithmRecommended,</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line175"></a><code>175</code></td><td></td><td class="lightgreen"><code> RecommendedTiming = totalFlightTime * 0.25f,</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line176"></a><code>176</code></td><td></td><td class="lightgreen"><code> },</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line177"></a><code>177</code></td><td></td><td class="lightgreen"><code> Platforms = platforms,</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line178"></a><code>178</code></td><td></td><td class="lightgreen"><code> InterceptProbability = prob * 0.3f,</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line179"></a><code>179</code></td><td></td><td class="lightgreen"><code> SummaryRationale = $"临界方案:拦截概率仅 {prob * 0.3f:P0}",</code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line180"></a><code>180</code></td><td></td><td class="lightgreen"><code> };</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line181"></a><code>181</code></td><td></td><td class="lightgray"><code></code></td></tr>
|
||
<tr class="coverableline" title="Covered (12 visits)" data-coverage="{'AllTestMethods': {'VC': '12', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">12</td><td class="rightmargin right"><a id="file0_line182"></a><code>182</code></td><td></td><td class="lightgreen"><code> return result;</code></td></tr>
|
||
<tr class="coverableline" title="Covered (15 visits)" data-coverage="{'AllTestMethods': {'VC': '15', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">15</td><td class="rightmargin right"><a id="file0_line183"></a><code>183</code></td><td></td><td class="lightgreen"><code> }</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line184"></a><code>184</code></td><td></td><td class="lightgray"><code></code></td></tr>
|
||
<tr class="coverableline" title="Covered (24 visits)" data-coverage="{'AllTestMethods': {'VC': '24', 'LVS': 'green'}}"><td class="green"> </td><td class="leftmargin rightmargin right">24</td><td class="rightmargin right"><a id="file0_line185"></a><code>185</code></td><td></td><td class="lightgreen"><code> private static Vector3 ToV3(Waypoint wp) => new((float)wp.PosX, (float)wp.PosY, (float)wp.PosZ);</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line186"></a><code>186</code></td><td></td><td class="lightgray"><code> }</code></td></tr>
|
||
<tr class="" title="Not coverable" data-coverage="{'AllTestMethods': {'VC': '', 'LVS': 'gray'}}"><td class="gray"> </td><td class="leftmargin rightmargin right"></td><td class="rightmargin right"><a id="file0_line187"></a><code>187</code></td><td></td><td class="lightgray"><code>}</code></td></tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
<div class="footer">Generated by: ReportGenerator 5.5.10.0<br />2026/6/11 - 16:35:36<br /><a href="https://github.com/danielpalme/ReportGenerator">GitHub</a> | <a href="https://reportgenerator.io">reportgenerator.io</a></div></div>
|
||
<div class="containerright">
|
||
<div class="containerrightfixed">
|
||
<h1>Methods/Properties</h1>
|
||
<a href="#file0_line12" class="navigatetohash percentagebar percentagebar100" title="Line coverage: 100% - .ctor(System.Collections.Generic.List`1<CounterDrone.Core.Models.AmmunitionSpec>)"><i class="icon-cube"></i>.ctor(System.Collections.Generic.List`1<CounterDrone.Core.Models.AmmunitionSpec>)</a><br />
|
||
<a href="#file0_line17" class="navigatetohash percentagebar percentagebar100" title="Line coverage: 100% - .cctor()"><i class="icon-cube"></i>.cctor()</a><br />
|
||
<a href="#file0_line25" class="navigatetohash percentagebar percentagebar90" title="Line coverage: 94.5% - Recommend(CounterDrone.Core.Algorithms.ThreatProfile)"><i class="icon-cube"></i>Recommend(CounterDrone.Core.Algorithms.ThreatProfile)</a><br />
|
||
<a href="#file0_line185" class="navigatetohash percentagebar percentagebar100" title="Line coverage: 100% - ToV3(CounterDrone.Core.Models.Waypoint)"><i class="icon-cube"></i>ToV3(CounterDrone.Core.Models.Waypoint)</a><br />
|
||
<br/></div>
|
||
</div></div>
|
||
<script type="text/javascript" src="class.js"></script>
|
||
</body></html> |