version 1.2.3 of the documentation

This commit is contained in:
Jeremy Long
2014-06-28 06:33:21 -04:00
parent f79d7926fb
commit 15b03aed0c
1073 changed files with 27334 additions and 7440 deletions

View File

@@ -145,7 +145,7 @@
<td class="src"><pre class="src">&nbsp;<span class="comment"> * The Logger.</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;63</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;64</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> Logger LOGGER = Logger.getLogger(CPEAnalyzer.<span class="keyword">class</span>.getName());</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;64</td> <td class="nbHitsCovered">&nbsp;1</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> Logger LOGGER = Logger.getLogger(CPEAnalyzer.<span class="keyword">class</span>.getName());</pre></td></tr>
<tr> <td class="numLine">&nbsp;65</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;66</td> <td class="nbHits">&nbsp;</td>
@@ -228,7 +228,7 @@
<td class="src"><pre class="src">&nbsp; @Override</pre></td></tr>
<tr> <td class="numLine">&nbsp;105</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">public</span> String getName() {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;106</td> <td class="nbHitsCovered">&nbsp;8</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> <span class="string">"CPE Analyzer"</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;106</td> <td class="nbHitsCovered">&nbsp;4</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> <span class="string">"CPE Analyzer"</span>;</pre></td></tr>
<tr> <td class="numLine">&nbsp;107</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;108</td> <td class="nbHits">&nbsp;</td>
@@ -247,7 +247,7 @@
<td class="src"><pre class="src">&nbsp; @Override</pre></td></tr>
<tr> <td class="numLine">&nbsp;115</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">public</span> AnalysisPhase getAnalysisPhase() {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;116</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> AnalysisPhase.IDENTIFIER_ANALYSIS;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;116</td> <td class="nbHitsCovered">&nbsp;1</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> AnalysisPhase.IDENTIFIER_ANALYSIS;</pre></td></tr>
<tr> <td class="numLine">&nbsp;117</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;118</td> <td class="nbHits">&nbsp;</td>
@@ -266,8 +266,8 @@
<td class="src"><pre class="src">&nbsp; @Override</pre></td></tr>
<tr> <td class="numLine">&nbsp;125</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">public</span> <span class="keyword">void</span> initialize() <span class="keyword">throws</span> Exception {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;126</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">this</span>.open();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;127</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;126</td> <td class="nbHitsCovered">&nbsp;1</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">this</span>.open();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;127</td> <td class="nbHitsCovered">&nbsp;1</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;128</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;129</td> <td class="nbHits">&nbsp;</td>
@@ -286,19 +286,19 @@
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;136</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">public</span> <span class="keyword">void</span> open() <span class="keyword">throws</span> IOException, DatabaseException {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;137</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; LOGGER.log(Level.FINE, <span class="string">"Opening the CVE Database"</span>);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;138</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; cve = <span class="keyword">new</span> CveDB();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;139</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; cve.open();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;140</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; LOGGER.log(Level.FINE, <span class="string">"Creating the Lucene CPE Index"</span>);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;141</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; cpe = CpeMemoryIndex.getInstance();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;137</td> <td class="nbHitsCovered">&nbsp;1</td> <td class="src"><pre class="src">&nbsp; LOGGER.log(Level.FINE, <span class="string">"Opening the CVE Database"</span>);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;138</td> <td class="nbHitsCovered">&nbsp;1</td> <td class="src"><pre class="src">&nbsp; cve = <span class="keyword">new</span> CveDB();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;139</td> <td class="nbHitsCovered">&nbsp;1</td> <td class="src"><pre class="src">&nbsp; cve.open();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;140</td> <td class="nbHitsCovered">&nbsp;1</td> <td class="src"><pre class="src">&nbsp; LOGGER.log(Level.FINE, <span class="string">"Creating the Lucene CPE Index"</span>);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;141</td> <td class="nbHitsCovered">&nbsp;1</td> <td class="src"><pre class="src">&nbsp; cpe = CpeMemoryIndex.getInstance();</pre></td></tr>
<tr> <td class="numLine">&nbsp;142</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">try</span> {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;143</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; cpe.open(cve);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;143</td> <td class="nbHitsCovered">&nbsp;1</td> <td class="src"><pre class="src">&nbsp; cpe.open(cve);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;144</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; } <span class="keyword">catch</span> (IndexException ex) {</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;145</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; LOGGER.log(Level.FINE, <span class="string">"IndexException"</span>, ex);</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;146</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">throw</span> <span class="keyword">new</span> DatabaseException(ex);</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;147</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;148</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;147</td> <td class="nbHitsCovered">&nbsp;1</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;148</td> <td class="nbHitsCovered">&nbsp;1</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;149</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;150</td> <td class="nbHits">&nbsp;</td>
@@ -311,15 +311,15 @@
<td class="src"><pre class="src">&nbsp; @Override</pre></td></tr>
<tr> <td class="numLine">&nbsp;154</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">public</span> <span class="keyword">void</span> close() {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;155</td> <td class="nbHitsUncovered"><a title="Line 155: Conditional coverage 50% (1/2).">&nbsp;2</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 155: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (cpe != <span class="keyword">null</span>) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;156</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; cpe.close();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;155</td> <td class="nbHitsUncovered"><a title="Line 155: Conditional coverage 50% (1/2).">&nbsp;1</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 155: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (cpe != <span class="keyword">null</span>) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;156</td> <td class="nbHitsCovered">&nbsp;1</td> <td class="src"><pre class="src">&nbsp; cpe.close();</pre></td></tr>
<tr> <td class="numLine">&nbsp;157</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;158</td> <td class="nbHitsUncovered"><a title="Line 158: Conditional coverage 50% (1/2).">&nbsp;2</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 158: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (cve != <span class="keyword">null</span>) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;159</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; cve.close();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;158</td> <td class="nbHitsUncovered"><a title="Line 158: Conditional coverage 50% (1/2).">&nbsp;1</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 158: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (cve != <span class="keyword">null</span>) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;159</td> <td class="nbHitsCovered">&nbsp;1</td> <td class="src"><pre class="src">&nbsp; cve.close();</pre></td></tr>
<tr> <td class="numLine">&nbsp;160</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;161</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;161</td> <td class="nbHitsCovered">&nbsp;1</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;162</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;163</td> <td class="nbHits">&nbsp;</td>
@@ -342,56 +342,56 @@
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;172</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">protected</span> <span class="keyword">void</span> determineCPE(Dependency dependency) <span class="keyword">throws</span> CorruptIndexException, IOException, ParseException {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;173</td> <td class="nbHitsCovered">&nbsp;4</td> <td class="src"><pre class="src">&nbsp; Confidence confidence = Confidence.HIGHEST;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;173</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; Confidence confidence = Confidence.HIGHEST;</pre></td></tr>
<tr> <td class="numLine">&nbsp;174</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;175</td> <td class="nbHitsCovered">&nbsp;4</td> <td class="src"><pre class="src">&nbsp; String vendors = addEvidenceWithoutDuplicateTerms(<span class="string">""</span>, dependency.getVendorEvidence(), confidence);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;176</td> <td class="nbHitsCovered">&nbsp;4</td> <td class="src"><pre class="src">&nbsp; String products = addEvidenceWithoutDuplicateTerms(<span class="string">""</span>, dependency.getProductEvidence(), confidence);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;175</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; String vendors = addEvidenceWithoutDuplicateTerms(<span class="string">""</span>, dependency.getVendorEvidence(), confidence);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;176</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; String products = addEvidenceWithoutDuplicateTerms(<span class="string">""</span>, dependency.getProductEvidence(), confidence);</pre></td></tr>
<tr> <td class="numLine">&nbsp;177</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="comment">/* bug fix for #40 - version evidence is not showing up as "used" in the reports if there is no</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;178</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * CPE identified. As such, we are "using" the evidence and ignoring the results. */</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;179</td> <td class="nbHitsCovered">&nbsp;4</td> <td class="src"><pre class="src">&nbsp; addEvidenceWithoutDuplicateTerms(<span class="string">""</span>, dependency.getVersionEvidence(), confidence);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;179</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; addEvidenceWithoutDuplicateTerms(<span class="string">""</span>, dependency.getVersionEvidence(), confidence);</pre></td></tr>
<tr> <td class="numLine">&nbsp;180</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;181</td> <td class="nbHitsCovered">&nbsp;4</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">int</span> ctr = 0;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;181</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">int</span> ctr = 0;</pre></td></tr>
<tr> <td class="numLine">&nbsp;182</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">do</span> {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;183</td> <td class="nbHitsUncovered"><a title="Line 183: Conditional coverage 50% (2/4) [each condition: 50%, 50%].">&nbsp;16</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 183: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> <span class="keyword">if</span> (!vendors.isEmpty() &amp;&amp; !products.isEmpty()) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;184</td> <td class="nbHitsCovered">&nbsp;16</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> List&lt;IndexEntry&gt; entries = searchCPE(vendors, products, dependency.getProductEvidence().getWeighting(),</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;183</td> <td class="nbHitsUncovered"><a title="Line 183: Conditional coverage 50% (2/4) [each condition: 50%, 50%].">&nbsp;8</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 183: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> <span class="keyword">if</span> (!vendors.isEmpty() &amp;&amp; !products.isEmpty()) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;184</td> <td class="nbHitsCovered">&nbsp;8</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> List&lt;IndexEntry&gt; entries = searchCPE(vendors, products, dependency.getProductEvidence().getWeighting(),</pre></td></tr>
<tr> <td class="numLine">&nbsp;185</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; dependency.getVendorEvidence().getWeighting());</pre></td></tr>
<tr> <td class="numLine">&nbsp;186</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;187</td> <td class="nbHitsCovered"><a title="Line 187: Conditional coverage 100% (2/2).">&nbsp;16</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 187: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (IndexEntry e : entries) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;188</td> <td class="nbHitsCovered"><a title="Line 188: Conditional coverage 100% (2/2).">&nbsp;108</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 188: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (verifyEntry(e, dependency)) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;189</td> <td class="nbHitsCovered">&nbsp;8</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> String vendor = e.getVendor();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;190</td> <td class="nbHitsCovered">&nbsp;8</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> String product = e.getProduct();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;191</td> <td class="nbHitsCovered">&nbsp;8</td> <td class="src"><pre class="src">&nbsp; determineIdentifiers(dependency, vendor, product);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;187</td> <td class="nbHitsCovered"><a title="Line 187: Conditional coverage 100% (2/2).">&nbsp;8</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 187: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (IndexEntry e : entries) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;188</td> <td class="nbHitsCovered"><a title="Line 188: Conditional coverage 100% (2/2).">&nbsp;54</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 188: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (verifyEntry(e, dependency)) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;189</td> <td class="nbHitsCovered">&nbsp;4</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> String vendor = e.getVendor();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;190</td> <td class="nbHitsCovered">&nbsp;4</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> String product = e.getProduct();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;191</td> <td class="nbHitsCovered">&nbsp;4</td> <td class="src"><pre class="src">&nbsp; determineIdentifiers(dependency, vendor, product);</pre></td></tr>
<tr> <td class="numLine">&nbsp;192</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;193</td> <td class="nbHitsCovered">&nbsp;108</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;193</td> <td class="nbHitsCovered">&nbsp;54</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;194</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;195</td> <td class="nbHitsCovered">&nbsp;16</td> <td class="src"><pre class="src">&nbsp; confidence = reduceConfidence(confidence);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;196</td> <td class="nbHitsUncovered"><a title="Line 196: Conditional coverage 50% (1/2).">&nbsp;16</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 196: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (dependency.getVendorEvidence().contains(confidence)) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;197</td> <td class="nbHitsCovered">&nbsp;16</td> <td class="src"><pre class="src">&nbsp; vendors = addEvidenceWithoutDuplicateTerms(vendors, dependency.getVendorEvidence(), confidence);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;195</td> <td class="nbHitsCovered">&nbsp;8</td> <td class="src"><pre class="src">&nbsp; confidence = reduceConfidence(confidence);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;196</td> <td class="nbHitsUncovered"><a title="Line 196: Conditional coverage 50% (1/2).">&nbsp;8</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 196: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (dependency.getVendorEvidence().contains(confidence)) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;197</td> <td class="nbHitsCovered">&nbsp;8</td> <td class="src"><pre class="src">&nbsp; vendors = addEvidenceWithoutDuplicateTerms(vendors, dependency.getVendorEvidence(), confidence);</pre></td></tr>
<tr> <td class="numLine">&nbsp;198</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;199</td> <td class="nbHitsCovered"><a title="Line 199: Conditional coverage 100% (2/2).">&nbsp;16</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 199: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (dependency.getProductEvidence().contains(confidence)) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;200</td> <td class="nbHitsCovered">&nbsp;14</td> <td class="src"><pre class="src">&nbsp; products = addEvidenceWithoutDuplicateTerms(products, dependency.getProductEvidence(), confidence);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;199</td> <td class="nbHitsCovered"><a title="Line 199: Conditional coverage 100% (2/2).">&nbsp;8</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 199: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (dependency.getProductEvidence().contains(confidence)) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;200</td> <td class="nbHitsCovered">&nbsp;7</td> <td class="src"><pre class="src">&nbsp; products = addEvidenceWithoutDuplicateTerms(products, dependency.getProductEvidence(), confidence);</pre></td></tr>
<tr> <td class="numLine">&nbsp;201</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;202</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="comment">/* bug fix for #40 - version evidence is not showing up as "used" in the reports if there is no</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;203</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * CPE identified. As such, we are "using" the evidence and ignoring the results. */</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;204</td> <td class="nbHitsCovered"><a title="Line 204: Conditional coverage 100% (2/2).">&nbsp;16</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 204: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (dependency.getVersionEvidence().contains(confidence)) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;205</td> <td class="nbHitsCovered">&nbsp;12</td> <td class="src"><pre class="src">&nbsp; addEvidenceWithoutDuplicateTerms(<span class="string">""</span>, dependency.getVersionEvidence(), confidence);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;204</td> <td class="nbHitsCovered"><a title="Line 204: Conditional coverage 100% (2/2).">&nbsp;8</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 204: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (dependency.getVersionEvidence().contains(confidence)) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;205</td> <td class="nbHitsCovered">&nbsp;6</td> <td class="src"><pre class="src">&nbsp; addEvidenceWithoutDuplicateTerms(<span class="string">""</span>, dependency.getVersionEvidence(), confidence);</pre></td></tr>
<tr> <td class="numLine">&nbsp;206</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;207</td> <td class="nbHitsCovered"><a title="Line 207: Conditional coverage 100% (2/2).">&nbsp;16</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 207: Conditional coverage 100% (2/2)."> } <span class="keyword">while</span> ((++ctr) &lt; 4);</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;208</td> <td class="nbHitsCovered">&nbsp;4</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;207</td> <td class="nbHitsCovered"><a title="Line 207: Conditional coverage 100% (2/2).">&nbsp;8</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 207: Conditional coverage 100% (2/2)."> } <span class="keyword">while</span> ((++ctr) &lt; 4);</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;208</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;209</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;210</td> <td class="nbHits">&nbsp;</td>
@@ -416,31 +416,31 @@
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;220</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">private</span> String addEvidenceWithoutDuplicateTerms(<span class="keyword">final</span> String text, <span class="keyword">final</span> EvidenceCollection ec, Confidence confidenceFilter) {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;221</td> <td class="nbHitsUncovered"><a title="Line 221: Conditional coverage 50% (1/2).">&nbsp;54</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 221: Conditional coverage 50% (1/2)."> <span class="keyword">final</span> String txt = (text == <span class="keyword">null</span>) ? <span class="string">""</span> : text;</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;222</td> <td class="nbHitsCovered">&nbsp;54</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> StringBuilder sb = <span class="keyword">new</span> StringBuilder(txt.length() + (20 * ec.size()));</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;223</td> <td class="nbHitsCovered">&nbsp;54</td> <td class="src"><pre class="src">&nbsp; sb.append(<span class="string">' '</span>).append(txt).append(<span class="string">' '</span>);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;224</td> <td class="nbHitsCovered"><a title="Line 224: Conditional coverage 100% (2/2).">&nbsp;54</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 224: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (Evidence e : ec.iterator(confidenceFilter)) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;225</td> <td class="nbHitsCovered">&nbsp;152</td> <td class="src"><pre class="src">&nbsp; String value = e.getValue();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;221</td> <td class="nbHitsUncovered"><a title="Line 221: Conditional coverage 50% (1/2).">&nbsp;27</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 221: Conditional coverage 50% (1/2)."> <span class="keyword">final</span> String txt = (text == <span class="keyword">null</span>) ? <span class="string">""</span> : text;</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;222</td> <td class="nbHitsCovered">&nbsp;27</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> StringBuilder sb = <span class="keyword">new</span> StringBuilder(txt.length() + (20 * ec.size()));</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;223</td> <td class="nbHitsCovered">&nbsp;27</td> <td class="src"><pre class="src">&nbsp; sb.append(<span class="string">' '</span>).append(txt).append(<span class="string">' '</span>);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;224</td> <td class="nbHitsCovered"><a title="Line 224: Conditional coverage 100% (2/2).">&nbsp;27</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 224: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (Evidence e : ec.iterator(confidenceFilter)) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;225</td> <td class="nbHitsCovered">&nbsp;76</td> <td class="src"><pre class="src">&nbsp; String value = e.getValue();</pre></td></tr>
<tr> <td class="numLine">&nbsp;226</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;227</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="comment">//hack to get around the fact that lucene does a really good job of recognizing domains and not</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;228</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="comment">// splitting them. TODO - put together a better lucene analyzer specific to the domain.</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;229</td> <td class="nbHitsCovered"><a title="Line 229: Conditional coverage 100% (2/2).">&nbsp;152</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 229: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (value.startsWith(<span class="string">"http://"</span>)) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;230</td> <td class="nbHitsCovered">&nbsp;8</td> <td class="src"><pre class="src">&nbsp; value = value.substring(7).replaceAll(<span class="string">"\\."</span>, <span class="string">" "</span>);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;229</td> <td class="nbHitsCovered"><a title="Line 229: Conditional coverage 100% (2/2).">&nbsp;76</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 229: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (value.startsWith(<span class="string">"http://"</span>)) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;230</td> <td class="nbHitsCovered">&nbsp;4</td> <td class="src"><pre class="src">&nbsp; value = value.substring(7).replaceAll(<span class="string">"\\."</span>, <span class="string">" "</span>);</pre></td></tr>
<tr> <td class="numLine">&nbsp;231</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;232</td> <td class="nbHitsUncovered"><a title="Line 232: Conditional coverage 50% (1/2).">&nbsp;152</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 232: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (value.startsWith(<span class="string">"https://"</span>)) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;232</td> <td class="nbHitsUncovered"><a title="Line 232: Conditional coverage 50% (1/2).">&nbsp;76</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 232: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (value.startsWith(<span class="string">"https://"</span>)) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;233</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; value = value.substring(8).replaceAll(<span class="string">"\\."</span>, <span class="string">" "</span>);</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;234</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;235</td> <td class="nbHitsCovered"><a title="Line 235: Conditional coverage 100% (2/2).">&nbsp;152</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 235: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (sb.indexOf(<span class="string">" "</span> + value + <span class="string">" "</span>) &lt; 0) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;236</td> <td class="nbHitsCovered">&nbsp;96</td> <td class="src"><pre class="src">&nbsp; sb.append(value).append(<span class="string">' '</span>);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;235</td> <td class="nbHitsCovered"><a title="Line 235: Conditional coverage 100% (2/2).">&nbsp;76</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 235: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (sb.indexOf(<span class="string">" "</span> + value + <span class="string">" "</span>) &lt; 0) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;236</td> <td class="nbHitsCovered">&nbsp;48</td> <td class="src"><pre class="src">&nbsp; sb.append(value).append(<span class="string">' '</span>);</pre></td></tr>
<tr> <td class="numLine">&nbsp;237</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;238</td> <td class="nbHitsCovered">&nbsp;152</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;239</td> <td class="nbHitsCovered">&nbsp;54</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> sb.toString().trim();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;238</td> <td class="nbHitsCovered">&nbsp;76</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;239</td> <td class="nbHitsCovered">&nbsp;27</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> sb.toString().trim();</pre></td></tr>
<tr> <td class="numLine">&nbsp;240</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;241</td> <td class="nbHits">&nbsp;</td>
@@ -459,13 +459,13 @@
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;248</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">private</span> Confidence reduceConfidence(<span class="keyword">final</span> Confidence c) {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;249</td> <td class="nbHitsCovered"><a title="Line 249: Conditional coverage 100% (2/2).">&nbsp;16</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 249: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (c == Confidence.HIGHEST) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;250</td> <td class="nbHitsCovered">&nbsp;4</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> Confidence.HIGH;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;251</td> <td class="nbHitsCovered"><a title="Line 251: Conditional coverage 100% (2/2).">&nbsp;12</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 251: Conditional coverage 100% (2/2)."> } <span class="keyword">else</span> <span class="keyword">if</span> (c == Confidence.HIGH) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;252</td> <td class="nbHitsCovered">&nbsp;4</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> Confidence.MEDIUM;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;249</td> <td class="nbHitsCovered"><a title="Line 249: Conditional coverage 100% (2/2).">&nbsp;8</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 249: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (c == Confidence.HIGHEST) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;250</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> Confidence.HIGH;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;251</td> <td class="nbHitsCovered"><a title="Line 251: Conditional coverage 100% (2/2).">&nbsp;6</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 251: Conditional coverage 100% (2/2)."> } <span class="keyword">else</span> <span class="keyword">if</span> (c == Confidence.HIGH) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;252</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> Confidence.MEDIUM;</pre></td></tr>
<tr> <td class="numLine">&nbsp;253</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; } <span class="keyword">else</span> {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;254</td> <td class="nbHitsCovered">&nbsp;8</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> Confidence.LOW;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;254</td> <td class="nbHitsCovered">&nbsp;4</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> Confidence.LOW;</pre></td></tr>
<tr> <td class="numLine">&nbsp;255</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;256</td> <td class="nbHits">&nbsp;</td>
@@ -514,23 +514,23 @@
<td class="src"><pre class="src">&nbsp; Set&lt;String&gt; vendorWeightings, Set&lt;String&gt; productWeightings)</pre></td></tr>
<tr> <td class="numLine">&nbsp;278</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">throws</span> CorruptIndexException, IOException, ParseException {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;279</td> <td class="nbHitsCovered">&nbsp;16</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> ArrayList&lt;IndexEntry&gt; ret = <span class="keyword">new</span> ArrayList&lt;IndexEntry&gt;(MAX_QUERY_RESULTS);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;279</td> <td class="nbHitsCovered">&nbsp;8</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> ArrayList&lt;IndexEntry&gt; ret = <span class="keyword">new</span> ArrayList&lt;IndexEntry&gt;(MAX_QUERY_RESULTS);</pre></td></tr>
<tr> <td class="numLine">&nbsp;280</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;281</td> <td class="nbHitsCovered">&nbsp;16</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> String searchString = buildSearch(vendor, product, vendorWeightings, productWeightings);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;282</td> <td class="nbHitsUncovered"><a title="Line 282: Conditional coverage 50% (1/2).">&nbsp;16</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 282: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (searchString == <span class="keyword">null</span>) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;281</td> <td class="nbHitsCovered">&nbsp;8</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> String searchString = buildSearch(vendor, product, vendorWeightings, productWeightings);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;282</td> <td class="nbHitsUncovered"><a title="Line 282: Conditional coverage 50% (1/2).">&nbsp;8</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 282: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (searchString == <span class="keyword">null</span>) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;283</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">return</span> ret;</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;284</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;285</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;286</td> <td class="nbHitsCovered">&nbsp;16</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> TopDocs docs = cpe.search(searchString, MAX_QUERY_RESULTS);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;287</td> <td class="nbHitsCovered"><a title="Line 287: Conditional coverage 100% (2/2).">&nbsp;416</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 287: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (ScoreDoc d : docs.scoreDocs) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;288</td> <td class="nbHitsCovered"><a title="Line 288: Conditional coverage 100% (2/2).">&nbsp;400</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 288: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (d.score &gt;= 0.08) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;289</td> <td class="nbHitsCovered">&nbsp;108</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> Document doc = cpe.getDocument(d.doc);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;290</td> <td class="nbHitsCovered">&nbsp;108</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> IndexEntry entry = <span class="keyword">new</span> IndexEntry();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;291</td> <td class="nbHitsCovered">&nbsp;108</td> <td class="src"><pre class="src">&nbsp; entry.setVendor(doc.get(Fields.VENDOR));</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;292</td> <td class="nbHitsCovered">&nbsp;108</td> <td class="src"><pre class="src">&nbsp; entry.setProduct(doc.get(Fields.PRODUCT));</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;286</td> <td class="nbHitsCovered">&nbsp;8</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> TopDocs docs = cpe.search(searchString, MAX_QUERY_RESULTS);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;287</td> <td class="nbHitsCovered"><a title="Line 287: Conditional coverage 100% (2/2).">&nbsp;208</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 287: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (ScoreDoc d : docs.scoreDocs) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;288</td> <td class="nbHitsCovered"><a title="Line 288: Conditional coverage 100% (2/2).">&nbsp;200</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 288: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (d.score &gt;= 0.08) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;289</td> <td class="nbHitsCovered">&nbsp;54</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> Document doc = cpe.getDocument(d.doc);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;290</td> <td class="nbHitsCovered">&nbsp;54</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> IndexEntry entry = <span class="keyword">new</span> IndexEntry();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;291</td> <td class="nbHitsCovered">&nbsp;54</td> <td class="src"><pre class="src">&nbsp; entry.setVendor(doc.get(Fields.VENDOR));</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;292</td> <td class="nbHitsCovered">&nbsp;54</td> <td class="src"><pre class="src">&nbsp; entry.setProduct(doc.get(Fields.PRODUCT));</pre></td></tr>
<tr> <td class="numLine">&nbsp;293</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment">// if (d.score &lt; 0.08) {</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;294</td> <td class="nbHits">&nbsp;</td>
@@ -545,16 +545,16 @@
<td class="src"><pre class="src">&nbsp;<span class="comment">// System.out.println(d.score);</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;299</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment">// }</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;300</td> <td class="nbHitsCovered">&nbsp;108</td> <td class="src"><pre class="src">&nbsp; entry.setSearchScore(d.score);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;301</td> <td class="nbHitsUncovered"><a title="Line 301: Conditional coverage 50% (1/2).">&nbsp;108</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 301: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (!ret.contains(entry)) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;302</td> <td class="nbHitsCovered">&nbsp;108</td> <td class="src"><pre class="src">&nbsp; ret.add(entry);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;300</td> <td class="nbHitsCovered">&nbsp;54</td> <td class="src"><pre class="src">&nbsp; entry.setSearchScore(d.score);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;301</td> <td class="nbHitsUncovered"><a title="Line 301: Conditional coverage 50% (1/2).">&nbsp;54</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 301: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (!ret.contains(entry)) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;302</td> <td class="nbHitsCovered">&nbsp;54</td> <td class="src"><pre class="src">&nbsp; ret.add(entry);</pre></td></tr>
<tr> <td class="numLine">&nbsp;303</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;304</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;305</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;306</td> <td class="nbHitsCovered">&nbsp;16</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> ret;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;306</td> <td class="nbHitsCovered">&nbsp;8</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> ret;</pre></td></tr>
<tr> <td class="numLine">&nbsp;307</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;308</td> <td class="nbHits">&nbsp;</td>
@@ -591,23 +591,23 @@
<td class="src"><pre class="src">&nbsp; <span class="keyword">protected</span> String buildSearch(String vendor, String product,</pre></td></tr>
<tr> <td class="numLine">&nbsp;324</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; Set&lt;String&gt; vendorWeighting, Set&lt;String&gt; productWeightings) {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;325</td> <td class="nbHitsCovered">&nbsp;16</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> String v = vendor; <span class="comment">//.replaceAll("[^\\w\\d]", " ");</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;326</td> <td class="nbHitsCovered">&nbsp;16</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> String p = product; <span class="comment">//.replaceAll("[^\\w\\d]", " ");</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;327</td> <td class="nbHitsCovered">&nbsp;16</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> StringBuilder sb = <span class="keyword">new</span> StringBuilder(v.length() + p.length()</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;325</td> <td class="nbHitsCovered">&nbsp;8</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> String v = vendor; <span class="comment">//.replaceAll("[^\\w\\d]", " ");</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;326</td> <td class="nbHitsCovered">&nbsp;8</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> String p = product; <span class="comment">//.replaceAll("[^\\w\\d]", " ");</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;327</td> <td class="nbHitsCovered">&nbsp;8</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> StringBuilder sb = <span class="keyword">new</span> StringBuilder(v.length() + p.length()</pre></td></tr>
<tr> <td class="numLine">&nbsp;328</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; + Fields.PRODUCT.length() + Fields.VENDOR.length() + STRING_BUILDER_BUFFER);</pre></td></tr>
<tr> <td class="numLine">&nbsp;329</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;330</td> <td class="nbHitsUncovered"><a title="Line 330: Conditional coverage 50% (1/2).">&nbsp;16</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 330: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (!appendWeightedSearch(sb, Fields.PRODUCT, p, productWeightings)) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;330</td> <td class="nbHitsUncovered"><a title="Line 330: Conditional coverage 50% (1/2).">&nbsp;8</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 330: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (!appendWeightedSearch(sb, Fields.PRODUCT, p, productWeightings)) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;331</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">return</span> <span class="keyword">null</span>;</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;332</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;333</td> <td class="nbHitsCovered">&nbsp;16</td> <td class="src"><pre class="src">&nbsp; sb.append(<span class="string">" AND "</span>);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;334</td> <td class="nbHitsUncovered"><a title="Line 334: Conditional coverage 50% (1/2).">&nbsp;16</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 334: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (!appendWeightedSearch(sb, Fields.VENDOR, v, vendorWeighting)) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;333</td> <td class="nbHitsCovered">&nbsp;8</td> <td class="src"><pre class="src">&nbsp; sb.append(<span class="string">" AND "</span>);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;334</td> <td class="nbHitsUncovered"><a title="Line 334: Conditional coverage 50% (1/2).">&nbsp;8</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 334: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (!appendWeightedSearch(sb, Fields.VENDOR, v, vendorWeighting)) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;335</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">return</span> <span class="keyword">null</span>;</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;336</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;337</td> <td class="nbHitsCovered">&nbsp;16</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> sb.toString();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;337</td> <td class="nbHitsCovered">&nbsp;8</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> sb.toString();</pre></td></tr>
<tr> <td class="numLine">&nbsp;338</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;339</td> <td class="nbHits">&nbsp;</td>
@@ -636,47 +636,47 @@
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;351</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">private</span> <span class="keyword">boolean</span> appendWeightedSearch(StringBuilder sb, String field, String searchText, Set&lt;String&gt; weightedText) {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;352</td> <td class="nbHitsCovered">&nbsp;32</td> <td class="src"><pre class="src">&nbsp; sb.append(<span class="string">" "</span>).append(field).append(<span class="string">":( "</span>);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;352</td> <td class="nbHitsCovered">&nbsp;16</td> <td class="src"><pre class="src">&nbsp; sb.append(<span class="string">" "</span>).append(field).append(<span class="string">":( "</span>);</pre></td></tr>
<tr> <td class="numLine">&nbsp;353</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;354</td> <td class="nbHitsCovered">&nbsp;32</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> String cleanText = cleanseText(searchText);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;354</td> <td class="nbHitsCovered">&nbsp;16</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> String cleanText = cleanseText(searchText);</pre></td></tr>
<tr> <td class="numLine">&nbsp;355</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;356</td> <td class="nbHitsUncovered"><a title="Line 356: Conditional coverage 50% (1/2).">&nbsp;32</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 356: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (<span class="string">""</span>.equals(cleanText)) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;356</td> <td class="nbHitsUncovered"><a title="Line 356: Conditional coverage 50% (1/2).">&nbsp;16</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 356: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (<span class="string">""</span>.equals(cleanText)) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;357</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">return</span> <span class="keyword">false</span>;</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;358</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;359</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;360</td> <td class="nbHitsUncovered"><a title="Line 360: Conditional coverage 50% (2/4) [each condition: 50%, 50%].">&nbsp;32</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 360: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> <span class="keyword">if</span> (weightedText == <span class="keyword">null</span> || weightedText.isEmpty()) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;360</td> <td class="nbHitsUncovered"><a title="Line 360: Conditional coverage 50% (2/4) [each condition: 50%, 50%].">&nbsp;16</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 360: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> <span class="keyword">if</span> (weightedText == <span class="keyword">null</span> || weightedText.isEmpty()) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;361</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; LuceneUtils.appendEscapedLuceneQuery(sb, cleanText);</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;362</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; } <span class="keyword">else</span> {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;363</td> <td class="nbHitsCovered">&nbsp;32</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> StringTokenizer tokens = <span class="keyword">new</span> StringTokenizer(cleanText);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;364</td> <td class="nbHitsCovered"><a title="Line 364: Conditional coverage 100% (2/2).">&nbsp;480</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 364: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (tokens.hasMoreElements()) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;365</td> <td class="nbHitsCovered">&nbsp;448</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> String word = tokens.nextToken();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;366</td> <td class="nbHitsCovered">&nbsp;448</td> <td class="src"><pre class="src">&nbsp; String temp = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;367</td> <td class="nbHitsCovered"><a title="Line 367: Conditional coverage 100% (2/2).">&nbsp;448</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 367: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (String weighted : weightedText) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;368</td> <td class="nbHitsCovered">&nbsp;816</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> String weightedStr = cleanseText(weighted);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;369</td> <td class="nbHitsCovered"><a title="Line 369: Conditional coverage 100% (2/2).">&nbsp;816</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 369: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (equalsIgnoreCaseAndNonAlpha(word, weightedStr)) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;370</td> <td class="nbHitsCovered">&nbsp;60</td> <td class="src"><pre class="src">&nbsp; temp = LuceneUtils.escapeLuceneQuery(word) + WEIGHTING_BOOST;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;371</td> <td class="nbHitsUncovered"><a title="Line 371: Conditional coverage 50% (1/2).">&nbsp;60</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 371: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (!word.equalsIgnoreCase(weightedStr)) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;363</td> <td class="nbHitsCovered">&nbsp;16</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> StringTokenizer tokens = <span class="keyword">new</span> StringTokenizer(cleanText);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;364</td> <td class="nbHitsCovered"><a title="Line 364: Conditional coverage 100% (2/2).">&nbsp;240</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 364: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (tokens.hasMoreElements()) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;365</td> <td class="nbHitsCovered">&nbsp;224</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> String word = tokens.nextToken();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;366</td> <td class="nbHitsCovered">&nbsp;224</td> <td class="src"><pre class="src">&nbsp; String temp = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;367</td> <td class="nbHitsCovered"><a title="Line 367: Conditional coverage 100% (2/2).">&nbsp;224</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 367: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (String weighted : weightedText) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;368</td> <td class="nbHitsCovered">&nbsp;408</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> String weightedStr = cleanseText(weighted);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;369</td> <td class="nbHitsCovered"><a title="Line 369: Conditional coverage 100% (2/2).">&nbsp;408</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 369: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (equalsIgnoreCaseAndNonAlpha(word, weightedStr)) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;370</td> <td class="nbHitsCovered">&nbsp;30</td> <td class="src"><pre class="src">&nbsp; temp = LuceneUtils.escapeLuceneQuery(word) + WEIGHTING_BOOST;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;371</td> <td class="nbHitsUncovered"><a title="Line 371: Conditional coverage 50% (1/2).">&nbsp;30</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 371: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (!word.equalsIgnoreCase(weightedStr)) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;372</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; temp += <span class="string">" "</span> + LuceneUtils.escapeLuceneQuery(weightedStr) + WEIGHTING_BOOST;</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;373</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;374</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;375</td> <td class="nbHitsCovered">&nbsp;816</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;376</td> <td class="nbHitsCovered"><a title="Line 376: Conditional coverage 100% (2/2).">&nbsp;448</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 376: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (temp == <span class="keyword">null</span>) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;377</td> <td class="nbHitsCovered">&nbsp;388</td> <td class="src"><pre class="src">&nbsp; temp = LuceneUtils.escapeLuceneQuery(word);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;375</td> <td class="nbHitsCovered">&nbsp;408</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;376</td> <td class="nbHitsCovered"><a title="Line 376: Conditional coverage 100% (2/2).">&nbsp;224</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 376: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (temp == <span class="keyword">null</span>) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;377</td> <td class="nbHitsCovered">&nbsp;194</td> <td class="src"><pre class="src">&nbsp; temp = LuceneUtils.escapeLuceneQuery(word);</pre></td></tr>
<tr> <td class="numLine">&nbsp;378</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;379</td> <td class="nbHitsCovered">&nbsp;448</td> <td class="src"><pre class="src">&nbsp; sb.append(<span class="string">" "</span>).append(temp);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;380</td> <td class="nbHitsCovered">&nbsp;448</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;379</td> <td class="nbHitsCovered">&nbsp;224</td> <td class="src"><pre class="src">&nbsp; sb.append(<span class="string">" "</span>).append(temp);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;380</td> <td class="nbHitsCovered">&nbsp;224</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;381</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;382</td> <td class="nbHitsCovered">&nbsp;32</td> <td class="src"><pre class="src">&nbsp; sb.append(<span class="string">" ) "</span>);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;383</td> <td class="nbHitsCovered">&nbsp;32</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> <span class="keyword">true</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;382</td> <td class="nbHitsCovered">&nbsp;16</td> <td class="src"><pre class="src">&nbsp; sb.append(<span class="string">" ) "</span>);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;383</td> <td class="nbHitsCovered">&nbsp;16</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> <span class="keyword">true</span>;</pre></td></tr>
<tr> <td class="numLine">&nbsp;384</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;385</td> <td class="nbHits">&nbsp;</td>
@@ -695,7 +695,7 @@
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;392</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">private</span> String cleanseText(String text) {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;393</td> <td class="nbHitsCovered">&nbsp;848</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> text.replaceAll(CLEANSE_CHARACTER_RX, <span class="string">" "</span>);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;393</td> <td class="nbHitsCovered">&nbsp;424</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> text.replaceAll(CLEANSE_CHARACTER_RX, <span class="string">" "</span>);</pre></td></tr>
<tr> <td class="numLine">&nbsp;394</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;395</td> <td class="nbHits">&nbsp;</td>
@@ -716,15 +716,15 @@
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;403</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">private</span> <span class="keyword">boolean</span> equalsIgnoreCaseAndNonAlpha(String l, String r) {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;404</td> <td class="nbHitsUncovered"><a title="Line 404: Conditional coverage 50% (2/4) [each condition: 50%, 50%].">&nbsp;816</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 404: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> <span class="keyword">if</span> (l == <span class="keyword">null</span> || r == <span class="keyword">null</span>) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;404</td> <td class="nbHitsUncovered"><a title="Line 404: Conditional coverage 50% (2/4) [each condition: 50%, 50%].">&nbsp;408</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 404: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> <span class="keyword">if</span> (l == <span class="keyword">null</span> || r == <span class="keyword">null</span>) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;405</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">return</span> <span class="keyword">false</span>;</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;406</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;407</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;408</td> <td class="nbHitsCovered">&nbsp;816</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> String left = l.replaceAll(CLEANSE_NONALPHA_RX, <span class="string">""</span>);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;409</td> <td class="nbHitsCovered">&nbsp;816</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> String right = r.replaceAll(CLEANSE_NONALPHA_RX, <span class="string">""</span>);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;410</td> <td class="nbHitsCovered">&nbsp;816</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> left.equalsIgnoreCase(right);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;408</td> <td class="nbHitsCovered">&nbsp;408</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> String left = l.replaceAll(CLEANSE_NONALPHA_RX, <span class="string">""</span>);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;409</td> <td class="nbHitsCovered">&nbsp;408</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> String right = r.replaceAll(CLEANSE_NONALPHA_RX, <span class="string">""</span>);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;410</td> <td class="nbHitsCovered">&nbsp;408</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> left.equalsIgnoreCase(right);</pre></td></tr>
<tr> <td class="numLine">&nbsp;411</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;412</td> <td class="nbHits">&nbsp;</td>
@@ -747,18 +747,18 @@
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;421</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">private</span> <span class="keyword">boolean</span> verifyEntry(<span class="keyword">final</span> IndexEntry entry, <span class="keyword">final</span> Dependency dependency) {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;422</td> <td class="nbHitsCovered">&nbsp;108</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">boolean</span> isValid = <span class="keyword">false</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;422</td> <td class="nbHitsCovered">&nbsp;54</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">boolean</span> isValid = <span class="keyword">false</span>;</pre></td></tr>
<tr> <td class="numLine">&nbsp;423</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;424</td> <td class="nbHitsCovered"><a title="Line 424: Conditional coverage 100% (4/4) [each condition: 100%, 100%].">&nbsp;108</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 424: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> <span class="keyword">if</span> (collectionContainsString(dependency.getProductEvidence(), entry.getProduct())</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;424</td> <td class="nbHitsCovered"><a title="Line 424: Conditional coverage 100% (4/4) [each condition: 100%, 100%].">&nbsp;54</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 424: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> <span class="keyword">if</span> (collectionContainsString(dependency.getProductEvidence(), entry.getProduct())</a></pre></td></tr>
<tr> <td class="numLine">&nbsp;425</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; &amp;&amp; collectionContainsString(dependency.getVendorEvidence(), entry.getVendor())) {</pre></td></tr>
<tr> <td class="numLine">&nbsp;426</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="comment">//&amp;&amp; collectionContainsVersion(dependency.getVersionEvidence(), entry.getVersion())</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;427</td> <td class="nbHitsCovered">&nbsp;8</td> <td class="src"><pre class="src">&nbsp; isValid = <span class="keyword">true</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;427</td> <td class="nbHitsCovered">&nbsp;4</td> <td class="src"><pre class="src">&nbsp; isValid = <span class="keyword">true</span>;</pre></td></tr>
<tr> <td class="numLine">&nbsp;428</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;429</td> <td class="nbHitsCovered">&nbsp;108</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> isValid;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;429</td> <td class="nbHitsCovered">&nbsp;54</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> isValid;</pre></td></tr>
<tr> <td class="numLine">&nbsp;430</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;431</td> <td class="nbHits">&nbsp;</td>
@@ -803,14 +803,14 @@
<td class="src"><pre class="src">&nbsp; <span class="comment">//&lt;/editor-fold&gt;</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;451</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="comment">//TODO - likely need to change the split... not sure if this will work for CPE with special chars</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;452</td> <td class="nbHitsUncovered"><a title="Line 452: Conditional coverage 50% (1/2).">&nbsp;118</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 452: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (text == <span class="keyword">null</span>) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;452</td> <td class="nbHitsUncovered"><a title="Line 452: Conditional coverage 50% (1/2).">&nbsp;59</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 452: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (text == <span class="keyword">null</span>) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;453</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">return</span> <span class="keyword">false</span>;</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;454</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;455</td> <td class="nbHitsCovered">&nbsp;118</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> String[] words = text.split(<span class="string">"[\\s_-]"</span>);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;456</td> <td class="nbHitsCovered">&nbsp;118</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> List&lt;String&gt; list = <span class="keyword">new</span> ArrayList&lt;String&gt;();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;457</td> <td class="nbHitsCovered">&nbsp;118</td> <td class="src"><pre class="src">&nbsp; String tempWord = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;458</td> <td class="nbHitsCovered"><a title="Line 458: Conditional coverage 100% (2/2).">&nbsp;348</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 458: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (String word : words) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;455</td> <td class="nbHitsCovered">&nbsp;59</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> String[] words = text.split(<span class="string">"[\\s_-]"</span>);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;456</td> <td class="nbHitsCovered">&nbsp;59</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> List&lt;String&gt; list = <span class="keyword">new</span> ArrayList&lt;String&gt;();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;457</td> <td class="nbHitsCovered">&nbsp;59</td> <td class="src"><pre class="src">&nbsp; String tempWord = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;458</td> <td class="nbHitsCovered"><a title="Line 458: Conditional coverage 100% (2/2).">&nbsp;174</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 458: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (String word : words) {</a></pre></td></tr>
<tr> <td class="numLine">&nbsp;459</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="comment">/*</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;460</td> <td class="nbHits">&nbsp;</td>
@@ -819,28 +819,28 @@
<td class="src"><pre class="src">&nbsp;<span class="comment"> so { "m", "core", "sample" } -&gt; { "mcore", "sample" }</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;462</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;463</td> <td class="nbHitsCovered"><a title="Line 463: Conditional coverage 100% (2/2).">&nbsp;230</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 463: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (tempWord != <span class="keyword">null</span>) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;464</td> <td class="nbHitsCovered">&nbsp;8</td> <td class="src"><pre class="src">&nbsp; list.add(tempWord + word);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;465</td> <td class="nbHitsCovered">&nbsp;8</td> <td class="src"><pre class="src">&nbsp; tempWord = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;466</td> <td class="nbHitsCovered"><a title="Line 466: Conditional coverage 100% (2/2).">&nbsp;222</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 466: Conditional coverage 100% (2/2)."> } <span class="keyword">else</span> <span class="keyword">if</span> (word.length() &lt;= 2) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;467</td> <td class="nbHitsCovered">&nbsp;8</td> <td class="src"><pre class="src">&nbsp; tempWord = word;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;463</td> <td class="nbHitsCovered"><a title="Line 463: Conditional coverage 100% (2/2).">&nbsp;115</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 463: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (tempWord != <span class="keyword">null</span>) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;464</td> <td class="nbHitsCovered">&nbsp;4</td> <td class="src"><pre class="src">&nbsp; list.add(tempWord + word);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;465</td> <td class="nbHitsCovered">&nbsp;4</td> <td class="src"><pre class="src">&nbsp; tempWord = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;466</td> <td class="nbHitsCovered"><a title="Line 466: Conditional coverage 100% (2/2).">&nbsp;111</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 466: Conditional coverage 100% (2/2)."> } <span class="keyword">else</span> <span class="keyword">if</span> (word.length() &lt;= 2) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;467</td> <td class="nbHitsCovered">&nbsp;4</td> <td class="src"><pre class="src">&nbsp; tempWord = word;</pre></td></tr>
<tr> <td class="numLine">&nbsp;468</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; } <span class="keyword">else</span> {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;469</td> <td class="nbHitsCovered">&nbsp;214</td> <td class="src"><pre class="src">&nbsp; list.add(word);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;469</td> <td class="nbHitsCovered">&nbsp;107</td> <td class="src"><pre class="src">&nbsp; list.add(word);</pre></td></tr>
<tr> <td class="numLine">&nbsp;470</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;471</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;472</td> <td class="nbHitsUncovered"><a title="Line 472: Conditional coverage 25% (1/4) [each condition: 50%, 0%].">&nbsp;118</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 472: Conditional coverage 25% (1/4) [each condition: 50%, 0%]."> <span class="keyword">if</span> (tempWord != <span class="keyword">null</span> &amp;&amp; !list.isEmpty()) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;472</td> <td class="nbHitsUncovered"><a title="Line 472: Conditional coverage 25% (1/4) [each condition: 50%, 0%].">&nbsp;59</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 472: Conditional coverage 25% (1/4) [each condition: 50%, 0%]."> <span class="keyword">if</span> (tempWord != <span class="keyword">null</span> &amp;&amp; !list.isEmpty()) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;473</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">final</span> String tmp = list.get(list.size() - 1) + tempWord;</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;474</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; list.add(tmp);</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;475</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;476</td> <td class="nbHitsCovered">&nbsp;118</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">boolean</span> contains = <span class="keyword">true</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;477</td> <td class="nbHitsCovered"><a title="Line 477: Conditional coverage 100% (2/2).">&nbsp;118</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 477: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (String word : list) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;478</td> <td class="nbHitsCovered">&nbsp;222</td> <td class="src"><pre class="src">&nbsp; contains &amp;= ec.containsUsedString(word);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;479</td> <td class="nbHitsCovered">&nbsp;222</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;480</td> <td class="nbHitsCovered">&nbsp;118</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> contains;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;476</td> <td class="nbHitsCovered">&nbsp;59</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">boolean</span> contains = <span class="keyword">true</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;477</td> <td class="nbHitsCovered"><a title="Line 477: Conditional coverage 100% (2/2).">&nbsp;59</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 477: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (String word : list) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;478</td> <td class="nbHitsCovered">&nbsp;111</td> <td class="src"><pre class="src">&nbsp; contains &amp;= ec.containsUsedString(word);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;479</td> <td class="nbHitsCovered">&nbsp;111</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;480</td> <td class="nbHitsCovered">&nbsp;59</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> contains;</pre></td></tr>
<tr> <td class="numLine">&nbsp;481</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;482</td> <td class="nbHits">&nbsp;</td>
@@ -865,15 +865,15 @@
<td class="src"><pre class="src">&nbsp; <span class="keyword">public</span> <span class="keyword">void</span> analyze(Dependency dependency, Engine engine) <span class="keyword">throws</span> AnalysisException {</pre></td></tr>
<tr> <td class="numLine">&nbsp;492</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">try</span> {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;493</td> <td class="nbHitsCovered">&nbsp;4</td> <td class="src"><pre class="src">&nbsp; determineCPE(dependency);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;493</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; determineCPE(dependency);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;494</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; } <span class="keyword">catch</span> (CorruptIndexException ex) {</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;495</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">throw</span> <span class="keyword">new</span> AnalysisException(<span class="string">"CPE Index is corrupt."</span>, ex);</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;496</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; } <span class="keyword">catch</span> (IOException ex) {</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;497</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">throw</span> <span class="keyword">new</span> AnalysisException(<span class="string">"Failure opening the CPE Index."</span>, ex);</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;498</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; } <span class="keyword">catch</span> (ParseException ex) {</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;499</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">throw</span> <span class="keyword">new</span> AnalysisException(<span class="string">"Unable to parse the generated Lucene query for this dependency."</span>, ex);</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;500</td> <td class="nbHitsCovered">&nbsp;4</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;501</td> <td class="nbHitsCovered">&nbsp;4</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;500</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;501</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;502</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;503</td> <td class="nbHits">&nbsp;</td>
@@ -898,45 +898,45 @@
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;513</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">private</span> <span class="keyword">void</span> determineIdentifiers(Dependency dependency, String vendor, String product) <span class="keyword">throws</span> UnsupportedEncodingException {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;514</td> <td class="nbHitsCovered">&nbsp;8</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> Set&lt;VulnerableSoftware&gt; cpes = cve.getCPEs(vendor, product);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;515</td> <td class="nbHitsCovered">&nbsp;8</td> <td class="src"><pre class="src">&nbsp; DependencyVersion bestGuess = <span class="keyword">new</span> DependencyVersion(<span class="string">"-"</span>);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;516</td> <td class="nbHitsCovered">&nbsp;8</td> <td class="src"><pre class="src">&nbsp; Confidence bestGuessConf = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;517</td> <td class="nbHitsCovered">&nbsp;8</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> List&lt;IdentifierMatch&gt; collected = <span class="keyword">new</span> ArrayList&lt;IdentifierMatch&gt;();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;518</td> <td class="nbHitsCovered"><a title="Line 518: Conditional coverage 100% (2/2).">&nbsp;40</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 518: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (Confidence conf : Confidence.values()) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;519</td> <td class="nbHitsCovered"><a title="Line 519: Conditional coverage 100% (2/2).">&nbsp;32</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 519: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (Evidence evidence : dependency.getVersionEvidence().iterator(conf)) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;520</td> <td class="nbHitsCovered">&nbsp;32</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> DependencyVersion evVer = DependencyVersionUtil.parseVersion(evidence.getValue());</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;521</td> <td class="nbHitsUncovered"><a title="Line 521: Conditional coverage 50% (1/2).">&nbsp;32</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 521: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (evVer == <span class="keyword">null</span>) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;514</td> <td class="nbHitsCovered">&nbsp;4</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> Set&lt;VulnerableSoftware&gt; cpes = cve.getCPEs(vendor, product);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;515</td> <td class="nbHitsCovered">&nbsp;4</td> <td class="src"><pre class="src">&nbsp; DependencyVersion bestGuess = <span class="keyword">new</span> DependencyVersion(<span class="string">"-"</span>);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;516</td> <td class="nbHitsCovered">&nbsp;4</td> <td class="src"><pre class="src">&nbsp; Confidence bestGuessConf = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;517</td> <td class="nbHitsCovered">&nbsp;4</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> List&lt;IdentifierMatch&gt; collected = <span class="keyword">new</span> ArrayList&lt;IdentifierMatch&gt;();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;518</td> <td class="nbHitsCovered"><a title="Line 518: Conditional coverage 100% (2/2).">&nbsp;20</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 518: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (Confidence conf : Confidence.values()) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;519</td> <td class="nbHitsCovered"><a title="Line 519: Conditional coverage 100% (2/2).">&nbsp;16</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 519: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (Evidence evidence : dependency.getVersionEvidence().iterator(conf)) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;520</td> <td class="nbHitsCovered">&nbsp;16</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> DependencyVersion evVer = DependencyVersionUtil.parseVersion(evidence.getValue());</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;521</td> <td class="nbHitsUncovered"><a title="Line 521: Conditional coverage 50% (1/2).">&nbsp;16</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 521: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (evVer == <span class="keyword">null</span>) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;522</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">continue</span>;</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;523</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;524</td> <td class="nbHitsCovered"><a title="Line 524: Conditional coverage 100% (2/2).">&nbsp;32</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 524: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (VulnerableSoftware vs : cpes) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;524</td> <td class="nbHitsCovered"><a title="Line 524: Conditional coverage 100% (2/2).">&nbsp;16</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 524: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (VulnerableSoftware vs : cpes) {</a></pre></td></tr>
<tr> <td class="numLine">&nbsp;525</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; DependencyVersion dbVer;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;526</td> <td class="nbHitsUncovered"><a title="Line 526: Conditional coverage 75% (3/4) [each condition: 100%, 50%].">&nbsp;1248</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 526: Conditional coverage 75% (3/4) [each condition: 100%, 50%]."> <span class="keyword">if</span> (vs.getRevision() != <span class="keyword">null</span> &amp;&amp; !vs.getRevision().isEmpty()) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;527</td> <td class="nbHitsCovered">&nbsp;512</td> <td class="src"><pre class="src">&nbsp; dbVer = DependencyVersionUtil.parseVersion(vs.getVersion() + <span class="string">"."</span> + vs.getRevision());</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;526</td> <td class="nbHitsUncovered"><a title="Line 526: Conditional coverage 75% (3/4) [each condition: 100%, 50%].">&nbsp;624</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 526: Conditional coverage 75% (3/4) [each condition: 100%, 50%]."> <span class="keyword">if</span> (vs.getRevision() != <span class="keyword">null</span> &amp;&amp; !vs.getRevision().isEmpty()) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;527</td> <td class="nbHitsCovered">&nbsp;256</td> <td class="src"><pre class="src">&nbsp; dbVer = DependencyVersionUtil.parseVersion(vs.getVersion() + <span class="string">"."</span> + vs.getRevision());</pre></td></tr>
<tr> <td class="numLine">&nbsp;528</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; } <span class="keyword">else</span> {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;529</td> <td class="nbHitsCovered">&nbsp;736</td> <td class="src"><pre class="src">&nbsp; dbVer = DependencyVersionUtil.parseVersion(vs.getVersion());</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;529</td> <td class="nbHitsCovered">&nbsp;368</td> <td class="src"><pre class="src">&nbsp; dbVer = DependencyVersionUtil.parseVersion(vs.getVersion());</pre></td></tr>
<tr> <td class="numLine">&nbsp;530</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;531</td> <td class="nbHitsUncovered"><a title="Line 531: Conditional coverage 75% (3/4) [each condition: 50%, 100%].">&nbsp;1248</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 531: Conditional coverage 75% (3/4) [each condition: 50%, 100%]."> <span class="keyword">if</span> (dbVer == <span class="keyword">null</span> <span class="comment">//special case, no version specified - everything is vulnerable</span></a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;531</td> <td class="nbHitsUncovered"><a title="Line 531: Conditional coverage 75% (3/4) [each condition: 50%, 100%].">&nbsp;624</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 531: Conditional coverage 75% (3/4) [each condition: 50%, 100%]."> <span class="keyword">if</span> (dbVer == <span class="keyword">null</span> <span class="comment">//special case, no version specified - everything is vulnerable</span></a></span></pre></td></tr>
<tr> <td class="numLine">&nbsp;532</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; || evVer.equals(dbVer)) { <span class="comment">//yeah! exact match</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;533</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;534</td> <td class="nbHitsCovered">&nbsp;32</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> String url = String.format(NVD_SEARCH_URL, URLEncoder.encode(vs.getName(), <span class="string">"UTF-8"</span>));</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;535</td> <td class="nbHitsCovered">&nbsp;32</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> IdentifierMatch match = <span class="keyword">new</span> IdentifierMatch(<span class="string">"cpe"</span>, vs.getName(), url, IdentifierConfidence.EXACT_MATCH, conf);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;536</td> <td class="nbHitsCovered">&nbsp;32</td> <td class="src"><pre class="src">&nbsp; collected.add(match);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;537</td> <td class="nbHitsCovered">&nbsp;32</td> <td class="src"><pre class="src">&nbsp; } <span class="keyword">else</span> {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;534</td> <td class="nbHitsCovered">&nbsp;16</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> String url = String.format(NVD_SEARCH_URL, URLEncoder.encode(vs.getName(), <span class="string">"UTF-8"</span>));</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;535</td> <td class="nbHitsCovered">&nbsp;16</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> IdentifierMatch match = <span class="keyword">new</span> IdentifierMatch(<span class="string">"cpe"</span>, vs.getName(), url, IdentifierConfidence.EXACT_MATCH, conf);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;536</td> <td class="nbHitsCovered">&nbsp;16</td> <td class="src"><pre class="src">&nbsp; collected.add(match);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;537</td> <td class="nbHitsCovered">&nbsp;16</td> <td class="src"><pre class="src">&nbsp; } <span class="keyword">else</span> {</pre></td></tr>
<tr> <td class="numLine">&nbsp;538</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="comment">//TODO the following isn't quite right is it? need to think about this guessing game a bit more.</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;539</td> <td class="nbHitsCovered"><a title="Line 539: Conditional coverage 100% (4/4) [each condition: 100%, 100%].">&nbsp;1216</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 539: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> <span class="keyword">if</span> (evVer.getVersionParts().size() &lt;= dbVer.getVersionParts().size()</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;539</td> <td class="nbHitsCovered"><a title="Line 539: Conditional coverage 100% (4/4) [each condition: 100%, 100%].">&nbsp;608</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 539: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> <span class="keyword">if</span> (evVer.getVersionParts().size() &lt;= dbVer.getVersionParts().size()</a></pre></td></tr>
<tr> <td class="numLine">&nbsp;540</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; &amp;&amp; evVer.matchesAtLeastThreeLevels(dbVer)) {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;541</td> <td class="nbHitsUncovered"><a title="Line 541: Conditional coverage 75% (3/4) [each condition: 100%, 50%].">&nbsp;256</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 541: Conditional coverage 75% (3/4) [each condition: 100%, 50%]."> <span class="keyword">if</span> (bestGuessConf == <span class="keyword">null</span> || bestGuessConf.compareTo(conf) &gt; 0) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;542</td> <td class="nbHitsUncovered"><a title="Line 542: Conditional coverage 50% (1/2).">&nbsp;8</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 542: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (bestGuess.getVersionParts().size() &lt; dbVer.getVersionParts().size()) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;543</td> <td class="nbHitsCovered">&nbsp;8</td> <td class="src"><pre class="src">&nbsp; bestGuess = dbVer;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;544</td> <td class="nbHitsCovered">&nbsp;8</td> <td class="src"><pre class="src">&nbsp; bestGuessConf = conf;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;541</td> <td class="nbHitsUncovered"><a title="Line 541: Conditional coverage 75% (3/4) [each condition: 100%, 50%].">&nbsp;128</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 541: Conditional coverage 75% (3/4) [each condition: 100%, 50%]."> <span class="keyword">if</span> (bestGuessConf == <span class="keyword">null</span> || bestGuessConf.compareTo(conf) &gt; 0) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;542</td> <td class="nbHitsUncovered"><a title="Line 542: Conditional coverage 50% (1/2).">&nbsp;4</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 542: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (bestGuess.getVersionParts().size() &lt; dbVer.getVersionParts().size()) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;543</td> <td class="nbHitsCovered">&nbsp;4</td> <td class="src"><pre class="src">&nbsp; bestGuess = dbVer;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;544</td> <td class="nbHitsCovered">&nbsp;4</td> <td class="src"><pre class="src">&nbsp; bestGuessConf = conf;</pre></td></tr>
<tr> <td class="numLine">&nbsp;545</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;546</td> <td class="nbHits">&nbsp;</td>
@@ -945,8 +945,8 @@
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;548</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;549</td> <td class="nbHitsCovered">&nbsp;1248</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;550</td> <td class="nbHitsUncovered"><a title="Line 550: Conditional coverage 50% (2/4) [each condition: 50%, 50%].">&nbsp;32</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 550: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> <span class="keyword">if</span> (bestGuessConf == <span class="keyword">null</span> || bestGuessConf.compareTo(conf) &gt; 0) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;549</td> <td class="nbHitsCovered">&nbsp;624</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;550</td> <td class="nbHitsUncovered"><a title="Line 550: Conditional coverage 50% (2/4) [each condition: 50%, 50%].">&nbsp;16</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 550: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> <span class="keyword">if</span> (bestGuessConf == <span class="keyword">null</span> || bestGuessConf.compareTo(conf) &gt; 0) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;551</td> <td class="nbHitsUncovered"><a title="Line 551: Conditional coverage 0% (0/2).">&nbsp;0</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 551: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (bestGuess.getVersionParts().size() &lt; evVer.getVersionParts().size()) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;552</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; bestGuess = evVer;</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;553</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; bestGuessConf = conf;</span></pre></td></tr>
@@ -954,39 +954,39 @@
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;555</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;556</td> <td class="nbHitsCovered">&nbsp;32</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;556</td> <td class="nbHitsCovered">&nbsp;16</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;557</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;558</td> <td class="nbHitsCovered">&nbsp;8</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> String cpeName = String.format(<span class="string">"cpe:/a:%s:%s:%s"</span>, vendor, product, bestGuess.toString());</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;559</td> <td class="nbHitsCovered">&nbsp;8</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> String url = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;560</td> <td class="nbHitsUncovered"><a title="Line 560: Conditional coverage 50% (1/2).">&nbsp;8</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 560: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (bestGuessConf == <span class="keyword">null</span>) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;558</td> <td class="nbHitsCovered">&nbsp;4</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> String cpeName = String.format(<span class="string">"cpe:/a:%s:%s:%s"</span>, vendor, product, bestGuess.toString());</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;559</td> <td class="nbHitsCovered">&nbsp;4</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> String url = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;560</td> <td class="nbHitsUncovered"><a title="Line 560: Conditional coverage 50% (1/2).">&nbsp;4</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 560: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (bestGuessConf == <span class="keyword">null</span>) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;561</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; bestGuessConf = Confidence.LOW;</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;562</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;563</td> <td class="nbHitsCovered">&nbsp;8</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> IdentifierMatch match = <span class="keyword">new</span> IdentifierMatch(<span class="string">"cpe"</span>, cpeName, url, IdentifierConfidence.BEST_GUESS, bestGuessConf);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;564</td> <td class="nbHitsCovered">&nbsp;8</td> <td class="src"><pre class="src">&nbsp; collected.add(match);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;563</td> <td class="nbHitsCovered">&nbsp;4</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> IdentifierMatch match = <span class="keyword">new</span> IdentifierMatch(<span class="string">"cpe"</span>, cpeName, url, IdentifierConfidence.BEST_GUESS, bestGuessConf);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;564</td> <td class="nbHitsCovered">&nbsp;4</td> <td class="src"><pre class="src">&nbsp; collected.add(match);</pre></td></tr>
<tr> <td class="numLine">&nbsp;565</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;566</td> <td class="nbHitsCovered">&nbsp;8</td> <td class="src"><pre class="src">&nbsp; Collections.sort(collected);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;567</td> <td class="nbHitsCovered">&nbsp;8</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> IdentifierConfidence bestIdentifierQuality = collected.get(0).getConfidence();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;568</td> <td class="nbHitsCovered">&nbsp;8</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> Confidence bestEvidenceQuality = collected.get(0).getEvidenceConfidence();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;569</td> <td class="nbHitsCovered"><a title="Line 569: Conditional coverage 100% (2/2).">&nbsp;8</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 569: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (IdentifierMatch m : collected) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;570</td> <td class="nbHitsCovered"><a title="Line 570: Conditional coverage 100% (4/4) [each condition: 100%, 100%].">&nbsp;40</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 570: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> <span class="keyword">if</span> (bestIdentifierQuality.equals(m.getConfidence())</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;566</td> <td class="nbHitsCovered">&nbsp;4</td> <td class="src"><pre class="src">&nbsp; Collections.sort(collected);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;567</td> <td class="nbHitsCovered">&nbsp;4</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> IdentifierConfidence bestIdentifierQuality = collected.get(0).getConfidence();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;568</td> <td class="nbHitsCovered">&nbsp;4</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> Confidence bestEvidenceQuality = collected.get(0).getEvidenceConfidence();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;569</td> <td class="nbHitsCovered"><a title="Line 569: Conditional coverage 100% (2/2).">&nbsp;4</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 569: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (IdentifierMatch m : collected) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;570</td> <td class="nbHitsCovered"><a title="Line 570: Conditional coverage 100% (4/4) [each condition: 100%, 100%].">&nbsp;20</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 570: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> <span class="keyword">if</span> (bestIdentifierQuality.equals(m.getConfidence())</a></pre></td></tr>
<tr> <td class="numLine">&nbsp;571</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; &amp;&amp; bestEvidenceQuality.equals(m.getEvidenceConfidence())) {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;572</td> <td class="nbHitsCovered">&nbsp;8</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> Identifier i = m.getIdentifier();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;573</td> <td class="nbHitsUncovered"><a title="Line 573: Conditional coverage 50% (1/2).">&nbsp;8</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 573: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (bestIdentifierQuality == IdentifierConfidence.BEST_GUESS) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;572</td> <td class="nbHitsCovered">&nbsp;4</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> Identifier i = m.getIdentifier();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;573</td> <td class="nbHitsUncovered"><a title="Line 573: Conditional coverage 50% (1/2).">&nbsp;4</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 573: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (bestIdentifierQuality == IdentifierConfidence.BEST_GUESS) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;574</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; i.setConfidence(Confidence.LOW);</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;575</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; } <span class="keyword">else</span> {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;576</td> <td class="nbHitsCovered">&nbsp;8</td> <td class="src"><pre class="src">&nbsp; i.setConfidence(bestEvidenceQuality);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;576</td> <td class="nbHitsCovered">&nbsp;4</td> <td class="src"><pre class="src">&nbsp; i.setConfidence(bestEvidenceQuality);</pre></td></tr>
<tr> <td class="numLine">&nbsp;577</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;578</td> <td class="nbHitsCovered">&nbsp;8</td> <td class="src"><pre class="src">&nbsp; dependency.addIdentifier(i);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;578</td> <td class="nbHitsCovered">&nbsp;4</td> <td class="src"><pre class="src">&nbsp; dependency.addIdentifier(i);</pre></td></tr>
<tr> <td class="numLine">&nbsp;579</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;580</td> <td class="nbHitsCovered">&nbsp;40</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;581</td> <td class="nbHitsCovered">&nbsp;8</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;580</td> <td class="nbHitsCovered">&nbsp;20</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;581</td> <td class="nbHitsCovered">&nbsp;4</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;582</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;583</td> <td class="nbHits">&nbsp;</td>
@@ -995,7 +995,7 @@
<td class="src"><pre class="src">&nbsp;<span class="comment"> * The confidence whether the identifier is an exact match, or a best guess.</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;585</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;586</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">private</span> enum IdentifierConfidence {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;586</td> <td class="nbHitsCovered">&nbsp;1</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">private</span> enum IdentifierConfidence {</pre></td></tr>
<tr> <td class="numLine">&nbsp;587</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;588</td> <td class="nbHits">&nbsp;</td>
@@ -1004,14 +1004,14 @@
<td class="src"><pre class="src">&nbsp;<span class="comment"> * An exact match for the CPE.</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;590</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;591</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; EXACT_MATCH,</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;591</td> <td class="nbHitsCovered">&nbsp;1</td> <td class="src"><pre class="src">&nbsp; EXACT_MATCH,</pre></td></tr>
<tr> <td class="numLine">&nbsp;592</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;593</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * A best guess for the CPE.</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;594</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;595</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; BEST_GUESS</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;595</td> <td class="nbHitsCovered">&nbsp;1</td> <td class="src"><pre class="src">&nbsp; BEST_GUESS</pre></td></tr>
<tr> <td class="numLine">&nbsp;596</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;597</td> <td class="nbHits">&nbsp;</td>
@@ -1022,7 +1022,7 @@
<td class="src"><pre class="src">&nbsp;<span class="comment"> * A simple object to hold an identifier and carry information about the confidence in the identifier.</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;600</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;601</td> <td class="nbHitsCovered">&nbsp;32</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">class</span> IdentifierMatch <span class="keyword">implements</span> Comparable&lt;IdentifierMatch&gt; {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;601</td> <td class="nbHitsCovered">&nbsp;16</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">class</span> IdentifierMatch <span class="keyword">implements</span> Comparable&lt;IdentifierMatch&gt; {</pre></td></tr>
<tr> <td class="numLine">&nbsp;602</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;603</td> <td class="nbHits">&nbsp;</td>
@@ -1043,11 +1043,11 @@
<td class="src"><pre class="src">&nbsp;<span class="comment"> * @param evidenceConfidence the confidence of the evidence used to find the identifier</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;611</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;612</td> <td class="nbHitsCovered">&nbsp;40</td> <td class="src"><pre class="src">&nbsp; IdentifierMatch(String type, String value, String url, IdentifierConfidence identifierConfidence, Confidence evidenceConfidence) {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;613</td> <td class="nbHitsCovered">&nbsp;40</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">this</span>.identifier = <span class="keyword">new</span> Identifier(type, value, url);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;614</td> <td class="nbHitsCovered">&nbsp;40</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">this</span>.confidence = identifierConfidence;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;615</td> <td class="nbHitsCovered">&nbsp;40</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">this</span>.evidenceConfidence = evidenceConfidence;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;616</td> <td class="nbHitsCovered">&nbsp;40</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;612</td> <td class="nbHitsCovered">&nbsp;20</td> <td class="src"><pre class="src">&nbsp; IdentifierMatch(String type, String value, String url, IdentifierConfidence identifierConfidence, Confidence evidenceConfidence) {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;613</td> <td class="nbHitsCovered">&nbsp;20</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">this</span>.identifier = <span class="keyword">new</span> Identifier(type, value, url);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;614</td> <td class="nbHitsCovered">&nbsp;20</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">this</span>.confidence = identifierConfidence;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;615</td> <td class="nbHitsCovered">&nbsp;20</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">this</span>.evidenceConfidence = evidenceConfidence;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;616</td> <td class="nbHitsCovered">&nbsp;20</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;617</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="comment">//&lt;editor-fold defaultstate="collapsed" desc="Property implementations: evidenceConfidence, confidence, identifier"&gt;</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;618</td> <td class="nbHits">&nbsp;</td>
@@ -1294,16 +1294,16 @@
<td class="src"><pre class="src">&nbsp; @Override</pre></td></tr>
<tr> <td class="numLine">&nbsp;748</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">public</span> <span class="keyword">int</span> compareTo(IdentifierMatch o) {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;749</td> <td class="nbHitsCovered">&nbsp;32</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">int</span> conf = <span class="keyword">this</span>.confidence.compareTo(o.confidence);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;750</td> <td class="nbHitsCovered"><a title="Line 750: Conditional coverage 100% (2/2).">&nbsp;32</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 750: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (conf == 0) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;751</td> <td class="nbHitsCovered">&nbsp;24</td> <td class="src"><pre class="src">&nbsp; conf = <span class="keyword">this</span>.evidenceConfidence.compareTo(o.evidenceConfidence);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;752</td> <td class="nbHitsCovered"><a title="Line 752: Conditional coverage 100% (2/2).">&nbsp;24</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 752: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (conf == 0) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;753</td> <td class="nbHitsCovered">&nbsp;8</td> <td class="src"><pre class="src">&nbsp; conf = identifier.compareTo(o.identifier);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;749</td> <td class="nbHitsCovered">&nbsp;16</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">int</span> conf = <span class="keyword">this</span>.confidence.compareTo(o.confidence);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;750</td> <td class="nbHitsCovered"><a title="Line 750: Conditional coverage 100% (2/2).">&nbsp;16</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 750: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (conf == 0) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;751</td> <td class="nbHitsCovered">&nbsp;12</td> <td class="src"><pre class="src">&nbsp; conf = <span class="keyword">this</span>.evidenceConfidence.compareTo(o.evidenceConfidence);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;752</td> <td class="nbHitsCovered"><a title="Line 752: Conditional coverage 100% (2/2).">&nbsp;12</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 752: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (conf == 0) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;753</td> <td class="nbHitsCovered">&nbsp;4</td> <td class="src"><pre class="src">&nbsp; conf = identifier.compareTo(o.identifier);</pre></td></tr>
<tr> <td class="numLine">&nbsp;754</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;755</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;756</td> <td class="nbHitsCovered">&nbsp;32</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> conf;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;756</td> <td class="nbHitsCovered">&nbsp;16</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> conf;</pre></td></tr>
<tr> <td class="numLine">&nbsp;757</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;758</td> <td class="nbHits">&nbsp;</td>
@@ -1312,6 +1312,6 @@
<td class="src"><pre class="src">&nbsp;}</pre></td></tr>
</table>
<div class="footer">Report generated by <a href="http://cobertura.sourceforge.net/" target="_top">Cobertura</a> 2.0.3 on 6/22/14 8:56 PM.</div>
<div class="footer">Report generated by <a href="http://cobertura.sourceforge.net/" target="_top">Cobertura</a> 2.0.3 on 6/27/14 7:06 AM.</div>
</body>
</html>