version 1.3.3 of the site documentation

This commit is contained in:
Jeremy Long
2015-12-11 19:59:11 -05:00
parent 44c6a6b4e8
commit 15e7c351e4
1034 changed files with 3904 additions and 6237 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.data.nvdcve.CveDB.html">CveDB</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">47%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:47px"><span class="text">198/419</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">54%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:54px"><span class="text">70/128</span></div></div></td></tr></table></td><td class="value"><span class="hidden">5.2727272727272725;</span>5.273</td></tr>
<tr><td><a href="org.owasp.dependencycheck.data.nvdcve.CveDB.html">CveDB</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">47%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:47px"><span class="text">200/419</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">57%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:57px"><span class="text">73/128</span></div></div></td></tr></table></td><td class="value"><span class="hidden">5.2727272727272725;</span>5.273</td></tr>
</table>
<div class="separator">&nbsp;</div>
@@ -202,7 +202,7 @@
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;101</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">protected</span> Connection getConnection() {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;102</td> <td class="nbHitsCovered">&nbsp;35</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> conn;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;102</td> <td class="nbHitsCovered">&nbsp;37</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> conn;</pre></td></tr>
<tr> <td class="numLine">&nbsp;103</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;104</td> <td class="nbHits">&nbsp;</td>
@@ -234,7 +234,7 @@
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;119</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;120</td> <td class="nbHitsCovered"><a title="Line 120: Conditional coverage 100% (2/2).">&nbsp;11</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 120: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (conn != <span class="keyword">null</span>) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;120</td> <td class="nbHitsCovered"><a title="Line 120: Conditional coverage 100% (2/2).">&nbsp;8</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 120: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (conn != <span class="keyword">null</span>) {</a></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">try</span> {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;122</td> <td class="nbHitsCovered">&nbsp;6</td> <td class="src"><pre class="src">&nbsp; conn.close();</pre></td></tr>
@@ -248,7 +248,7 @@
<tr> <td class="numLineCover">&nbsp;130</td> <td class="nbHitsCovered">&nbsp;6</td> <td class="src"><pre class="src">&nbsp; conn = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLine">&nbsp;131</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;132</td> <td class="nbHitsCovered">&nbsp;11</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;132</td> <td class="nbHitsCovered">&nbsp;8</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;133</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;134</td> <td class="nbHits">&nbsp;</td>
@@ -307,10 +307,10 @@
<td class="src"><pre class="src">&nbsp; @SuppressWarnings(<span class="string">"FinalizeDeclaration"</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> finalize() <span class="keyword">throws</span> Throwable {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;163</td> <td class="nbHitsCovered">&nbsp;5</td> <td class="src"><pre class="src">&nbsp; LOGGER.debug(<span class="string">"Entering finalize"</span>);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;164</td> <td class="nbHitsCovered">&nbsp;5</td> <td class="src"><pre class="src">&nbsp; close();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;165</td> <td class="nbHitsCovered">&nbsp;5</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">super</span>.finalize();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;166</td> <td class="nbHitsCovered">&nbsp;5</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;163</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; LOGGER.debug(<span class="string">"Entering finalize"</span>);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;164</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; close();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;165</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">super</span>.finalize();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;166</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;167</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;168</td> <td class="nbHits">&nbsp;</td>
@@ -356,31 +356,31 @@
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;189</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">public</span> Set&lt;VulnerableSoftware&gt; getCPEs(String vendor, String product) {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;190</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> Set&lt;VulnerableSoftware&gt; cpe = <span class="keyword">new</span> HashSet&lt;VulnerableSoftware&gt;();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;191</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; ResultSet rs = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;192</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; PreparedStatement ps = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;190</td> <td class="nbHitsCovered">&nbsp;3</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> Set&lt;VulnerableSoftware&gt; cpe = <span class="keyword">new</span> HashSet&lt;VulnerableSoftware&gt;();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;191</td> <td class="nbHitsCovered">&nbsp;3</td> <td class="src"><pre class="src">&nbsp; ResultSet rs = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;192</td> <td class="nbHitsCovered">&nbsp;3</td> <td class="src"><pre class="src">&nbsp; PreparedStatement ps = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLine">&nbsp;193</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;194</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; ps = getConnection().prepareStatement(statementBundle.getString(<span class="string">"SELECT_CPE_ENTRIES"</span>));</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;195</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; ps.setString(1, vendor);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;196</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; ps.setString(2, product);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;197</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; rs = ps.executeQuery();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;194</td> <td class="nbHitsCovered">&nbsp;3</td> <td class="src"><pre class="src">&nbsp; ps = getConnection().prepareStatement(statementBundle.getString(<span class="string">"SELECT_CPE_ENTRIES"</span>));</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;195</td> <td class="nbHitsCovered">&nbsp;3</td> <td class="src"><pre class="src">&nbsp; ps.setString(1, vendor);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;196</td> <td class="nbHitsCovered">&nbsp;3</td> <td class="src"><pre class="src">&nbsp; ps.setString(2, product);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;197</td> <td class="nbHitsCovered">&nbsp;3</td> <td class="src"><pre class="src">&nbsp; rs = ps.executeQuery();</pre></td></tr>
<tr> <td class="numLine">&nbsp;198</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;199</td> <td class="nbHitsCovered"><a title="Line 199: Conditional coverage 100% (2/2).">&nbsp;80</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 199: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (rs.next()) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;200</td> <td class="nbHitsCovered">&nbsp;78</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> VulnerableSoftware vs = <span class="keyword">new</span> VulnerableSoftware();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;201</td> <td class="nbHitsCovered">&nbsp;78</td> <td class="src"><pre class="src">&nbsp; vs.setCpe(rs.getString(1));</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;202</td> <td class="nbHitsCovered">&nbsp;78</td> <td class="src"><pre class="src">&nbsp; cpe.add(vs);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;203</td> <td class="nbHitsCovered">&nbsp;78</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;199</td> <td class="nbHitsCovered"><a title="Line 199: Conditional coverage 100% (2/2).">&nbsp;112</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 199: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (rs.next()) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;200</td> <td class="nbHitsCovered">&nbsp;109</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> VulnerableSoftware vs = <span class="keyword">new</span> VulnerableSoftware();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;201</td> <td class="nbHitsCovered">&nbsp;109</td> <td class="src"><pre class="src">&nbsp; vs.setCpe(rs.getString(1));</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;202</td> <td class="nbHitsCovered">&nbsp;109</td> <td class="src"><pre class="src">&nbsp; cpe.add(vs);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;203</td> <td class="nbHitsCovered">&nbsp;109</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;204</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;205</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; LOGGER.error(<span class="string">"An unexpected SQL Exception occurred; please see the verbose log for more details."</span>);</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;206</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; LOGGER.debug(<span class="string">""</span>, ex);</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;207</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; } <span class="keyword">finally</span> {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;208</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; DBUtils.closeResultSet(rs);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;209</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; DBUtils.closeStatement(ps);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;210</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;211</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> cpe;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;208</td> <td class="nbHitsCovered">&nbsp;3</td> <td class="src"><pre class="src">&nbsp; DBUtils.closeResultSet(rs);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;209</td> <td class="nbHitsCovered">&nbsp;3</td> <td class="src"><pre class="src">&nbsp; DBUtils.closeStatement(ps);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;210</td> <td class="nbHitsCovered">&nbsp;3</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;211</td> <td class="nbHitsCovered">&nbsp;3</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> cpe;</pre></td></tr>
<tr> <td class="numLine">&nbsp;212</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;213</td> <td class="nbHits">&nbsp;</td>
@@ -406,8 +406,8 @@
<td class="src"><pre class="src">&nbsp; <span class="keyword">try</span> {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;225</td> <td class="nbHitsCovered">&nbsp;1</td> <td class="src"><pre class="src">&nbsp; ps = getConnection().prepareStatement(statementBundle.getString(<span class="string">"SELECT_VENDOR_PRODUCT_LIST"</span>));</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;226</td> <td class="nbHitsCovered">&nbsp;1</td> <td class="src"><pre class="src">&nbsp; rs = ps.executeQuery();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;227</td> <td class="nbHitsCovered"><a title="Line 227: Conditional coverage 100% (2/2).">&nbsp;22137</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 227: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (rs.next()) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;228</td> <td class="nbHitsCovered">&nbsp;22136</td> <td class="src"><pre class="src">&nbsp; data.add(<span class="keyword">new</span> Pair&lt;String, String&gt;(rs.getString(1), rs.getString(2)));</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;227</td> <td class="nbHitsCovered"><a title="Line 227: Conditional coverage 100% (2/2).">&nbsp;25471</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 227: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (rs.next()) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;228</td> <td class="nbHitsCovered">&nbsp;25470</td> <td class="src"><pre class="src">&nbsp; data.add(<span class="keyword">new</span> Pair&lt;String, String&gt;(rs.getString(1), rs.getString(2)));</pre></td></tr>
<tr> <td class="numLine">&nbsp;229</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;230</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>
@@ -442,8 +442,8 @@
<td class="src"><pre class="src">&nbsp; <span class="keyword">try</span> {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;250</td> <td class="nbHitsCovered">&nbsp;6</td> <td class="src"><pre class="src">&nbsp; ps = getConnection().prepareStatement(statementBundle.getString(<span class="string">"SELECT_PROPERTIES"</span>));</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;251</td> <td class="nbHitsCovered">&nbsp;6</td> <td class="src"><pre class="src">&nbsp; rs = ps.executeQuery();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;252</td> <td class="nbHitsCovered"><a title="Line 252: Conditional coverage 100% (2/2).">&nbsp;96</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 252: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (rs.next()) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;253</td> <td class="nbHitsCovered">&nbsp;90</td> <td class="src"><pre class="src">&nbsp; prop.setProperty(rs.getString(1), rs.getString(2));</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;252</td> <td class="nbHitsCovered"><a title="Line 252: Conditional coverage 100% (2/2).">&nbsp;120</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 252: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (rs.next()) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;253</td> <td class="nbHitsCovered">&nbsp;114</td> <td class="src"><pre class="src">&nbsp; prop.setProperty(rs.getString(1), rs.getString(2));</pre></td></tr>
<tr> <td class="numLine">&nbsp;254</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;255</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>
@@ -533,54 +533,54 @@
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;314</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">public</span> List&lt;Vulnerability&gt; getVulnerabilities(String cpeStr) <span class="keyword">throws</span> DatabaseException {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;315</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> VulnerableSoftware cpe = <span class="keyword">new</span> VulnerableSoftware();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;315</td> <td class="nbHitsCovered">&nbsp;3</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> VulnerableSoftware cpe = <span class="keyword">new</span> VulnerableSoftware();</pre></td></tr>
<tr> <td class="numLine">&nbsp;316</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;317</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; cpe.parseName(cpeStr);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;317</td> <td class="nbHitsCovered">&nbsp;3</td> <td class="src"><pre class="src">&nbsp; cpe.parseName(cpeStr);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;318</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; } <span class="keyword">catch</span> (UnsupportedEncodingException ex) {</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; LOGGER.trace(<span class="string">""</span>, ex);</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;320</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;321</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> DependencyVersion detectedVersion = parseDependencyVersion(cpe);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;322</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> List&lt;Vulnerability&gt; vulnerabilities = <span class="keyword">new</span> ArrayList&lt;Vulnerability&gt;();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;320</td> <td class="nbHitsCovered">&nbsp;3</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;321</td> <td class="nbHitsCovered">&nbsp;3</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> DependencyVersion detectedVersion = parseDependencyVersion(cpe);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;322</td> <td class="nbHitsCovered">&nbsp;3</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> List&lt;Vulnerability&gt; vulnerabilities = <span class="keyword">new</span> ArrayList&lt;Vulnerability&gt;();</pre></td></tr>
<tr> <td class="numLine">&nbsp;323</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;324</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; PreparedStatement ps = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;325</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; ResultSet rs = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;324</td> <td class="nbHitsCovered">&nbsp;3</td> <td class="src"><pre class="src">&nbsp; PreparedStatement ps = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;325</td> <td class="nbHitsCovered">&nbsp;3</td> <td class="src"><pre class="src">&nbsp; ResultSet rs = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLine">&nbsp;326</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;327</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; ps = getConnection().prepareStatement(statementBundle.getString(<span class="string">"SELECT_CVE_FROM_SOFTWARE"</span>));</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;328</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; ps.setString(1, cpe.getVendor());</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;329</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; ps.setString(2, cpe.getProduct());</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;330</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; rs = ps.executeQuery();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;331</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; String currentCVE = <span class="string">""</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;327</td> <td class="nbHitsCovered">&nbsp;3</td> <td class="src"><pre class="src">&nbsp; ps = getConnection().prepareStatement(statementBundle.getString(<span class="string">"SELECT_CVE_FROM_SOFTWARE"</span>));</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;328</td> <td class="nbHitsCovered">&nbsp;3</td> <td class="src"><pre class="src">&nbsp; ps.setString(1, cpe.getVendor());</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;329</td> <td class="nbHitsCovered">&nbsp;3</td> <td class="src"><pre class="src">&nbsp; ps.setString(2, cpe.getProduct());</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;330</td> <td class="nbHitsCovered">&nbsp;3</td> <td class="src"><pre class="src">&nbsp; rs = ps.executeQuery();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;331</td> <td class="nbHitsCovered">&nbsp;3</td> <td class="src"><pre class="src">&nbsp; String currentCVE = <span class="string">""</span>;</pre></td></tr>
<tr> <td class="numLine">&nbsp;332</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;333</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> Map&lt;String, Boolean&gt; vulnSoftware = <span class="keyword">new</span> HashMap&lt;String, Boolean&gt;();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;334</td> <td class="nbHitsCovered"><a title="Line 334: Conditional coverage 100% (2/2).">&nbsp;225</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 334: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (rs.next()) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;335</td> <td class="nbHitsCovered">&nbsp;223</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> String cveId = rs.getString(1);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;336</td> <td class="nbHitsCovered"><a title="Line 336: Conditional coverage 100% (2/2).">&nbsp;223</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 336: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (!currentCVE.equals(cveId)) { <span class="comment">//check for match and add</span></a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;337</td> <td class="nbHitsCovered">&nbsp;8</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> Entry&lt;String, Boolean&gt; matchedCPE = getMatchingSoftware(vulnSoftware, cpe.getVendor(), cpe.getProduct(), detectedVersion);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;338</td> <td class="nbHitsCovered"><a title="Line 338: Conditional coverage 100% (2/2).">&nbsp;8</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 338: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (matchedCPE != <span class="keyword">null</span>) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;333</td> <td class="nbHitsCovered">&nbsp;3</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> Map&lt;String, Boolean&gt; vulnSoftware = <span class="keyword">new</span> HashMap&lt;String, Boolean&gt;();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;334</td> <td class="nbHitsCovered"><a title="Line 334: Conditional coverage 100% (2/2).">&nbsp;282</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 334: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (rs.next()) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;335</td> <td class="nbHitsCovered">&nbsp;279</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> String cveId = rs.getString(1);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;336</td> <td class="nbHitsCovered"><a title="Line 336: Conditional coverage 100% (2/2).">&nbsp;279</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 336: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (!currentCVE.equals(cveId)) { <span class="comment">//check for match and add</span></a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;337</td> <td class="nbHitsCovered">&nbsp;10</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> Entry&lt;String, Boolean&gt; matchedCPE = getMatchingSoftware(vulnSoftware, cpe.getVendor(), cpe.getProduct(), detectedVersion);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;338</td> <td class="nbHitsCovered"><a title="Line 338: Conditional coverage 100% (2/2).">&nbsp;10</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 338: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (matchedCPE != <span class="keyword">null</span>) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;339</td> <td class="nbHitsCovered">&nbsp;6</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> Vulnerability v = getVulnerability(currentCVE);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;340</td> <td class="nbHitsUncovered"><a title="Line 340: Conditional coverage 50% (1/2).">&nbsp;6</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 340: Conditional coverage 50% (1/2)."> v.setMatchedCPE(matchedCPE.getKey(), matchedCPE.getValue() ? <span class="string">"Y"</span> : <span class="keyword">null</span>);</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;341</td> <td class="nbHitsCovered">&nbsp;6</td> <td class="src"><pre class="src">&nbsp; vulnerabilities.add(v);</pre></td></tr>
<tr> <td class="numLine">&nbsp;342</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;343</td> <td class="nbHitsCovered">&nbsp;8</td> <td class="src"><pre class="src">&nbsp; vulnSoftware.clear();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;344</td> <td class="nbHitsCovered">&nbsp;8</td> <td class="src"><pre class="src">&nbsp; currentCVE = cveId;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;343</td> <td class="nbHitsCovered">&nbsp;10</td> <td class="src"><pre class="src">&nbsp; vulnSoftware.clear();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;344</td> <td class="nbHitsCovered">&nbsp;10</td> <td class="src"><pre class="src">&nbsp; currentCVE = cveId;</pre></td></tr>
<tr> <td class="numLine">&nbsp;345</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</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="nbHitsCovered">&nbsp;223</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> String cpeId = rs.getString(2);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;348</td> <td class="nbHitsCovered">&nbsp;223</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> String previous = rs.getString(3);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;349</td> <td class="nbHitsUncovered"><a title="Line 349: Conditional coverage 75% (3/4) [each condition: 100%, 50%].">&nbsp;223</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 349: Conditional coverage 75% (3/4) [each condition: 100%, 50%]."> <span class="keyword">final</span> Boolean p = previous != <span class="keyword">null</span> &amp;&amp; !previous.isEmpty();</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;350</td> <td class="nbHitsCovered">&nbsp;223</td> <td class="src"><pre class="src">&nbsp; vulnSoftware.put(cpeId, p);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;351</td> <td class="nbHitsCovered">&nbsp;223</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;347</td> <td class="nbHitsCovered">&nbsp;279</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> String cpeId = rs.getString(2);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;348</td> <td class="nbHitsCovered">&nbsp;279</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> String previous = rs.getString(3);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;349</td> <td class="nbHitsUncovered"><a title="Line 349: Conditional coverage 75% (3/4) [each condition: 100%, 50%].">&nbsp;279</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 349: Conditional coverage 75% (3/4) [each condition: 100%, 50%]."> <span class="keyword">final</span> Boolean p = previous != <span class="keyword">null</span> &amp;&amp; !previous.isEmpty();</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;350</td> <td class="nbHitsCovered">&nbsp;279</td> <td class="src"><pre class="src">&nbsp; vulnSoftware.put(cpeId, p);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;351</td> <td class="nbHitsCovered">&nbsp;279</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;352</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="comment">//remember to process the last set of CVE/CPE entries</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;353</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> Entry&lt;String, Boolean&gt; matchedCPE = getMatchingSoftware(vulnSoftware, cpe.getVendor(), cpe.getProduct(), detectedVersion);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;354</td> <td class="nbHitsUncovered"><a title="Line 354: Conditional coverage 50% (1/2).">&nbsp;2</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 354: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (matchedCPE != <span class="keyword">null</span>) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;353</td> <td class="nbHitsCovered">&nbsp;3</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> Entry&lt;String, Boolean&gt; matchedCPE = getMatchingSoftware(vulnSoftware, cpe.getVendor(), cpe.getProduct(), detectedVersion);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;354</td> <td class="nbHitsCovered"><a title="Line 354: Conditional coverage 100% (2/2).">&nbsp;3</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 354: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (matchedCPE != <span class="keyword">null</span>) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;355</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> Vulnerability v = getVulnerability(currentCVE);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;356</td> <td class="nbHitsUncovered"><a title="Line 356: Conditional coverage 50% (1/2).">&nbsp;2</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 356: Conditional coverage 50% (1/2)."> v.setMatchedCPE(matchedCPE.getKey(), matchedCPE.getValue() ? <span class="string">"Y"</span> : <span class="keyword">null</span>);</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;357</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; vulnerabilities.add(v);</pre></td></tr>
@@ -590,10 +590,10 @@
<tr> <td class="numLineCover">&nbsp;360</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">"Exception retrieving vulnerability for "</span> + cpeStr, ex);</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;361</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; } <span class="keyword">finally</span> {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;362</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; DBUtils.closeResultSet(rs);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;363</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; DBUtils.closeStatement(ps);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;364</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;365</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> vulnerabilities;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;362</td> <td class="nbHitsCovered">&nbsp;3</td> <td class="src"><pre class="src">&nbsp; DBUtils.closeResultSet(rs);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;363</td> <td class="nbHitsCovered">&nbsp;3</td> <td class="src"><pre class="src">&nbsp; DBUtils.closeStatement(ps);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;364</td> <td class="nbHitsCovered">&nbsp;3</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;365</td> <td class="nbHitsCovered">&nbsp;3</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> vulnerabilities;</pre></td></tr>
<tr> <td class="numLine">&nbsp;366</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;367</td> <td class="nbHits">&nbsp;</td>
@@ -979,19 +979,19 @@
<td class="src"><pre class="src">&nbsp; DependencyVersion identifiedVersion) {</pre></td></tr>
<tr> <td class="numLine">&nbsp;656</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;657</td> <td class="nbHitsUncovered"><a title="Line 657: Conditional coverage 25% (1/4) [each condition: 50%, 0%].">&nbsp;10</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 657: Conditional coverage 25% (1/4) [each condition: 50%, 0%]."> <span class="keyword">final</span> <span class="keyword">boolean</span> isVersionTwoADifferentProduct = <span class="string">"apache"</span>.equals(vendor) &amp;&amp; <span class="string">"struts"</span>.equals(product);</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;657</td> <td class="nbHitsUncovered"><a title="Line 657: Conditional coverage 25% (1/4) [each condition: 50%, 0%].">&nbsp;13</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 657: Conditional coverage 25% (1/4) [each condition: 50%, 0%]."> <span class="keyword">final</span> <span class="keyword">boolean</span> isVersionTwoADifferentProduct = <span class="string">"apache"</span>.equals(vendor) &amp;&amp; <span class="string">"struts"</span>.equals(product);</a></span></pre></td></tr>
<tr> <td class="numLine">&nbsp;658</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;659</td> <td class="nbHitsCovered">&nbsp;10</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> Set&lt;String&gt; majorVersionsAffectingAllPrevious = <span class="keyword">new</span> HashSet&lt;String&gt;();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;660</td> <td class="nbHitsUncovered"><a title="Line 660: Conditional coverage 50% (2/4) [each condition: 50%, 50%].">&nbsp;10</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 660: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> <span class="keyword">final</span> <span class="keyword">boolean</span> matchesAnyPrevious = identifiedVersion == <span class="keyword">null</span> || <span class="string">"-"</span>.equals(identifiedVersion.toString());</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;661</td> <td class="nbHitsCovered">&nbsp;10</td> <td class="src"><pre class="src">&nbsp; String majorVersionMatch = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;662</td> <td class="nbHitsCovered"><a title="Line 662: Conditional coverage 100% (2/2).">&nbsp;10</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 662: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (Entry&lt;String, Boolean&gt; entry : vulnerableSoftware.entrySet()) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;663</td> <td class="nbHitsCovered">&nbsp;223</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> DependencyVersion v = parseDependencyVersion(entry.getKey());</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;664</td> <td class="nbHitsUncovered"><a title="Line 664: Conditional coverage 50% (2/4) [each condition: 50%, 50%].">&nbsp;223</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 664: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> <span class="keyword">if</span> (v == <span class="keyword">null</span> || <span class="string">"-"</span>.equals(v.toString())) { <span class="comment">//all versions</span></a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;659</td> <td class="nbHitsCovered">&nbsp;13</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> Set&lt;String&gt; majorVersionsAffectingAllPrevious = <span class="keyword">new</span> HashSet&lt;String&gt;();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;660</td> <td class="nbHitsUncovered"><a title="Line 660: Conditional coverage 50% (2/4) [each condition: 50%, 50%].">&nbsp;13</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 660: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> <span class="keyword">final</span> <span class="keyword">boolean</span> matchesAnyPrevious = identifiedVersion == <span class="keyword">null</span> || <span class="string">"-"</span>.equals(identifiedVersion.toString());</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;661</td> <td class="nbHitsCovered">&nbsp;13</td> <td class="src"><pre class="src">&nbsp; String majorVersionMatch = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;662</td> <td class="nbHitsCovered"><a title="Line 662: Conditional coverage 100% (2/2).">&nbsp;13</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 662: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (Entry&lt;String, Boolean&gt; entry : vulnerableSoftware.entrySet()) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;663</td> <td class="nbHitsCovered">&nbsp;279</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> DependencyVersion v = parseDependencyVersion(entry.getKey());</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;664</td> <td class="nbHitsUncovered"><a title="Line 664: Conditional coverage 50% (2/4) [each condition: 50%, 50%].">&nbsp;279</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 664: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> <span class="keyword">if</span> (v == <span class="keyword">null</span> || <span class="string">"-"</span>.equals(v.toString())) { <span class="comment">//all versions</span></a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;665</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">return</span> entry;</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;666</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;667</td> <td class="nbHitsCovered"><a title="Line 667: Conditional coverage 100% (2/2).">&nbsp;223</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 667: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (entry.getValue()) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;667</td> <td class="nbHitsCovered"><a title="Line 667: Conditional coverage 100% (2/2).">&nbsp;279</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 667: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (entry.getValue()) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;668</td> <td class="nbHitsUncovered"><a title="Line 668: Conditional coverage 50% (1/2).">&nbsp;8</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 668: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (matchesAnyPrevious) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;669</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">return</span> entry;</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;670</td> <td class="nbHits">&nbsp;</td>
@@ -1003,24 +1003,24 @@
<tr> <td class="numLineCover">&nbsp;674</td> <td class="nbHitsCovered">&nbsp;8</td> <td class="src"><pre class="src">&nbsp; majorVersionsAffectingAllPrevious.add(v.getVersionParts().get(0));</pre></td></tr>
<tr> <td class="numLine">&nbsp;675</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;676</td> <td class="nbHitsCovered">&nbsp;223</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;677</td> <td class="nbHitsUncovered"><a title="Line 677: Conditional coverage 50% (1/2).">&nbsp;10</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 677: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (matchesAnyPrevious) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;676</td> <td class="nbHitsCovered">&nbsp;279</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;677</td> <td class="nbHitsUncovered"><a title="Line 677: Conditional coverage 50% (1/2).">&nbsp;13</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 677: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (matchesAnyPrevious) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;678</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;679</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;680</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;681</td> <td class="nbHitsCovered"><a title="Line 681: Conditional coverage 100% (4/4) [each condition: 100%, 100%].">&nbsp;10</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 681: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> <span class="keyword">final</span> <span class="keyword">boolean</span> canSkipVersions = majorVersionMatch != <span class="keyword">null</span> &amp;&amp; majorVersionsAffectingAllPrevious.size() &gt; 1;</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;681</td> <td class="nbHitsCovered"><a title="Line 681: Conditional coverage 100% (4/4) [each condition: 100%, 100%].">&nbsp;13</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 681: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> <span class="keyword">final</span> <span class="keyword">boolean</span> canSkipVersions = majorVersionMatch != <span class="keyword">null</span> &amp;&amp; majorVersionsAffectingAllPrevious.size() &gt; 1;</a></pre></td></tr>
<tr> <td class="numLine">&nbsp;682</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="comment">//yes, we are iterating over this twice. The first time we are skipping versions those that affect all versions</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;683</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="comment">//then later we process those that affect all versions. This could be done with sorting...</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;684</td> <td class="nbHitsCovered"><a title="Line 684: Conditional coverage 100% (2/2).">&nbsp;10</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 684: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (Entry&lt;String, Boolean&gt; entry : vulnerableSoftware.entrySet()) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;685</td> <td class="nbHitsCovered"><a title="Line 685: Conditional coverage 100% (2/2).">&nbsp;176</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 685: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (!entry.getValue()) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;686</td> <td class="nbHitsCovered">&nbsp;169</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> DependencyVersion v = parseDependencyVersion(entry.getKey());</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;684</td> <td class="nbHitsCovered"><a title="Line 684: Conditional coverage 100% (2/2).">&nbsp;13</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 684: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (Entry&lt;String, Boolean&gt; entry : vulnerableSoftware.entrySet()) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;685</td> <td class="nbHitsCovered"><a title="Line 685: Conditional coverage 100% (2/2).">&nbsp;232</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 685: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (!entry.getValue()) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;686</td> <td class="nbHitsCovered">&nbsp;225</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> DependencyVersion v = parseDependencyVersion(entry.getKey());</pre></td></tr>
<tr> <td class="numLine">&nbsp;687</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="comment">//this can't dereference a null 'majorVersionMatch' as canSkipVersions accounts for this.</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;688</td> <td class="nbHitsCovered"><a title="Line 688: Conditional coverage 100% (4/4) [each condition: 100%, 100%].">&nbsp;169</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 688: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> <span class="keyword">if</span> (canSkipVersions &amp;&amp; !majorVersionMatch.equals(v.getVersionParts().get(0))) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;688</td> <td class="nbHitsCovered"><a title="Line 688: Conditional coverage 100% (4/4) [each condition: 100%, 100%].">&nbsp;225</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 688: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> <span class="keyword">if</span> (canSkipVersions &amp;&amp; !majorVersionMatch.equals(v.getVersionParts().get(0))) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;689</td> <td class="nbHitsCovered">&nbsp;10</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">continue</span>;</pre></td></tr>
<tr> <td class="numLine">&nbsp;690</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
@@ -1028,15 +1028,15 @@
<td class="src"><pre class="src">&nbsp; <span class="comment">//this can't dereference a null 'identifiedVersion' because if it was null we would have exited</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;692</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="comment">//in the above loop or just after loop (if matchesAnyPrevious return null).</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;693</td> <td class="nbHitsCovered"><a title="Line 693: Conditional coverage 100% (2/2).">&nbsp;159</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 693: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (identifiedVersion.equals(v)) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;693</td> <td class="nbHitsCovered"><a title="Line 693: Conditional coverage 100% (2/2).">&nbsp;215</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 693: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (identifiedVersion.equals(v)) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;694</td> <td class="nbHitsCovered">&nbsp;8</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> entry;</pre></td></tr>
<tr> <td class="numLine">&nbsp;695</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</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="numLineCover">&nbsp;697</td> <td class="nbHitsCovered">&nbsp;158</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;698</td> <td class="nbHitsUncovered"><a title="Line 698: Conditional coverage 50% (1/2).">&nbsp;2</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 698: Conditional coverage 50% (1/2)."> <span class="keyword">for</span> (Entry&lt;String, Boolean&gt; entry : vulnerableSoftware.entrySet()) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;699</td> <td class="nbHitsUncovered"><a title="Line 699: Conditional coverage 0% (0/2).">&nbsp;0</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 699: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (entry.getValue()) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;697</td> <td class="nbHitsCovered">&nbsp;214</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;698</td> <td class="nbHitsCovered"><a title="Line 698: Conditional coverage 100% (2/2).">&nbsp;5</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 698: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (Entry&lt;String, Boolean&gt; entry : vulnerableSoftware.entrySet()) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;699</td> <td class="nbHitsUncovered"><a title="Line 699: Conditional coverage 50% (1/2).">&nbsp;56</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 699: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (entry.getValue()) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;700</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">final</span> DependencyVersion v = parseDependencyVersion(entry.getKey());</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;701</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="comment">//this can't dereference a null 'majorVersionMatch' as canSkipVersions accounts for this.</span></pre></td></tr>
@@ -1057,8 +1057,8 @@
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;712</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;713</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; }</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;714</td> <td class="nbHitsCovered">&nbsp;2</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;713</td> <td class="nbHitsCovered">&nbsp;56</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;714</td> <td class="nbHitsCovered">&nbsp;5</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;715</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;716</td> <td class="nbHits">&nbsp;</td>
@@ -1077,16 +1077,16 @@
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;723</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">private</span> DependencyVersion parseDependencyVersion(String cpeStr) {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;724</td> <td class="nbHitsCovered">&nbsp;392</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> VulnerableSoftware cpe = <span class="keyword">new</span> VulnerableSoftware();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;724</td> <td class="nbHitsCovered">&nbsp;504</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> VulnerableSoftware cpe = <span class="keyword">new</span> VulnerableSoftware();</pre></td></tr>
<tr> <td class="numLine">&nbsp;725</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;726</td> <td class="nbHitsCovered">&nbsp;392</td> <td class="src"><pre class="src">&nbsp; cpe.parseName(cpeStr);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;726</td> <td class="nbHitsCovered">&nbsp;504</td> <td class="src"><pre class="src">&nbsp; cpe.parseName(cpeStr);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;727</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; } <span class="keyword">catch</span> (UnsupportedEncodingException ex) {</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;728</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="comment">//never going to happen.</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;729</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; LOGGER.trace(<span class="string">""</span>, ex);</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;730</td> <td class="nbHitsCovered">&nbsp;392</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;731</td> <td class="nbHitsCovered">&nbsp;392</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> parseDependencyVersion(cpe);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;730</td> <td class="nbHitsCovered">&nbsp;504</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;731</td> <td class="nbHitsCovered">&nbsp;504</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> parseDependencyVersion(cpe);</pre></td></tr>
<tr> <td class="numLine">&nbsp;732</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;733</td> <td class="nbHits">&nbsp;</td>
@@ -1107,22 +1107,22 @@
<td class="src"><pre class="src">&nbsp; <span class="keyword">private</span> DependencyVersion parseDependencyVersion(VulnerableSoftware cpe) {</pre></td></tr>
<tr> <td class="numLine">&nbsp;741</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> DependencyVersion cpeVersion;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;742</td> <td class="nbHitsUncovered"><a title="Line 742: Conditional coverage 50% (2/4) [each condition: 50%, 50%].">&nbsp;394</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 742: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> <span class="keyword">if</span> (cpe.getVersion() != <span class="keyword">null</span> &amp;&amp; !cpe.getVersion().isEmpty()) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;742</td> <td class="nbHitsUncovered"><a title="Line 742: Conditional coverage 50% (2/4) [each condition: 50%, 50%].">&nbsp;507</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 742: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> <span class="keyword">if</span> (cpe.getVersion() != <span class="keyword">null</span> &amp;&amp; !cpe.getVersion().isEmpty()) {</a></span></pre></td></tr>
<tr> <td class="numLine">&nbsp;743</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> String versionText;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;744</td> <td class="nbHitsUncovered"><a title="Line 744: Conditional coverage 75% (3/4) [each condition: 100%, 50%].">&nbsp;394</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 744: Conditional coverage 75% (3/4) [each condition: 100%, 50%]."> <span class="keyword">if</span> (cpe.getUpdate() != <span class="keyword">null</span> &amp;&amp; !cpe.getUpdate().isEmpty()) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;744</td> <td class="nbHitsUncovered"><a title="Line 744: Conditional coverage 75% (3/4) [each condition: 100%, 50%].">&nbsp;507</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 744: Conditional coverage 75% (3/4) [each condition: 100%, 50%]."> <span class="keyword">if</span> (cpe.getUpdate() != <span class="keyword">null</span> &amp;&amp; !cpe.getUpdate().isEmpty()) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;745</td> <td class="nbHitsCovered">&nbsp;130</td> <td class="src"><pre class="src">&nbsp; versionText = String.format(<span class="string">"%s.%s"</span>, cpe.getVersion(), cpe.getUpdate());</pre></td></tr>
<tr> <td class="numLine">&nbsp;746</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;747</td> <td class="nbHitsCovered">&nbsp;264</td> <td class="src"><pre class="src">&nbsp; versionText = cpe.getVersion();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;747</td> <td class="nbHitsCovered">&nbsp;377</td> <td class="src"><pre class="src">&nbsp; versionText = cpe.getVersion();</pre></td></tr>
<tr> <td class="numLine">&nbsp;748</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;749</td> <td class="nbHitsCovered">&nbsp;394</td> <td class="src"><pre class="src">&nbsp; cpeVersion = DependencyVersionUtil.parseVersion(versionText);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;750</td> <td class="nbHitsCovered">&nbsp;394</td> <td class="src"><pre class="src">&nbsp; } <span class="keyword">else</span> {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;749</td> <td class="nbHitsCovered">&nbsp;507</td> <td class="src"><pre class="src">&nbsp; cpeVersion = DependencyVersionUtil.parseVersion(versionText);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;750</td> <td class="nbHitsCovered">&nbsp;507</td> <td class="src"><pre class="src">&nbsp; } <span class="keyword">else</span> {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;751</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; cpeVersion = <span class="keyword">new</span> DependencyVersion(<span class="string">"-"</span>);</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;752</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;753</td> <td class="nbHitsCovered">&nbsp;394</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> cpeVersion;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;753</td> <td class="nbHitsCovered">&nbsp;507</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> cpeVersion;</pre></td></tr>
<tr> <td class="numLine">&nbsp;754</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;755</td> <td class="nbHits">&nbsp;</td>
@@ -1192,6 +1192,6 @@
<td class="src"><pre class="src">&nbsp;}</pre></td></tr>
</table>
<div class="footer">Report generated by <a href="http://cobertura.sourceforge.net/" target="_top">Cobertura</a> 2.1.1 on 11/29/15 7:26 AM.</div>
<div class="footer">Report generated by <a href="http://cobertura.sourceforge.net/" target="_top">Cobertura</a> 2.1.1 on 12/10/15 7:51 PM.</div>
</body>
</html>