updated to version 1.0.5

This commit is contained in:
Jeremy Long
2013-11-16 13:44:16 -05:00
parent d6ec751081
commit 352e9de762
795 changed files with 12839 additions and 11400 deletions

View File

@@ -12,7 +12,7 @@
<div class="separator">&nbsp;</div>
<table class="report">
<thead><tr> <td class="heading">Classes in this File</td> <td class="heading"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">Line Coverage</a></td> <td class="heading"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">Branch Coverage</a></td> <td class="heading"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">Complexity</a></td></tr></thead>
<tr><td><a href="org.owasp.dependencycheck.analyzer.CPEAnalyzer.html">CPEAnalyzer</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">88%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:88px"><span class="text">174/196</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">82%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:82px"><span class="text">105/128</span></div></div></td></tr></table></td><td class="value"><span class="hidden">4.0625;</span>4.062</td></tr>
<tr><td><a href="org.owasp.dependencycheck.analyzer.CPEAnalyzer.html">CPEAnalyzer</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">89%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:89px"><span class="text">175/196</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">84%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:84px"><span class="text">108/128</span></div></div></td></tr></table></td><td class="value"><span class="hidden">4.0625;</span>4.062</td></tr>
<tr><td><a href="org.owasp.dependencycheck.analyzer.CPEAnalyzer.html">CPEAnalyzer$IdentifierConfidence</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">100%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:100px"><span class="text">3/3</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></td><td class="percentgraph"><div class="percentgraph"><div class="na" style="width:100px"><span class="text"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></span></div></div></td></tr></table></td><td class="value"><span class="hidden">4.0625;</span>4.062</td></tr>
<tr><td><a href="org.owasp.dependencycheck.analyzer.CPEAnalyzer.html">CPEAnalyzer$IdentifierMatch</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">38%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:38px"><span class="text">15/39</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">16%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:16px"><span class="text">4/24</span></div></div></td></tr></table></td><td class="value"><span class="hidden">4.0625;</span>4.062</td></tr>
@@ -222,20 +222,20 @@
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;102</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;103</td> <td class="nbHitsCovered">&nbsp;10</td> <td class="src"><pre class="src">&nbsp; cpe = <span class="keyword">new</span> CpeIndexReader();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;104</td> <td class="nbHitsCovered">&nbsp;10</td> <td class="src"><pre class="src">&nbsp; cpe.open();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;105</td> <td class="nbHitsCovered">&nbsp;10</td> <td class="src"><pre class="src">&nbsp; cve = <span class="keyword">new</span> CveDB();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;103</td> <td class="nbHitsCovered">&nbsp;12</td> <td class="src"><pre class="src">&nbsp; cpe = <span class="keyword">new</span> CpeIndexReader();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;104</td> <td class="nbHitsCovered">&nbsp;12</td> <td class="src"><pre class="src">&nbsp; cpe.open();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;105</td> <td class="nbHitsCovered">&nbsp;12</td> <td class="src"><pre class="src">&nbsp; cve = <span class="keyword">new</span> CveDB();</pre></td></tr>
<tr> <td class="numLine">&nbsp;106</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;107</td> <td class="nbHitsCovered">&nbsp;10</td> <td class="src"><pre class="src">&nbsp; cve.open();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;107</td> <td class="nbHitsCovered">&nbsp;12</td> <td class="src"><pre class="src">&nbsp; cve.open();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;108</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; } <span class="keyword">catch</span> (SQLException ex) {</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;109</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; Logger.getLogger(CPEAnalyzer.<span class="keyword">class</span>.getName()).log(Level.FINE, <span class="keyword">null</span>, ex);</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;110</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(<span class="string">"Unable to open the cve db"</span>, ex);</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;111</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; } <span class="keyword">catch</span> (ClassNotFoundException ex) {</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;112</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; Logger.getLogger(CPEAnalyzer.<span class="keyword">class</span>.getName()).log(Level.FINE, <span class="keyword">null</span>, ex);</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;113</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(<span class="string">"Unable to open the cve db"</span>, ex);</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;114</td> <td class="nbHitsCovered">&nbsp;10</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;115</td> <td class="nbHitsCovered">&nbsp;10</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;114</td> <td class="nbHitsCovered">&nbsp;12</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;115</td> <td class="nbHitsCovered">&nbsp;12</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;116</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;117</td> <td class="nbHits">&nbsp;</td>
@@ -248,15 +248,15 @@
<td class="src"><pre class="src">&nbsp; @Override</pre></td></tr>
<tr> <td class="numLine">&nbsp;121</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;122</td> <td class="nbHitsUncovered"><a title="Line 122: Conditional coverage 50% (1/2).">&nbsp;10</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 122: 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;123</td> <td class="nbHitsCovered">&nbsp;10</td> <td class="src"><pre class="src">&nbsp; cpe.close();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;122</td> <td class="nbHitsUncovered"><a title="Line 122: Conditional coverage 50% (1/2).">&nbsp;12</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 122: 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;123</td> <td class="nbHitsCovered">&nbsp;12</td> <td class="src"><pre class="src">&nbsp; cpe.close();</pre></td></tr>
<tr> <td class="numLine">&nbsp;124</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;125</td> <td class="nbHitsUncovered"><a title="Line 125: Conditional coverage 50% (1/2).">&nbsp;10</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 125: 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;126</td> <td class="nbHitsCovered">&nbsp;10</td> <td class="src"><pre class="src">&nbsp; cve.close();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;125</td> <td class="nbHitsUncovered"><a title="Line 125: Conditional coverage 50% (1/2).">&nbsp;12</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 125: 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;126</td> <td class="nbHitsCovered">&nbsp;12</td> <td class="src"><pre class="src">&nbsp; cve.close();</pre></td></tr>
<tr> <td class="numLine">&nbsp;127</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;128</td> <td class="nbHitsCovered">&nbsp;10</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;128</td> <td class="nbHitsCovered">&nbsp;12</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;129</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;130</td> <td class="nbHits">&nbsp;</td>
@@ -320,45 +320,45 @@
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;162</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;163</td> <td class="nbHitsCovered">&nbsp;13</td> <td class="src"><pre class="src">&nbsp; Confidence vendorConf = Confidence.HIGHEST;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;164</td> <td class="nbHitsCovered">&nbsp;13</td> <td class="src"><pre class="src">&nbsp; Confidence productConf = Confidence.HIGHEST;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;163</td> <td class="nbHitsCovered">&nbsp;19</td> <td class="src"><pre class="src">&nbsp; Confidence vendorConf = Confidence.HIGHEST;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;164</td> <td class="nbHitsCovered">&nbsp;19</td> <td class="src"><pre class="src">&nbsp; Confidence productConf = Confidence.HIGHEST;</pre></td></tr>
<tr> <td class="numLine">&nbsp;165</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;166</td> <td class="nbHitsCovered">&nbsp;13</td> <td class="src"><pre class="src">&nbsp; String vendors = addEvidenceWithoutDuplicateTerms(<span class="string">""</span>, dependency.getVendorEvidence(), vendorConf);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;167</td> <td class="nbHitsCovered">&nbsp;13</td> <td class="src"><pre class="src">&nbsp; String products = addEvidenceWithoutDuplicateTerms(<span class="string">""</span>, dependency.getProductEvidence(), productConf);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;166</td> <td class="nbHitsCovered">&nbsp;19</td> <td class="src"><pre class="src">&nbsp; String vendors = addEvidenceWithoutDuplicateTerms(<span class="string">""</span>, dependency.getVendorEvidence(), vendorConf);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;167</td> <td class="nbHitsCovered">&nbsp;19</td> <td class="src"><pre class="src">&nbsp; String products = addEvidenceWithoutDuplicateTerms(<span class="string">""</span>, dependency.getProductEvidence(), productConf);</pre></td></tr>
<tr> <td class="numLine">&nbsp;168</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;169</td> <td class="nbHitsCovered">&nbsp;13</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">int</span> ctr = 0;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;169</td> <td class="nbHitsCovered">&nbsp;19</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">int</span> ctr = 0;</pre></td></tr>
<tr> <td class="numLine">&nbsp;170</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;171</td> <td class="nbHitsUncovered"><a title="Line 171: Conditional coverage 50% (2/4) [each condition: 50%, 50%].">&nbsp;52</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 171: 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;172</td> <td class="nbHitsCovered">&nbsp;52</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;171</td> <td class="nbHitsUncovered"><a title="Line 171: Conditional coverage 75% (3/4) [each condition: 100%, 50%].">&nbsp;76</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 171: Conditional coverage 75% (3/4) [each condition: 100%, 50%]."> <span class="keyword">if</span> (!vendors.isEmpty() &amp;&amp; !products.isEmpty()) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;172</td> <td class="nbHitsCovered">&nbsp;72</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;173</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; dependency.getVendorEvidence().getWeighting());</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"><a title="Line 175: Conditional coverage 100% (2/2).">&nbsp;52</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 175: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (IndexEntry e : entries) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;176</td> <td class="nbHitsCovered"><a title="Line 176: Conditional coverage 100% (2/2).">&nbsp;622</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 176: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (verifyEntry(e, dependency)) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;177</td> <td class="nbHitsCovered">&nbsp;51</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;178</td> <td class="nbHitsCovered">&nbsp;51</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;179</td> <td class="nbHitsCovered">&nbsp;51</td> <td class="src"><pre class="src">&nbsp; determineIdentifiers(dependency, vendor, product);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;180</td> <td class="nbHitsCovered">&nbsp;622</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;175</td> <td class="nbHitsCovered"><a title="Line 175: Conditional coverage 100% (2/2).">&nbsp;72</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 175: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (IndexEntry e : entries) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;176</td> <td class="nbHitsCovered"><a title="Line 176: Conditional coverage 100% (2/2).">&nbsp;722</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 176: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (verifyEntry(e, dependency)) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;177</td> <td class="nbHitsCovered">&nbsp;71</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;178</td> <td class="nbHitsCovered">&nbsp;71</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;179</td> <td class="nbHitsCovered">&nbsp;71</td> <td class="src"><pre class="src">&nbsp; determineIdentifiers(dependency, vendor, product);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;180</td> <td class="nbHitsCovered">&nbsp;722</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;181</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;182</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;183</td> <td class="nbHitsCovered">&nbsp;52</td> <td class="src"><pre class="src">&nbsp; vendorConf = reduceConfidence(vendorConf);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;184</td> <td class="nbHitsCovered"><a title="Line 184: Conditional coverage 100% (2/2).">&nbsp;52</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 184: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (dependency.getVendorEvidence().contains(vendorConf)) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;185</td> <td class="nbHitsCovered">&nbsp;49</td> <td class="src"><pre class="src">&nbsp; vendors = addEvidenceWithoutDuplicateTerms(vendors, dependency.getVendorEvidence(), vendorConf);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;183</td> <td class="nbHitsCovered">&nbsp;76</td> <td class="src"><pre class="src">&nbsp; vendorConf = reduceConfidence(vendorConf);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;184</td> <td class="nbHitsCovered"><a title="Line 184: Conditional coverage 100% (2/2).">&nbsp;76</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 184: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (dependency.getVendorEvidence().contains(vendorConf)) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;185</td> <td class="nbHitsCovered">&nbsp;61</td> <td class="src"><pre class="src">&nbsp; vendors = addEvidenceWithoutDuplicateTerms(vendors, dependency.getVendorEvidence(), vendorConf);</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">&nbsp;52</td> <td class="src"><pre class="src">&nbsp; productConf = reduceConfidence(productConf);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;188</td> <td class="nbHitsUncovered"><a title="Line 188: Conditional coverage 50% (1/2).">&nbsp;52</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 188: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (dependency.getProductEvidence().contains(productConf)) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;189</td> <td class="nbHitsCovered">&nbsp;52</td> <td class="src"><pre class="src">&nbsp; products = addEvidenceWithoutDuplicateTerms(products, dependency.getProductEvidence(), productConf);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;187</td> <td class="nbHitsCovered">&nbsp;76</td> <td class="src"><pre class="src">&nbsp; productConf = reduceConfidence(productConf);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;188</td> <td class="nbHitsCovered"><a title="Line 188: Conditional coverage 100% (2/2).">&nbsp;76</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 188: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (dependency.getProductEvidence().contains(productConf)) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;189</td> <td class="nbHitsCovered">&nbsp;64</td> <td class="src"><pre class="src">&nbsp; products = addEvidenceWithoutDuplicateTerms(products, dependency.getProductEvidence(), productConf);</pre></td></tr>
<tr> <td class="numLine">&nbsp;190</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;191</td> <td class="nbHitsCovered"><a title="Line 191: Conditional coverage 100% (2/2).">&nbsp;52</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 191: Conditional coverage 100% (2/2)."> } <span class="keyword">while</span> ((++ctr) &lt; 4);</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;192</td> <td class="nbHitsCovered">&nbsp;13</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;191</td> <td class="nbHitsCovered"><a title="Line 191: Conditional coverage 100% (2/2).">&nbsp;76</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 191: Conditional coverage 100% (2/2)."> } <span class="keyword">while</span> ((++ctr) &lt; 4);</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;192</td> <td class="nbHitsCovered">&nbsp;19</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;193</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;194</td> <td class="nbHits">&nbsp;</td>
@@ -385,31 +385,31 @@
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;205</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;206</td> <td class="nbHitsUncovered"><a title="Line 206: Conditional coverage 50% (1/2).">&nbsp;127</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 206: 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;207</td> <td class="nbHitsCovered">&nbsp;127</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;208</td> <td class="nbHitsCovered">&nbsp;127</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;209</td> <td class="nbHitsCovered"><a title="Line 209: Conditional coverage 100% (2/2).">&nbsp;127</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 209: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (Evidence e : ec.iterator(confidenceFilter)) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;210</td> <td class="nbHitsCovered">&nbsp;309</td> <td class="src"><pre class="src">&nbsp; String value = e.getValue();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;206</td> <td class="nbHitsUncovered"><a title="Line 206: Conditional coverage 50% (1/2).">&nbsp;163</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 206: 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;207</td> <td class="nbHitsCovered">&nbsp;163</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;208</td> <td class="nbHitsCovered">&nbsp;163</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;209</td> <td class="nbHitsCovered"><a title="Line 209: Conditional coverage 100% (2/2).">&nbsp;163</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 209: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (Evidence e : ec.iterator(confidenceFilter)) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;210</td> <td class="nbHitsCovered">&nbsp;355</td> <td class="src"><pre class="src">&nbsp; String value = e.getValue();</pre></td></tr>
<tr> <td class="numLine">&nbsp;211</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;212</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;213</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;214</td> <td class="nbHitsCovered"><a title="Line 214: Conditional coverage 100% (2/2).">&nbsp;309</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 214: 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;214</td> <td class="nbHitsCovered"><a title="Line 214: Conditional coverage 100% (2/2).">&nbsp;355</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 214: 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;215</td> <td class="nbHitsCovered">&nbsp;32</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;216</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;217</td> <td class="nbHitsUncovered"><a title="Line 217: Conditional coverage 50% (1/2).">&nbsp;309</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 217: 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;217</td> <td class="nbHitsUncovered"><a title="Line 217: Conditional coverage 50% (1/2).">&nbsp;355</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 217: 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;218</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;219</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;220</td> <td class="nbHitsCovered"><a title="Line 220: Conditional coverage 100% (2/2).">&nbsp;309</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 220: 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;221</td> <td class="nbHitsCovered">&nbsp;200</td> <td class="src"><pre class="src">&nbsp; sb.append(value).append(<span class="string">' '</span>);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;220</td> <td class="nbHitsCovered"><a title="Line 220: Conditional coverage 100% (2/2).">&nbsp;355</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 220: 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;221</td> <td class="nbHitsCovered">&nbsp;222</td> <td class="src"><pre class="src">&nbsp; sb.append(value).append(<span class="string">' '</span>);</pre></td></tr>
<tr> <td class="numLine">&nbsp;222</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;223</td> <td class="nbHitsCovered">&nbsp;309</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;224</td> <td class="nbHitsCovered">&nbsp;127</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> sb.toString().trim();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;223</td> <td class="nbHitsCovered">&nbsp;355</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;224</td> <td class="nbHitsCovered">&nbsp;163</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> sb.toString().trim();</pre></td></tr>
<tr> <td class="numLine">&nbsp;225</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;226</td> <td class="nbHits">&nbsp;</td>
@@ -430,13 +430,13 @@
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;234</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;235</td> <td class="nbHitsCovered"><a title="Line 235: Conditional coverage 100% (2/2).">&nbsp;104</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 235: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (c == Confidence.HIGHEST) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;236</td> <td class="nbHitsCovered">&nbsp;26</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> Confidence.HIGH;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;237</td> <td class="nbHitsCovered"><a title="Line 237: Conditional coverage 100% (2/2).">&nbsp;78</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 237: 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;238</td> <td class="nbHitsCovered">&nbsp;26</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> Confidence.MEDIUM;</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> (c == Confidence.HIGHEST) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;236</td> <td class="nbHitsCovered">&nbsp;38</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> Confidence.HIGH;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;237</td> <td class="nbHitsCovered"><a title="Line 237: Conditional coverage 100% (2/2).">&nbsp;114</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 237: 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;238</td> <td class="nbHitsCovered">&nbsp;38</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> Confidence.MEDIUM;</pre></td></tr>
<tr> <td class="numLine">&nbsp;239</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;240</td> <td class="nbHitsCovered">&nbsp;52</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> Confidence.LOW;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;240</td> <td class="nbHitsCovered">&nbsp;76</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> Confidence.LOW;</pre></td></tr>
<tr> <td class="numLine">&nbsp;241</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;242</td> <td class="nbHits">&nbsp;</td>
@@ -485,23 +485,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;264</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;265</td> <td class="nbHitsCovered">&nbsp;53</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;265</td> <td class="nbHitsCovered">&nbsp;73</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;266</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;267</td> <td class="nbHitsCovered">&nbsp;53</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;268</td> <td class="nbHitsUncovered"><a title="Line 268: Conditional coverage 50% (1/2).">&nbsp;53</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 268: 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;267</td> <td class="nbHitsCovered">&nbsp;73</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;268</td> <td class="nbHitsUncovered"><a title="Line 268: Conditional coverage 50% (1/2).">&nbsp;73</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 268: 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;269</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;270</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;271</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;272</td> <td class="nbHitsCovered">&nbsp;53</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;273</td> <td class="nbHitsCovered"><a title="Line 273: Conditional coverage 100% (2/2).">&nbsp;1083</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 273: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (ScoreDoc d : docs.scoreDocs) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;274</td> <td class="nbHitsCovered"><a title="Line 274: Conditional coverage 100% (2/2).">&nbsp;1030</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 274: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (d.score &gt;= 0.08) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;275</td> <td class="nbHitsCovered">&nbsp;640</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;276</td> <td class="nbHitsCovered">&nbsp;640</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;277</td> <td class="nbHitsCovered">&nbsp;640</td> <td class="src"><pre class="src">&nbsp; entry.setVendor(doc.get(Fields.VENDOR));</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;278</td> <td class="nbHitsCovered">&nbsp;640</td> <td class="src"><pre class="src">&nbsp; entry.setProduct(doc.get(Fields.PRODUCT));</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;272</td> <td class="nbHitsCovered">&nbsp;73</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;273</td> <td class="nbHitsCovered"><a title="Line 273: Conditional coverage 100% (2/2).">&nbsp;1212</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 273: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (ScoreDoc d : docs.scoreDocs) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;274</td> <td class="nbHitsCovered"><a title="Line 274: Conditional coverage 100% (2/2).">&nbsp;1139</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 274: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (d.score &gt;= 0.08) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;275</td> <td class="nbHitsCovered">&nbsp;741</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;276</td> <td class="nbHitsCovered">&nbsp;741</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;277</td> <td class="nbHitsCovered">&nbsp;741</td> <td class="src"><pre class="src">&nbsp; entry.setVendor(doc.get(Fields.VENDOR));</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;278</td> <td class="nbHitsCovered">&nbsp;741</td> <td class="src"><pre class="src">&nbsp; entry.setProduct(doc.get(Fields.PRODUCT));</pre></td></tr>
<tr> <td class="numLine">&nbsp;279</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;280</td> <td class="nbHits">&nbsp;</td>
@@ -516,16 +516,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;285</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;286</td> <td class="nbHitsCovered">&nbsp;640</td> <td class="src"><pre class="src">&nbsp; entry.setSearchScore(d.score);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;287</td> <td class="nbHitsUncovered"><a title="Line 287: Conditional coverage 50% (1/2).">&nbsp;640</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 287: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (!ret.contains(entry)) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;288</td> <td class="nbHitsCovered">&nbsp;640</td> <td class="src"><pre class="src">&nbsp; ret.add(entry);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;286</td> <td class="nbHitsCovered">&nbsp;741</td> <td class="src"><pre class="src">&nbsp; entry.setSearchScore(d.score);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;287</td> <td class="nbHitsUncovered"><a title="Line 287: Conditional coverage 50% (1/2).">&nbsp;741</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 287: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (!ret.contains(entry)) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;288</td> <td class="nbHitsCovered">&nbsp;741</td> <td class="src"><pre class="src">&nbsp; ret.add(entry);</pre></td></tr>
<tr> <td class="numLine">&nbsp;289</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;290</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;291</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;292</td> <td class="nbHitsCovered">&nbsp;53</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> ret;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;292</td> <td class="nbHitsCovered">&nbsp;73</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> ret;</pre></td></tr>
<tr> <td class="numLine">&nbsp;293</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;294</td> <td class="nbHits">&nbsp;</td>
@@ -566,23 +566,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;312</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;313</td> <td class="nbHitsCovered">&nbsp;57</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;314</td> <td class="nbHitsCovered">&nbsp;57</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;315</td> <td class="nbHitsCovered">&nbsp;57</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;313</td> <td class="nbHitsCovered">&nbsp;77</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;314</td> <td class="nbHitsCovered">&nbsp;77</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;315</td> <td class="nbHitsCovered">&nbsp;77</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;316</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;317</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;318</td> <td class="nbHitsUncovered"><a title="Line 318: Conditional coverage 50% (1/2).">&nbsp;57</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 318: 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;318</td> <td class="nbHitsUncovered"><a title="Line 318: Conditional coverage 50% (1/2).">&nbsp;77</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 318: 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;319</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;320</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;321</td> <td class="nbHitsCovered">&nbsp;57</td> <td class="src"><pre class="src">&nbsp; sb.append(<span class="string">" AND "</span>);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;322</td> <td class="nbHitsUncovered"><a title="Line 322: Conditional coverage 50% (1/2).">&nbsp;57</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 322: 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;321</td> <td class="nbHitsCovered">&nbsp;77</td> <td class="src"><pre class="src">&nbsp; sb.append(<span class="string">" AND "</span>);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;322</td> <td class="nbHitsUncovered"><a title="Line 322: Conditional coverage 50% (1/2).">&nbsp;77</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 322: 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;323</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;324</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;325</td> <td class="nbHitsCovered">&nbsp;57</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> sb.toString();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;325</td> <td class="nbHitsCovered">&nbsp;77</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> sb.toString();</pre></td></tr>
<tr> <td class="numLine">&nbsp;326</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;327</td> <td class="nbHits">&nbsp;</td>
@@ -617,47 +617,47 @@
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;342</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;343</td> <td class="nbHitsCovered">&nbsp;114</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;343</td> <td class="nbHitsCovered">&nbsp;154</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;344</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;345</td> <td class="nbHitsCovered">&nbsp;114</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;345</td> <td class="nbHitsCovered">&nbsp;154</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;346</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;347</td> <td class="nbHitsUncovered"><a title="Line 347: Conditional coverage 50% (1/2).">&nbsp;114</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 347: 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;347</td> <td class="nbHitsUncovered"><a title="Line 347: Conditional coverage 50% (1/2).">&nbsp;154</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 347: 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;348</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;349</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;350</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;351</td> <td class="nbHitsCovered"><a title="Line 351: Conditional coverage 100% (4/4) [each condition: 100%, 100%].">&nbsp;114</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 351: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> <span class="keyword">if</span> (weightedText == <span class="keyword">null</span> || weightedText.isEmpty()) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;352</td> <td class="nbHitsCovered">&nbsp;16</td> <td class="src"><pre class="src">&nbsp; LuceneUtils.appendEscapedLuceneQuery(sb, cleanText);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;351</td> <td class="nbHitsCovered"><a title="Line 351: Conditional coverage 100% (4/4) [each condition: 100%, 100%].">&nbsp;154</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 351: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> <span class="keyword">if</span> (weightedText == <span class="keyword">null</span> || weightedText.isEmpty()) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;352</td> <td class="nbHitsCovered">&nbsp;40</td> <td class="src"><pre class="src">&nbsp; LuceneUtils.appendEscapedLuceneQuery(sb, cleanText);</pre></td></tr>
<tr> <td class="numLine">&nbsp;353</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;354</td> <td class="nbHitsCovered">&nbsp;98</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;355</td> <td class="nbHitsCovered"><a title="Line 355: Conditional coverage 100% (2/2).">&nbsp;1123</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 355: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (tokens.hasMoreElements()) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;356</td> <td class="nbHitsCovered">&nbsp;1025</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;357</td> <td class="nbHitsCovered">&nbsp;1025</td> <td class="src"><pre class="src">&nbsp; String temp = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;358</td> <td class="nbHitsCovered"><a title="Line 358: Conditional coverage 100% (2/2).">&nbsp;1025</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 358: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (String weighted : weightedText) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;359</td> <td class="nbHitsCovered">&nbsp;2110</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;360</td> <td class="nbHitsCovered"><a title="Line 360: Conditional coverage 100% (2/2).">&nbsp;2110</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 360: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (equalsIgnoreCaseAndNonAlpha(word, weightedStr)) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;361</td> <td class="nbHitsCovered">&nbsp;225</td> <td class="src"><pre class="src">&nbsp; temp = LuceneUtils.escapeLuceneQuery(word) + WEIGHTING_BOOST;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;362</td> <td class="nbHitsCovered"><a title="Line 362: Conditional coverage 100% (2/2).">&nbsp;225</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 362: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (!word.equalsIgnoreCase(weightedStr)) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;354</td> <td class="nbHitsCovered">&nbsp;114</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;355</td> <td class="nbHitsCovered"><a title="Line 355: Conditional coverage 100% (2/2).">&nbsp;1211</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 355: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (tokens.hasMoreElements()) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;356</td> <td class="nbHitsCovered">&nbsp;1097</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;357</td> <td class="nbHitsCovered">&nbsp;1097</td> <td class="src"><pre class="src">&nbsp; String temp = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;358</td> <td class="nbHitsCovered"><a title="Line 358: Conditional coverage 100% (2/2).">&nbsp;1097</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 358: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (String weighted : weightedText) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;359</td> <td class="nbHitsCovered">&nbsp;2202</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;360</td> <td class="nbHitsCovered"><a title="Line 360: Conditional coverage 100% (2/2).">&nbsp;2202</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 360: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (equalsIgnoreCaseAndNonAlpha(word, weightedStr)) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;361</td> <td class="nbHitsCovered">&nbsp;251</td> <td class="src"><pre class="src">&nbsp; temp = LuceneUtils.escapeLuceneQuery(word) + WEIGHTING_BOOST;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;362</td> <td class="nbHitsCovered"><a title="Line 362: Conditional coverage 100% (2/2).">&nbsp;251</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 362: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (!word.equalsIgnoreCase(weightedStr)) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;363</td> <td class="nbHitsCovered">&nbsp;18</td> <td class="src"><pre class="src">&nbsp; temp += <span class="string">" "</span> + LuceneUtils.escapeLuceneQuery(weightedStr) + WEIGHTING_BOOST;</pre></td></tr>
<tr> <td class="numLine">&nbsp;364</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;365</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;366</td> <td class="nbHitsCovered">&nbsp;2110</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;367</td> <td class="nbHitsCovered"><a title="Line 367: Conditional coverage 100% (2/2).">&nbsp;1025</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 367: 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;368</td> <td class="nbHitsCovered">&nbsp;800</td> <td class="src"><pre class="src">&nbsp; temp = LuceneUtils.escapeLuceneQuery(word);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;366</td> <td class="nbHitsCovered">&nbsp;2202</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;367</td> <td class="nbHitsCovered"><a title="Line 367: Conditional coverage 100% (2/2).">&nbsp;1097</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 367: 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;368</td> <td class="nbHitsCovered">&nbsp;846</td> <td class="src"><pre class="src">&nbsp; temp = LuceneUtils.escapeLuceneQuery(word);</pre></td></tr>
<tr> <td class="numLine">&nbsp;369</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;370</td> <td class="nbHitsCovered">&nbsp;1025</td> <td class="src"><pre class="src">&nbsp; sb.append(<span class="string">" "</span>).append(temp);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;371</td> <td class="nbHitsCovered">&nbsp;1025</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;370</td> <td class="nbHitsCovered">&nbsp;1097</td> <td class="src"><pre class="src">&nbsp; sb.append(<span class="string">" "</span>).append(temp);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;371</td> <td class="nbHitsCovered">&nbsp;1097</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;372</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;373</td> <td class="nbHitsCovered">&nbsp;114</td> <td class="src"><pre class="src">&nbsp; sb.append(<span class="string">" ) "</span>);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;374</td> <td class="nbHitsCovered">&nbsp;114</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;373</td> <td class="nbHitsCovered">&nbsp;154</td> <td class="src"><pre class="src">&nbsp; sb.append(<span class="string">" ) "</span>);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;374</td> <td class="nbHitsCovered">&nbsp;154</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;375</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;376</td> <td class="nbHits">&nbsp;</td>
@@ -678,7 +678,7 @@
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;384</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;385</td> <td class="nbHitsCovered">&nbsp;2224</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;385</td> <td class="nbHitsCovered">&nbsp;2356</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;386</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;387</td> <td class="nbHits">&nbsp;</td>
@@ -701,15 +701,15 @@
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;396</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;397</td> <td class="nbHitsUncovered"><a title="Line 397: Conditional coverage 50% (2/4) [each condition: 50%, 50%].">&nbsp;2110</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 397: 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;397</td> <td class="nbHitsUncovered"><a title="Line 397: Conditional coverage 50% (2/4) [each condition: 50%, 50%].">&nbsp;2202</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 397: 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;398</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;399</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;400</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;401</td> <td class="nbHitsCovered">&nbsp;2110</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;402</td> <td class="nbHitsCovered">&nbsp;2110</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;403</td> <td class="nbHitsCovered">&nbsp;2110</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> left.equalsIgnoreCase(right);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;401</td> <td class="nbHitsCovered">&nbsp;2202</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;402</td> <td class="nbHitsCovered">&nbsp;2202</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;403</td> <td class="nbHitsCovered">&nbsp;2202</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> left.equalsIgnoreCase(right);</pre></td></tr>
<tr> <td class="numLine">&nbsp;404</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;405</td> <td class="nbHits">&nbsp;</td>
@@ -734,18 +734,18 @@
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;415</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;416</td> <td class="nbHitsCovered">&nbsp;622</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;416</td> <td class="nbHitsCovered">&nbsp;722</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;417</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;418</td> <td class="nbHitsCovered"><a title="Line 418: Conditional coverage 100% (4/4) [each condition: 100%, 100%].">&nbsp;622</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 418: 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;418</td> <td class="nbHitsCovered"><a title="Line 418: Conditional coverage 100% (4/4) [each condition: 100%, 100%].">&nbsp;722</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 418: 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;419</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;420</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;421</td> <td class="nbHitsCovered">&nbsp;51</td> <td class="src"><pre class="src">&nbsp; isValid = <span class="keyword">true</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;421</td> <td class="nbHitsCovered">&nbsp;71</td> <td class="src"><pre class="src">&nbsp; isValid = <span class="keyword">true</span>;</pre></td></tr>
<tr> <td class="numLine">&nbsp;422</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;423</td> <td class="nbHitsCovered">&nbsp;622</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> isValid;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;423</td> <td class="nbHitsCovered">&nbsp;722</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> isValid;</pre></td></tr>
<tr> <td class="numLine">&nbsp;424</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;425</td> <td class="nbHits">&nbsp;</td>
@@ -792,41 +792,41 @@
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;446</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;447</td> <td class="nbHitsUncovered"><a title="Line 447: Conditional coverage 50% (1/2).">&nbsp;679</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 447: 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;447</td> <td class="nbHitsUncovered"><a title="Line 447: Conditional coverage 50% (1/2).">&nbsp;799</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 447: 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;448</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;449</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;450</td> <td class="nbHitsCovered">&nbsp;679</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;451</td> <td class="nbHitsCovered">&nbsp;679</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;452</td> <td class="nbHitsCovered">&nbsp;679</td> <td class="src"><pre class="src">&nbsp; String tempWord = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;453</td> <td class="nbHitsCovered"><a title="Line 453: Conditional coverage 100% (2/2).">&nbsp;1826</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 453: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (String word : words) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;450</td> <td class="nbHitsCovered">&nbsp;799</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;451</td> <td class="nbHitsCovered">&nbsp;799</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;452</td> <td class="nbHitsCovered">&nbsp;799</td> <td class="src"><pre class="src">&nbsp; String tempWord = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;453</td> <td class="nbHitsCovered"><a title="Line 453: Conditional coverage 100% (2/2).">&nbsp;2254</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 453: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (String word : words) {</a></pre></td></tr>
<tr> <td class="numLine">&nbsp;454</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="comment">//single letter words should be concatonated with the next word.</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;455</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="comment">// so { "m", "core", "sample" } -&gt; { "mcore", "sample" }</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;456</td> <td class="nbHitsCovered"><a title="Line 456: Conditional coverage 100% (2/2).">&nbsp;1147</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 456: 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;456</td> <td class="nbHitsCovered"><a title="Line 456: Conditional coverage 100% (2/2).">&nbsp;1455</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 456: 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;457</td> <td class="nbHitsCovered">&nbsp;17</td> <td class="src"><pre class="src">&nbsp; list.add(tempWord + word);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;458</td> <td class="nbHitsCovered">&nbsp;17</td> <td class="src"><pre class="src">&nbsp; tempWord = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;459</td> <td class="nbHitsCovered"><a title="Line 459: Conditional coverage 100% (2/2).">&nbsp;1130</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 459: 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;460</td> <td class="nbHitsCovered">&nbsp;40</td> <td class="src"><pre class="src">&nbsp; tempWord = word;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;459</td> <td class="nbHitsCovered"><a title="Line 459: Conditional coverage 100% (2/2).">&nbsp;1438</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 459: 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;460</td> <td class="nbHitsCovered">&nbsp;41</td> <td class="src"><pre class="src">&nbsp; tempWord = word;</pre></td></tr>
<tr> <td class="numLine">&nbsp;461</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;462</td> <td class="nbHitsCovered">&nbsp;1090</td> <td class="src"><pre class="src">&nbsp; list.add(word);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;462</td> <td class="nbHitsCovered">&nbsp;1397</td> <td class="src"><pre class="src">&nbsp; list.add(word);</pre></td></tr>
<tr> <td class="numLine">&nbsp;463</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;464</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;465</td> <td class="nbHitsCovered"><a title="Line 465: Conditional coverage 100% (4/4) [each condition: 100%, 100%].">&nbsp;679</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 465: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> <span class="keyword">if</span> (tempWord != <span class="keyword">null</span> &amp;&amp; !list.isEmpty()) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;466</td> <td class="nbHitsCovered">&nbsp;19</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> String tmp = list.get(list.size() - 1) + tempWord;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;467</td> <td class="nbHitsCovered">&nbsp;19</td> <td class="src"><pre class="src">&nbsp; list.add(tmp);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;465</td> <td class="nbHitsCovered"><a title="Line 465: Conditional coverage 100% (4/4) [each condition: 100%, 100%].">&nbsp;799</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 465: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> <span class="keyword">if</span> (tempWord != <span class="keyword">null</span> &amp;&amp; !list.isEmpty()) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;466</td> <td class="nbHitsCovered">&nbsp;20</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> String tmp = list.get(list.size() - 1) + tempWord;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;467</td> <td class="nbHitsCovered">&nbsp;20</td> <td class="src"><pre class="src">&nbsp; list.add(tmp);</pre></td></tr>
<tr> <td class="numLine">&nbsp;468</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;469</td> <td class="nbHitsCovered">&nbsp;679</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;470</td> <td class="nbHitsCovered"><a title="Line 470: Conditional coverage 100% (2/2).">&nbsp;679</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 470: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (String word : list) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;471</td> <td class="nbHitsCovered">&nbsp;1126</td> <td class="src"><pre class="src">&nbsp; contains &amp;= ec.containsUsedString(word);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;469</td> <td class="nbHitsCovered">&nbsp;799</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;470</td> <td class="nbHitsCovered"><a title="Line 470: Conditional coverage 100% (2/2).">&nbsp;799</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 470: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (String word : list) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;471</td> <td class="nbHitsCovered">&nbsp;1434</td> <td class="src"><pre class="src">&nbsp; contains &amp;= ec.containsUsedString(word);</pre></td></tr>
<tr> <td class="numLine">&nbsp;472</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;473</td> <td class="nbHitsCovered">&nbsp;679</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> contains;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;473</td> <td class="nbHitsCovered">&nbsp;799</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> contains;</pre></td></tr>
<tr> <td class="numLine">&nbsp;474</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;475</td> <td class="nbHits">&nbsp;</td>
@@ -855,15 +855,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;487</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;488</td> <td class="nbHitsCovered">&nbsp;9</td> <td class="src"><pre class="src">&nbsp; determineCPE(dependency);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;488</td> <td class="nbHitsCovered">&nbsp;15</td> <td class="src"><pre class="src">&nbsp; determineCPE(dependency);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;489</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;490</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;491</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;492</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;493</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;494</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;495</td> <td class="nbHitsCovered">&nbsp;9</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;496</td> <td class="nbHitsCovered">&nbsp;9</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;495</td> <td class="nbHitsCovered">&nbsp;15</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;496</td> <td class="nbHitsCovered">&nbsp;15</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;497</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;498</td> <td class="nbHits">&nbsp;</td>
@@ -880,7 +880,7 @@
<td class="src"><pre class="src">&nbsp; @Override</pre></td></tr>
<tr> <td class="numLine">&nbsp;504</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">public</span> Set&lt;String&gt; getSupportedExtensions() {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;505</td> <td class="nbHitsCovered">&nbsp;129</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;505</td> <td class="nbHitsCovered">&nbsp;132</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLine">&nbsp;506</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;507</td> <td class="nbHits">&nbsp;</td>
@@ -899,7 +899,7 @@
<td class="src"><pre class="src">&nbsp; @Override</pre></td></tr>
<tr> <td class="numLine">&nbsp;514</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;515</td> <td class="nbHitsCovered">&nbsp;3</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;515</td> <td class="nbHitsCovered">&nbsp;9</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;516</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;517</td> <td class="nbHits">&nbsp;</td>
@@ -920,7 +920,7 @@
<td class="src"><pre class="src">&nbsp; @Override</pre></td></tr>
<tr> <td class="numLine">&nbsp;525</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">public</span> <span class="keyword">boolean</span> supportsExtension(String extension) {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;526</td> <td class="nbHitsCovered">&nbsp;3</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;526</td> <td class="nbHitsCovered">&nbsp;9</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;527</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;528</td> <td class="nbHits">&nbsp;</td>
@@ -939,7 +939,7 @@
<td class="src"><pre class="src">&nbsp; @Override</pre></td></tr>
<tr> <td class="numLine">&nbsp;535</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;536</td> <td class="nbHitsCovered">&nbsp;3</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> AnalysisPhase.IDENTIFIER_ANALYSIS;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;536</td> <td class="nbHitsCovered">&nbsp;6</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> AnalysisPhase.IDENTIFIER_ANALYSIS;</pre></td></tr>
<tr> <td class="numLine">&nbsp;537</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;538</td> <td class="nbHits">&nbsp;</td>
@@ -958,8 +958,8 @@
<td class="src"><pre class="src">&nbsp; @Override</pre></td></tr>
<tr> <td class="numLine">&nbsp;545</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;546</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;547</td> <td class="nbHitsCovered">&nbsp;1</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;546</td> <td class="nbHitsCovered">&nbsp;3</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">this</span>.open();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;547</td> <td class="nbHitsCovered">&nbsp;3</td> <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="numLine">&nbsp;549</td> <td class="nbHits">&nbsp;</td>
@@ -988,37 +988,37 @@
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;561</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;562</td> <td class="nbHitsCovered">&nbsp;51</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;563</td> <td class="nbHitsCovered">&nbsp;51</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;564</td> <td class="nbHitsCovered">&nbsp;51</td> <td class="src"><pre class="src">&nbsp; Confidence bestGuessConf = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;565</td> <td class="nbHitsCovered">&nbsp;51</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;566</td> <td class="nbHitsCovered"><a title="Line 566: Conditional coverage 100% (2/2).">&nbsp;255</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 566: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (Confidence conf : Confidence.values()) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;567</td> <td class="nbHitsCovered"><a title="Line 567: Conditional coverage 100% (2/2).">&nbsp;204</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 567: 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;568</td> <td class="nbHitsCovered">&nbsp;144</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;569</td> <td class="nbHitsUncovered"><a title="Line 569: Conditional coverage 50% (1/2).">&nbsp;144</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 569: 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;562</td> <td class="nbHitsCovered">&nbsp;71</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;563</td> <td class="nbHitsCovered">&nbsp;71</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;564</td> <td class="nbHitsCovered">&nbsp;71</td> <td class="src"><pre class="src">&nbsp; Confidence bestGuessConf = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;565</td> <td class="nbHitsCovered">&nbsp;71</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;566</td> <td class="nbHitsCovered"><a title="Line 566: Conditional coverage 100% (2/2).">&nbsp;355</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 566: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (Confidence conf : Confidence.values()) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;567</td> <td class="nbHitsCovered"><a title="Line 567: Conditional coverage 100% (2/2).">&nbsp;284</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 567: 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;568</td> <td class="nbHitsCovered">&nbsp;160</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;569</td> <td class="nbHitsUncovered"><a title="Line 569: Conditional coverage 50% (1/2).">&nbsp;160</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 569: 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;570</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;571</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;572</td> <td class="nbHitsCovered"><a title="Line 572: Conditional coverage 100% (2/2).">&nbsp;144</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 572: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (VulnerableSoftware vs : cpes) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;572</td> <td class="nbHitsCovered"><a title="Line 572: Conditional coverage 100% (2/2).">&nbsp;160</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 572: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (VulnerableSoftware vs : cpes) {</a></pre></td></tr>
<tr> <td class="numLine">&nbsp;573</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; DependencyVersion dbVer;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;574</td> <td class="nbHitsUncovered"><a title="Line 574: Conditional coverage 75% (3/4) [each condition: 100%, 50%].">&nbsp;8188</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 574: 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;574</td> <td class="nbHitsUncovered"><a title="Line 574: Conditional coverage 75% (3/4) [each condition: 100%, 50%].">&nbsp;9080</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 574: 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;575</td> <td class="nbHitsCovered">&nbsp;2855</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;576</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;577</td> <td class="nbHitsCovered">&nbsp;5333</td> <td class="src"><pre class="src">&nbsp; dbVer = DependencyVersionUtil.parseVersion(vs.getVersion());</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;577</td> <td class="nbHitsCovered">&nbsp;6225</td> <td class="src"><pre class="src">&nbsp; dbVer = DependencyVersionUtil.parseVersion(vs.getVersion());</pre></td></tr>
<tr> <td class="numLine">&nbsp;578</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;579</td> <td class="nbHitsCovered"><a title="Line 579: Conditional coverage 100% (4/4) [each condition: 100%, 100%].">&nbsp;8188</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 579: Conditional coverage 100% (4/4) [each condition: 100%, 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></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;579</td> <td class="nbHitsCovered"><a title="Line 579: Conditional coverage 100% (4/4) [each condition: 100%, 100%].">&nbsp;9080</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 579: Conditional coverage 100% (4/4) [each condition: 100%, 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></pre></td></tr>
<tr> <td class="numLine">&nbsp;580</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; || evVer.equals(dbVer)) { <span class="comment">//woot exect match</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;581</td> <td class="nbHitsCovered">&nbsp;137</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> String url = String.format(<span class="string">"http://web.nvd.nist.gov/view/vuln/search?cpe=%s"</span>, URLEncoder.encode(vs.getName(), <span class="string">"UTF-8"</span>));</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;582</td> <td class="nbHitsCovered">&nbsp;137</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;583</td> <td class="nbHitsCovered">&nbsp;137</td> <td class="src"><pre class="src">&nbsp; collected.add(match);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;584</td> <td class="nbHitsCovered">&nbsp;137</td> <td class="src"><pre class="src">&nbsp; } <span class="keyword">else</span> {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;581</td> <td class="nbHitsCovered">&nbsp;169</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> String url = String.format(<span class="string">"http://web.nvd.nist.gov/view/vuln/search?cpe=%s"</span>, URLEncoder.encode(vs.getName(), <span class="string">"UTF-8"</span>));</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;582</td> <td class="nbHitsCovered">&nbsp;169</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;583</td> <td class="nbHitsCovered">&nbsp;169</td> <td class="src"><pre class="src">&nbsp; collected.add(match);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;584</td> <td class="nbHitsCovered">&nbsp;169</td> <td class="src"><pre class="src">&nbsp; } <span class="keyword">else</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">//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;586</td> <td class="nbHitsCovered"><a title="Line 586: Conditional coverage 100% (4/4) [each condition: 100%, 100%].">&nbsp;8051</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 586: 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;586</td> <td class="nbHitsCovered"><a title="Line 586: Conditional coverage 100% (4/4) [each condition: 100%, 100%].">&nbsp;8911</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 586: 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;587</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;588</td> <td class="nbHitsUncovered"><a title="Line 588: Conditional coverage 75% (3/4) [each condition: 100%, 50%].">&nbsp;412</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 588: 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>
@@ -1033,41 +1033,41 @@
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;595</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;596</td> <td class="nbHitsCovered">&nbsp;8188</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;597</td> <td class="nbHitsUncovered"><a title="Line 597: Conditional coverage 75% (3/4) [each condition: 100%, 50%].">&nbsp;144</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 597: 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;598</td> <td class="nbHitsUncovered"><a title="Line 598: Conditional coverage 50% (1/2).">&nbsp;41</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 598: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (bestGuess.getVersionParts().size() &lt; evVer.getVersionParts().size()) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;599</td> <td class="nbHitsCovered">&nbsp;41</td> <td class="src"><pre class="src">&nbsp; bestGuess = evVer;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;600</td> <td class="nbHitsCovered">&nbsp;41</td> <td class="src"><pre class="src">&nbsp; bestGuessConf = conf;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;596</td> <td class="nbHitsCovered">&nbsp;9080</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;597</td> <td class="nbHitsUncovered"><a title="Line 597: Conditional coverage 75% (3/4) [each condition: 100%, 50%].">&nbsp;160</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 597: 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;598</td> <td class="nbHitsUncovered"><a title="Line 598: Conditional coverage 50% (1/2).">&nbsp;49</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 598: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (bestGuess.getVersionParts().size() &lt; evVer.getVersionParts().size()) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;599</td> <td class="nbHitsCovered">&nbsp;49</td> <td class="src"><pre class="src">&nbsp; bestGuess = evVer;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;600</td> <td class="nbHitsCovered">&nbsp;49</td> <td class="src"><pre class="src">&nbsp; bestGuessConf = conf;</pre></td></tr>
<tr> <td class="numLine">&nbsp;601</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</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="numLineCover">&nbsp;603</td> <td class="nbHitsCovered">&nbsp;144</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;603</td> <td class="nbHitsCovered">&nbsp;160</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;604</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;605</td> <td class="nbHitsCovered">&nbsp;51</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;606</td> <td class="nbHitsCovered">&nbsp;51</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> String url = <span class="keyword">null</span>; <span class="comment">//String.format("http://web.nvd.nist.gov/view/vuln/search?cpe=%s", URLEncoder.encode(cpeName, "UTF-8"));</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;607</td> <td class="nbHitsUncovered"><a title="Line 607: Conditional coverage 50% (1/2).">&nbsp;51</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 607: 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;608</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="numLineCover">&nbsp;605</td> <td class="nbHitsCovered">&nbsp;71</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;606</td> <td class="nbHitsCovered">&nbsp;71</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> String url = <span class="keyword">null</span>; <span class="comment">//String.format("http://web.nvd.nist.gov/view/vuln/search?cpe=%s", URLEncoder.encode(cpeName, "UTF-8"));</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;607</td> <td class="nbHitsCovered"><a title="Line 607: Conditional coverage 100% (2/2).">&nbsp;71</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 607: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (bestGuessConf == <span class="keyword">null</span>) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;608</td> <td class="nbHitsCovered">&nbsp;12</td> <td class="src"><pre class="src">&nbsp; bestGuessConf = Confidence.LOW;</pre></td></tr>
<tr> <td class="numLine">&nbsp;609</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;610</td> <td class="nbHitsCovered">&nbsp;51</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;611</td> <td class="nbHitsCovered">&nbsp;51</td> <td class="src"><pre class="src">&nbsp; collected.add(match);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;610</td> <td class="nbHitsCovered">&nbsp;71</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;611</td> <td class="nbHitsCovered">&nbsp;71</td> <td class="src"><pre class="src">&nbsp; collected.add(match);</pre></td></tr>
<tr> <td class="numLine">&nbsp;612</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;613</td> <td class="nbHitsCovered">&nbsp;51</td> <td class="src"><pre class="src">&nbsp; Collections.sort(collected);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;614</td> <td class="nbHitsCovered">&nbsp;51</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;615</td> <td class="nbHitsCovered">&nbsp;51</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;616</td> <td class="nbHitsCovered"><a title="Line 616: Conditional coverage 100% (2/2).">&nbsp;51</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 616: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (IdentifierMatch m : collected) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;617</td> <td class="nbHitsCovered"><a title="Line 617: Conditional coverage 100% (4/4) [each condition: 100%, 100%].">&nbsp;188</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 617: 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;613</td> <td class="nbHitsCovered">&nbsp;71</td> <td class="src"><pre class="src">&nbsp; Collections.sort(collected);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;614</td> <td class="nbHitsCovered">&nbsp;71</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;615</td> <td class="nbHitsCovered">&nbsp;71</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;616</td> <td class="nbHitsCovered"><a title="Line 616: Conditional coverage 100% (2/2).">&nbsp;71</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 616: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (IdentifierMatch m : collected) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;617</td> <td class="nbHitsCovered"><a title="Line 617: Conditional coverage 100% (4/4) [each condition: 100%, 100%].">&nbsp;240</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 617: 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;618</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;619</td> <td class="nbHitsCovered">&nbsp;60</td> <td class="src"><pre class="src">&nbsp; dependency.addIdentifier(m.getIdentifier());</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;619</td> <td class="nbHitsCovered">&nbsp;88</td> <td class="src"><pre class="src">&nbsp; dependency.addIdentifier(m.getIdentifier());</pre></td></tr>
<tr> <td class="numLine">&nbsp;620</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;621</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;622</td> <td class="nbHitsCovered">&nbsp;51</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;622</td> <td class="nbHitsCovered">&nbsp;71</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;623</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;624</td> <td class="nbHits">&nbsp;</td>
@@ -1105,7 +1105,7 @@
<td class="src"><pre class="src">&nbsp;<span class="comment"> * confidence in the identifier.</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;642</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;643</td> <td class="nbHitsCovered">&nbsp;185</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;643</td> <td class="nbHitsCovered">&nbsp;225</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;644</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;645</td> <td class="nbHits">&nbsp;</td>
@@ -1130,11 +1130,11 @@
<td class="src"><pre class="src">&nbsp;<span class="comment"> * the identifier</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;655</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;656</td> <td class="nbHitsCovered">&nbsp;188</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;657</td> <td class="nbHitsCovered">&nbsp;188</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;658</td> <td class="nbHitsCovered">&nbsp;188</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">this</span>.confidence = identifierConfidence;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;659</td> <td class="nbHitsCovered">&nbsp;188</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">this</span>.evidenceConfidence = evidenceConfidence;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;660</td> <td class="nbHitsCovered">&nbsp;188</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;656</td> <td class="nbHitsCovered">&nbsp;240</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;657</td> <td class="nbHitsCovered">&nbsp;240</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;658</td> <td class="nbHitsCovered">&nbsp;240</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">this</span>.confidence = identifierConfidence;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;659</td> <td class="nbHitsCovered">&nbsp;240</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">this</span>.evidenceConfidence = evidenceConfidence;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;660</td> <td class="nbHitsCovered">&nbsp;240</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;661</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;662</td> <td class="nbHits">&nbsp;</td>
@@ -1159,7 +1159,7 @@
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;672</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">public</span> Confidence getEvidenceConfidence() {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;673</td> <td class="nbHitsCovered">&nbsp;199</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> evidenceConfidence;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;673</td> <td class="nbHitsCovered">&nbsp;263</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> evidenceConfidence;</pre></td></tr>
<tr> <td class="numLine">&nbsp;674</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;675</td> <td class="nbHits">&nbsp;</td>
@@ -1200,7 +1200,7 @@
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;694</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">public</span> IdentifierConfidence getConfidence() {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;695</td> <td class="nbHitsCovered">&nbsp;239</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> confidence;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;695</td> <td class="nbHitsCovered">&nbsp;311</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> confidence;</pre></td></tr>
<tr> <td class="numLine">&nbsp;696</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;697</td> <td class="nbHits">&nbsp;</td>
@@ -1241,7 +1241,7 @@
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;716</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">public</span> Identifier getIdentifier() {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;717</td> <td class="nbHitsCovered">&nbsp;60</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> identifier;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;717</td> <td class="nbHitsCovered">&nbsp;88</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> identifier;</pre></td></tr>
<tr> <td class="numLine">&nbsp;718</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;719</td> <td class="nbHits">&nbsp;</td>
@@ -1372,16 +1372,16 @@
<td class="src"><pre class="src">&nbsp; @Override</pre></td></tr>
<tr> <td class="numLine">&nbsp;792</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;793</td> <td class="nbHitsCovered">&nbsp;185</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;794</td> <td class="nbHitsCovered"><a title="Line 794: Conditional coverage 100% (2/2).">&nbsp;185</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 794: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (conf == 0) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;795</td> <td class="nbHitsCovered">&nbsp;145</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;796</td> <td class="nbHitsCovered"><a title="Line 796: Conditional coverage 100% (2/2).">&nbsp;145</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 796: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (conf == 0) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;797</td> <td class="nbHitsCovered">&nbsp;67</td> <td class="src"><pre class="src">&nbsp; conf = identifier.compareTo(o.identifier);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;793</td> <td class="nbHitsCovered">&nbsp;225</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;794</td> <td class="nbHitsCovered"><a title="Line 794: Conditional coverage 100% (2/2).">&nbsp;225</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 794: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (conf == 0) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;795</td> <td class="nbHitsCovered">&nbsp;177</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;796</td> <td class="nbHitsCovered"><a title="Line 796: Conditional coverage 100% (2/2).">&nbsp;177</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 796: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (conf == 0) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;797</td> <td class="nbHitsCovered">&nbsp;83</td> <td class="src"><pre class="src">&nbsp; conf = identifier.compareTo(o.identifier);</pre></td></tr>
<tr> <td class="numLine">&nbsp;798</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;799</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;800</td> <td class="nbHitsCovered">&nbsp;185</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> conf;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;800</td> <td class="nbHitsCovered">&nbsp;225</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> conf;</pre></td></tr>
<tr> <td class="numLine">&nbsp;801</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;802</td> <td class="nbHits">&nbsp;</td>
@@ -1390,6 +1390,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> 1.9.4.1 on 10/20/13 9:38 PM.</div>
<div class="footer">Report generated by <a href="http://cobertura.sourceforge.net/" target="_top">Cobertura</a> 1.9.4.1 on 11/16/13 1:26 PM.</div>
</body>
</html>