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.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">150/319</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">58%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:58px"><span class="text">55/94</span></div></div></td></tr></table></td><td class="value"><span class="hidden">5.0;</span>5</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">151/319</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">62%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:62px"><span class="text">59/94</span></div></div></td></tr></table></td><td class="value"><span class="hidden">5.0;</span>5</td></tr>
</table>
<div class="separator">&nbsp;</div>
@@ -119,7 +119,7 @@
<td class="src"><pre class="src">&nbsp;<span class="comment"> * @author Jeremy Long (jeremy.long@owasp.org)</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;51</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;52</td> <td class="nbHitsCovered">&nbsp;15</td> <td class="src"><pre class="src">&nbsp;<span class="keyword">public</span> <span class="keyword">class</span> CveDB {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;52</td> <td class="nbHitsCovered">&nbsp;19</td> <td class="src"><pre class="src">&nbsp;<span class="keyword">public</span> <span class="keyword">class</span> CveDB {</pre></td></tr>
<tr> <td class="numLine">&nbsp;53</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;54</td> <td class="nbHits">&nbsp;</td>
@@ -344,18 +344,18 @@
<td class="src"><pre class="src">&nbsp; justification = <span class="string">"Yes, I know... Blank password."</span>)</pre></td></tr>
<tr> <td class="numLine">&nbsp;164</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, SQLException, DatabaseException, ClassNotFoundException {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;165</td> <td class="nbHitsCovered">&nbsp;15</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> String fileName = CveDB.getDataDirectory().getCanonicalPath();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;166</td> <td class="nbHitsCovered">&nbsp;15</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> File f = <span class="keyword">new</span> File(fileName, <span class="string">"cve."</span> + DB_SCHEMA_VERSION);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;167</td> <td class="nbHitsCovered">&nbsp;15</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> File check = <span class="keyword">new</span> File(f.getAbsolutePath() + <span class="string">".h2.db"</span>);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;168</td> <td class="nbHitsUncovered"><a title="Line 168: Conditional coverage 50% (1/2).">&nbsp;15</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 168: Conditional coverage 50% (1/2)."> <span class="keyword">final</span> <span class="keyword">boolean</span> createTables = !check.exists();</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;169</td> <td class="nbHitsCovered">&nbsp;15</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> String connStr = String.format(<span class="string">"jdbc:h2:file:%s;AUTO_SERVER=TRUE"</span>, f.getAbsolutePath());</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;170</td> <td class="nbHitsCovered">&nbsp;15</td> <td class="src"><pre class="src">&nbsp; Class.forName(<span class="string">"org.h2.Driver"</span>);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;171</td> <td class="nbHitsCovered">&nbsp;15</td> <td class="src"><pre class="src">&nbsp; conn = DriverManager.getConnection(connStr, <span class="string">"sa"</span>, <span class="string">""</span>);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;172</td> <td class="nbHitsUncovered"><a title="Line 172: Conditional coverage 50% (1/2).">&nbsp;15</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 172: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (createTables) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;165</td> <td class="nbHitsCovered">&nbsp;19</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> String fileName = CveDB.getDataDirectory().getCanonicalPath();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;166</td> <td class="nbHitsCovered">&nbsp;19</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> File f = <span class="keyword">new</span> File(fileName, <span class="string">"cve."</span> + DB_SCHEMA_VERSION);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;167</td> <td class="nbHitsCovered">&nbsp;19</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> File check = <span class="keyword">new</span> File(f.getAbsolutePath() + <span class="string">".h2.db"</span>);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;168</td> <td class="nbHitsUncovered"><a title="Line 168: Conditional coverage 50% (1/2).">&nbsp;19</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 168: Conditional coverage 50% (1/2)."> <span class="keyword">final</span> <span class="keyword">boolean</span> createTables = !check.exists();</a></span></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">final</span> String connStr = String.format(<span class="string">"jdbc:h2:file:%s;AUTO_SERVER=TRUE"</span>, f.getAbsolutePath());</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;170</td> <td class="nbHitsCovered">&nbsp;19</td> <td class="src"><pre class="src">&nbsp; Class.forName(<span class="string">"org.h2.Driver"</span>);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;171</td> <td class="nbHitsCovered">&nbsp;19</td> <td class="src"><pre class="src">&nbsp; conn = DriverManager.getConnection(connStr, <span class="string">"sa"</span>, <span class="string">""</span>);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;172</td> <td class="nbHitsUncovered"><a title="Line 172: Conditional coverage 50% (1/2).">&nbsp;19</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 172: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (createTables) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;173</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; createTables();</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;174</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;175</td> <td class="nbHitsCovered">&nbsp;15</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;175</td> <td class="nbHitsCovered">&nbsp;19</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;176</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;177</td> <td class="nbHits">&nbsp;</td>
@@ -391,9 +391,9 @@
<td class="src"><pre class="src">&nbsp; @Override</pre></td></tr>
<tr> <td class="numLine">&nbsp;194</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;195</td> <td class="nbHitsCovered">&nbsp;8</td> <td class="src"><pre class="src">&nbsp; close();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;196</td> <td class="nbHitsCovered">&nbsp;8</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">super</span>.finalize(); <span class="comment">//not necessary if extending Object.</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;197</td> <td class="nbHitsCovered">&nbsp;8</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;195</td> <td class="nbHitsCovered">&nbsp;12</td> <td class="src"><pre class="src">&nbsp; close();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;196</td> <td class="nbHitsCovered">&nbsp;12</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">super</span>.finalize(); <span class="comment">//not necessary if extending Object.</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;197</td> <td class="nbHitsCovered">&nbsp;12</td> <td class="src"><pre class="src">&nbsp; }</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="numLine">&nbsp;199</td> <td class="nbHits">&nbsp;</td>
@@ -406,19 +406,19 @@
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;203</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">public</span> <span class="keyword">void</span> close() {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;204</td> <td class="nbHitsCovered"><a title="Line 204: Conditional coverage 100% (2/2).">&nbsp;23</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 204: 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;204</td> <td class="nbHitsCovered"><a title="Line 204: Conditional coverage 100% (2/2).">&nbsp;31</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 204: 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;205</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;206</td> <td class="nbHitsCovered">&nbsp;15</td> <td class="src"><pre class="src">&nbsp; conn.close();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;206</td> <td class="nbHitsCovered">&nbsp;19</td> <td class="src"><pre class="src">&nbsp; conn.close();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;207</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;208</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">final</span> String msg = <span class="string">"There was an error attempting to close the CveDB, see the log for more details."</span>;</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;209</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; Logger.getLogger(CveDB.<span class="keyword">class</span>.getName()).log(Level.SEVERE, msg, ex);</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;210</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; Logger.getLogger(CveDB.<span class="keyword">class</span>.getName()).log(Level.FINE, <span class="keyword">null</span>, ex);</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;211</td> <td class="nbHitsCovered">&nbsp;15</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;212</td> <td class="nbHitsCovered">&nbsp;15</td> <td class="src"><pre class="src">&nbsp; conn = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;211</td> <td class="nbHitsCovered">&nbsp;19</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;212</td> <td class="nbHitsCovered">&nbsp;19</td> <td class="src"><pre class="src">&nbsp; conn = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLine">&nbsp;213</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;214</td> <td class="nbHitsCovered">&nbsp;23</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;214</td> <td class="nbHitsCovered">&nbsp;31</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;215</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;216</td> <td class="nbHits">&nbsp;</td>
@@ -443,30 +443,30 @@
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;226</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;227</td> <td class="nbHitsCovered">&nbsp;52</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;228</td> <td class="nbHitsCovered">&nbsp;52</td> <td class="src"><pre class="src">&nbsp; ResultSet rs = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;229</td> <td class="nbHitsCovered">&nbsp;52</td> <td class="src"><pre class="src">&nbsp; PreparedStatement ps = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;227</td> <td class="nbHitsCovered">&nbsp;72</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;228</td> <td class="nbHitsCovered">&nbsp;72</td> <td class="src"><pre class="src">&nbsp; ResultSet rs = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;229</td> <td class="nbHitsCovered">&nbsp;72</td> <td class="src"><pre class="src">&nbsp; PreparedStatement ps = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLine">&nbsp;230</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;231</td> <td class="nbHitsCovered">&nbsp;52</td> <td class="src"><pre class="src">&nbsp; ps = conn.prepareStatement(SELECT_CPE_ENTRIES);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;232</td> <td class="nbHitsCovered">&nbsp;52</td> <td class="src"><pre class="src">&nbsp; ps.setString(1, vendor);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;233</td> <td class="nbHitsCovered">&nbsp;52</td> <td class="src"><pre class="src">&nbsp; ps.setString(2, product);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;234</td> <td class="nbHitsCovered">&nbsp;52</td> <td class="src"><pre class="src">&nbsp; rs = ps.executeQuery();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;231</td> <td class="nbHitsCovered">&nbsp;72</td> <td class="src"><pre class="src">&nbsp; ps = conn.prepareStatement(SELECT_CPE_ENTRIES);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;232</td> <td class="nbHitsCovered">&nbsp;72</td> <td class="src"><pre class="src">&nbsp; ps.setString(1, vendor);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;233</td> <td class="nbHitsCovered">&nbsp;72</td> <td class="src"><pre class="src">&nbsp; ps.setString(2, product);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;234</td> <td class="nbHitsCovered">&nbsp;72</td> <td class="src"><pre class="src">&nbsp; rs = ps.executeQuery();</pre></td></tr>
<tr> <td class="numLine">&nbsp;235</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;236</td> <td class="nbHitsCovered"><a title="Line 236: Conditional coverage 100% (2/2).">&nbsp;3713</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 236: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (rs.next()) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;237</td> <td class="nbHitsCovered">&nbsp;3661</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;238</td> <td class="nbHitsCovered">&nbsp;3661</td> <td class="src"><pre class="src">&nbsp; vs.setCpe(rs.getString(1));</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;239</td> <td class="nbHitsCovered">&nbsp;3661</td> <td class="src"><pre class="src">&nbsp; cpe.add(vs);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;240</td> <td class="nbHitsCovered">&nbsp;3661</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;236</td> <td class="nbHitsCovered"><a title="Line 236: Conditional coverage 100% (2/2).">&nbsp;4454</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 236: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (rs.next()) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;237</td> <td class="nbHitsCovered">&nbsp;4382</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;238</td> <td class="nbHitsCovered">&nbsp;4382</td> <td class="src"><pre class="src">&nbsp; vs.setCpe(rs.getString(1));</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;239</td> <td class="nbHitsCovered">&nbsp;4382</td> <td class="src"><pre class="src">&nbsp; cpe.add(vs);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;240</td> <td class="nbHitsCovered">&nbsp;4382</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;241</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;242</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; Logger.getLogger(CveDB.<span class="keyword">class</span>.getName()).log(Level.SEVERE, <span class="keyword">null</span>, ex);</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;243</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;244</td> <td class="nbHitsCovered">&nbsp;52</td> <td class="src"><pre class="src">&nbsp; closeResultSet(rs);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;245</td> <td class="nbHitsCovered">&nbsp;52</td> <td class="src"><pre class="src">&nbsp; closeStatement(ps);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;246</td> <td class="nbHitsCovered">&nbsp;52</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;247</td> <td class="nbHitsCovered">&nbsp;52</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> cpe;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;244</td> <td class="nbHitsCovered">&nbsp;72</td> <td class="src"><pre class="src">&nbsp; closeResultSet(rs);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;245</td> <td class="nbHitsCovered">&nbsp;72</td> <td class="src"><pre class="src">&nbsp; closeStatement(ps);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;246</td> <td class="nbHitsCovered">&nbsp;72</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;247</td> <td class="nbHitsCovered">&nbsp;72</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> cpe;</pre></td></tr>
<tr> <td class="numLine">&nbsp;248</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;249</td> <td class="nbHits">&nbsp;</td>
@@ -487,51 +487,51 @@
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;257</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;258</td> <td class="nbHitsCovered">&nbsp;7</td> <td class="src"><pre class="src">&nbsp; ResultSet rs = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;259</td> <td class="nbHitsCovered">&nbsp;7</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;258</td> <td class="nbHitsCovered">&nbsp;12</td> <td class="src"><pre class="src">&nbsp; ResultSet rs = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;259</td> <td class="nbHitsCovered">&nbsp;12</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;260</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;261</td> <td class="nbHitsCovered">&nbsp;7</td> <td class="src"><pre class="src">&nbsp; cpe.parseName(cpeStr);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;261</td> <td class="nbHitsCovered">&nbsp;12</td> <td class="src"><pre class="src">&nbsp; cpe.parseName(cpeStr);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;262</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;263</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; Logger.getLogger(CveDB.<span class="keyword">class</span>.getName()).log(Level.FINEST, <span class="keyword">null</span>, ex);</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;264</td> <td class="nbHitsCovered">&nbsp;7</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;265</td> <td class="nbHitsCovered">&nbsp;7</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;266</td> <td class="nbHitsCovered">&nbsp;7</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;264</td> <td class="nbHitsCovered">&nbsp;12</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;265</td> <td class="nbHitsCovered">&nbsp;12</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;266</td> <td class="nbHitsCovered">&nbsp;12</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;267</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;268</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; PreparedStatement ps;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;269</td> <td class="nbHitsCovered">&nbsp;7</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> HashSet&lt;String&gt; cveEntries = <span class="keyword">new</span> HashSet&lt;String&gt;();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;269</td> <td class="nbHitsCovered">&nbsp;12</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> HashSet&lt;String&gt; cveEntries = <span class="keyword">new</span> HashSet&lt;String&gt;();</pre></td></tr>
<tr> <td class="numLine">&nbsp;270</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;271</td> <td class="nbHitsCovered">&nbsp;7</td> <td class="src"><pre class="src">&nbsp; ps = conn.prepareStatement(SELECT_CVE_FROM_SOFTWARE);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;272</td> <td class="nbHitsCovered">&nbsp;7</td> <td class="src"><pre class="src">&nbsp; ps.setString(1, cpe.getVendor());</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;273</td> <td class="nbHitsCovered">&nbsp;7</td> <td class="src"><pre class="src">&nbsp; ps.setString(2, cpe.getProduct());</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;274</td> <td class="nbHitsCovered">&nbsp;7</td> <td class="src"><pre class="src">&nbsp; rs = ps.executeQuery();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;275</td> <td class="nbHitsCovered"><a title="Line 275: Conditional coverage 100% (2/2).">&nbsp;2976</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 275: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (rs.next()) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;276</td> <td class="nbHitsCovered">&nbsp;2969</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;277</td> <td class="nbHitsCovered">&nbsp;2969</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;278</td> <td class="nbHitsCovered">&nbsp;2969</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;279</td> <td class="nbHitsCovered"><a title="Line 279: Conditional coverage 100% (4/4) [each condition: 100%, 100%].">&nbsp;2969</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 279: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> <span class="keyword">if</span> (!cveEntries.contains(cveId) &amp;&amp; isAffected(cpe.getVendor(), cpe.getProduct(), detectedVersion, cpeId, previous)) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;280</td> <td class="nbHitsCovered">&nbsp;50</td> <td class="src"><pre class="src">&nbsp; cveEntries.add(cveId);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;271</td> <td class="nbHitsCovered">&nbsp;12</td> <td class="src"><pre class="src">&nbsp; ps = conn.prepareStatement(SELECT_CVE_FROM_SOFTWARE);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;272</td> <td class="nbHitsCovered">&nbsp;12</td> <td class="src"><pre class="src">&nbsp; ps.setString(1, cpe.getVendor());</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;273</td> <td class="nbHitsCovered">&nbsp;12</td> <td class="src"><pre class="src">&nbsp; ps.setString(2, cpe.getProduct());</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;274</td> <td class="nbHitsCovered">&nbsp;12</td> <td class="src"><pre class="src">&nbsp; rs = ps.executeQuery();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;275</td> <td class="nbHitsCovered"><a title="Line 275: Conditional coverage 100% (2/2).">&nbsp;4500</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 275: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (rs.next()) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;276</td> <td class="nbHitsCovered">&nbsp;4488</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;277</td> <td class="nbHitsCovered">&nbsp;4488</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;278</td> <td class="nbHitsCovered">&nbsp;4488</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;279</td> <td class="nbHitsCovered"><a title="Line 279: Conditional coverage 100% (4/4) [each condition: 100%, 100%].">&nbsp;4488</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 279: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> <span class="keyword">if</span> (!cveEntries.contains(cveId) &amp;&amp; isAffected(cpe.getVendor(), cpe.getProduct(), detectedVersion, cpeId, previous)) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;280</td> <td class="nbHitsCovered">&nbsp;59</td> <td class="src"><pre class="src">&nbsp; cveEntries.add(cveId);</pre></td></tr>
<tr> <td class="numLine">&nbsp;281</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;282</td> <td class="nbHitsCovered">&nbsp;2969</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;283</td> <td class="nbHitsCovered">&nbsp;7</td> <td class="src"><pre class="src">&nbsp; closeResultSet(rs);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;284</td> <td class="nbHitsCovered">&nbsp;7</td> <td class="src"><pre class="src">&nbsp; closeStatement(ps);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;285</td> <td class="nbHitsCovered"><a title="Line 285: Conditional coverage 100% (2/2).">&nbsp;7</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 285: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (String cve : cveEntries) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;286</td> <td class="nbHitsCovered">&nbsp;50</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> Vulnerability v = getVulnerability(cve);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;287</td> <td class="nbHitsCovered">&nbsp;50</td> <td class="src"><pre class="src">&nbsp; vulnerabilities.add(v);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;288</td> <td class="nbHitsCovered">&nbsp;50</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;282</td> <td class="nbHitsCovered">&nbsp;4488</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;283</td> <td class="nbHitsCovered">&nbsp;12</td> <td class="src"><pre class="src">&nbsp; closeResultSet(rs);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;284</td> <td class="nbHitsCovered">&nbsp;12</td> <td class="src"><pre class="src">&nbsp; closeStatement(ps);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;285</td> <td class="nbHitsCovered"><a title="Line 285: Conditional coverage 100% (2/2).">&nbsp;12</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 285: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (String cve : cveEntries) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;286</td> <td class="nbHitsCovered">&nbsp;59</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> Vulnerability v = getVulnerability(cve);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;287</td> <td class="nbHitsCovered">&nbsp;59</td> <td class="src"><pre class="src">&nbsp; vulnerabilities.add(v);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;288</td> <td class="nbHitsCovered">&nbsp;59</td> <td class="src"><pre class="src">&nbsp; }</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="numLineCover">&nbsp;290</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;291</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;292</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;293</td> <td class="nbHitsCovered">&nbsp;7</td> <td class="src"><pre class="src">&nbsp; closeResultSet(rs);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;294</td> <td class="nbHitsCovered">&nbsp;7</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;295</td> <td class="nbHitsCovered">&nbsp;7</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> vulnerabilities;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;293</td> <td class="nbHitsCovered">&nbsp;12</td> <td class="src"><pre class="src">&nbsp; closeResultSet(rs);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;294</td> <td class="nbHitsCovered">&nbsp;12</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;295</td> <td class="nbHitsCovered">&nbsp;12</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> vulnerabilities;</pre></td></tr>
<tr> <td class="numLine">&nbsp;296</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;297</td> <td class="nbHits">&nbsp;</td>
@@ -552,77 +552,77 @@
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;305</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">private</span> Vulnerability getVulnerability(String cve) <span class="keyword">throws</span> DatabaseException {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;306</td> <td class="nbHitsCovered">&nbsp;50</td> <td class="src"><pre class="src">&nbsp; PreparedStatement psV = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;307</td> <td class="nbHitsCovered">&nbsp;50</td> <td class="src"><pre class="src">&nbsp; PreparedStatement psR = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;308</td> <td class="nbHitsCovered">&nbsp;50</td> <td class="src"><pre class="src">&nbsp; PreparedStatement psS = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;309</td> <td class="nbHitsCovered">&nbsp;50</td> <td class="src"><pre class="src">&nbsp; ResultSet rsV = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;310</td> <td class="nbHitsCovered">&nbsp;50</td> <td class="src"><pre class="src">&nbsp; ResultSet rsR = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;311</td> <td class="nbHitsCovered">&nbsp;50</td> <td class="src"><pre class="src">&nbsp; ResultSet rsS = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;312</td> <td class="nbHitsCovered">&nbsp;50</td> <td class="src"><pre class="src">&nbsp; Vulnerability vuln = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;306</td> <td class="nbHitsCovered">&nbsp;59</td> <td class="src"><pre class="src">&nbsp; PreparedStatement psV = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;307</td> <td class="nbHitsCovered">&nbsp;59</td> <td class="src"><pre class="src">&nbsp; PreparedStatement psR = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;308</td> <td class="nbHitsCovered">&nbsp;59</td> <td class="src"><pre class="src">&nbsp; PreparedStatement psS = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;309</td> <td class="nbHitsCovered">&nbsp;59</td> <td class="src"><pre class="src">&nbsp; ResultSet rsV = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;310</td> <td class="nbHitsCovered">&nbsp;59</td> <td class="src"><pre class="src">&nbsp; ResultSet rsR = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;311</td> <td class="nbHitsCovered">&nbsp;59</td> <td class="src"><pre class="src">&nbsp; ResultSet rsS = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;312</td> <td class="nbHitsCovered">&nbsp;59</td> <td class="src"><pre class="src">&nbsp; Vulnerability vuln = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLine">&nbsp;313</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;314</td> <td class="nbHitsCovered">&nbsp;50</td> <td class="src"><pre class="src">&nbsp; psV = conn.prepareStatement(SELECT_VULNERABILITY);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;315</td> <td class="nbHitsCovered">&nbsp;50</td> <td class="src"><pre class="src">&nbsp; psV.setString(1, cve);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;316</td> <td class="nbHitsCovered">&nbsp;50</td> <td class="src"><pre class="src">&nbsp; rsV = psV.executeQuery();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;317</td> <td class="nbHitsUncovered"><a title="Line 317: Conditional coverage 50% (1/2).">&nbsp;50</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 317: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (rsV.next()) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;318</td> <td class="nbHitsCovered">&nbsp;50</td> <td class="src"><pre class="src">&nbsp; vuln = <span class="keyword">new</span> Vulnerability();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;319</td> <td class="nbHitsCovered">&nbsp;50</td> <td class="src"><pre class="src">&nbsp; vuln.setName(cve);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;320</td> <td class="nbHitsCovered">&nbsp;50</td> <td class="src"><pre class="src">&nbsp; vuln.setDescription(rsV.getString(2));</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;321</td> <td class="nbHitsCovered">&nbsp;50</td> <td class="src"><pre class="src">&nbsp; String cwe = rsV.getString(3);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;322</td> <td class="nbHitsCovered"><a title="Line 322: Conditional coverage 100% (2/2).">&nbsp;50</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 322: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (cwe != <span class="keyword">null</span>) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;323</td> <td class="nbHitsCovered">&nbsp;47</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> String name = CweDB.getCweName(cwe);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;324</td> <td class="nbHitsCovered"><a title="Line 324: Conditional coverage 100% (2/2).">&nbsp;47</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 324: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (name != <span class="keyword">null</span>) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;325</td> <td class="nbHitsCovered">&nbsp;45</td> <td class="src"><pre class="src">&nbsp; cwe += <span class="string">" "</span> + name;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;314</td> <td class="nbHitsCovered">&nbsp;59</td> <td class="src"><pre class="src">&nbsp; psV = conn.prepareStatement(SELECT_VULNERABILITY);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;315</td> <td class="nbHitsCovered">&nbsp;59</td> <td class="src"><pre class="src">&nbsp; psV.setString(1, cve);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;316</td> <td class="nbHitsCovered">&nbsp;59</td> <td class="src"><pre class="src">&nbsp; rsV = psV.executeQuery();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;317</td> <td class="nbHitsUncovered"><a title="Line 317: Conditional coverage 50% (1/2).">&nbsp;59</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 317: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (rsV.next()) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;318</td> <td class="nbHitsCovered">&nbsp;59</td> <td class="src"><pre class="src">&nbsp; vuln = <span class="keyword">new</span> Vulnerability();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;319</td> <td class="nbHitsCovered">&nbsp;59</td> <td class="src"><pre class="src">&nbsp; vuln.setName(cve);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;320</td> <td class="nbHitsCovered">&nbsp;59</td> <td class="src"><pre class="src">&nbsp; vuln.setDescription(rsV.getString(2));</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;321</td> <td class="nbHitsCovered">&nbsp;59</td> <td class="src"><pre class="src">&nbsp; String cwe = rsV.getString(3);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;322</td> <td class="nbHitsCovered"><a title="Line 322: Conditional coverage 100% (2/2).">&nbsp;59</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 322: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (cwe != <span class="keyword">null</span>) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;323</td> <td class="nbHitsCovered">&nbsp;48</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> String name = CweDB.getCweName(cwe);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;324</td> <td class="nbHitsCovered"><a title="Line 324: Conditional coverage 100% (2/2).">&nbsp;48</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 324: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (name != <span class="keyword">null</span>) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;325</td> <td class="nbHitsCovered">&nbsp;46</td> <td class="src"><pre class="src">&nbsp; cwe += <span class="string">" "</span> + name;</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>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;328</td> <td class="nbHitsCovered">&nbsp;50</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> <span class="keyword">int</span> cveId = rsV.getInt(1);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;329</td> <td class="nbHitsCovered">&nbsp;50</td> <td class="src"><pre class="src">&nbsp; vuln.setCwe(cwe);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;330</td> <td class="nbHitsCovered">&nbsp;50</td> <td class="src"><pre class="src">&nbsp; vuln.setCvssScore(rsV.getFloat(4));</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;331</td> <td class="nbHitsCovered">&nbsp;50</td> <td class="src"><pre class="src">&nbsp; vuln.setCvssAccessVector(rsV.getString(5));</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;332</td> <td class="nbHitsCovered">&nbsp;50</td> <td class="src"><pre class="src">&nbsp; vuln.setCvssAccessComplexity(rsV.getString(6));</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;333</td> <td class="nbHitsCovered">&nbsp;50</td> <td class="src"><pre class="src">&nbsp; vuln.setCvssAuthentication(rsV.getString(7));</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;334</td> <td class="nbHitsCovered">&nbsp;50</td> <td class="src"><pre class="src">&nbsp; vuln.setCvssConfidentialityImpact(rsV.getString(8));</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;335</td> <td class="nbHitsCovered">&nbsp;50</td> <td class="src"><pre class="src">&nbsp; vuln.setCvssIntegrityImpact(rsV.getString(9));</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;336</td> <td class="nbHitsCovered">&nbsp;50</td> <td class="src"><pre class="src">&nbsp; vuln.setCvssAvailabilityImpact(rsV.getString(10));</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;328</td> <td class="nbHitsCovered">&nbsp;59</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> <span class="keyword">int</span> cveId = rsV.getInt(1);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;329</td> <td class="nbHitsCovered">&nbsp;59</td> <td class="src"><pre class="src">&nbsp; vuln.setCwe(cwe);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;330</td> <td class="nbHitsCovered">&nbsp;59</td> <td class="src"><pre class="src">&nbsp; vuln.setCvssScore(rsV.getFloat(4));</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;331</td> <td class="nbHitsCovered">&nbsp;59</td> <td class="src"><pre class="src">&nbsp; vuln.setCvssAccessVector(rsV.getString(5));</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;332</td> <td class="nbHitsCovered">&nbsp;59</td> <td class="src"><pre class="src">&nbsp; vuln.setCvssAccessComplexity(rsV.getString(6));</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;333</td> <td class="nbHitsCovered">&nbsp;59</td> <td class="src"><pre class="src">&nbsp; vuln.setCvssAuthentication(rsV.getString(7));</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;334</td> <td class="nbHitsCovered">&nbsp;59</td> <td class="src"><pre class="src">&nbsp; vuln.setCvssConfidentialityImpact(rsV.getString(8));</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;335</td> <td class="nbHitsCovered">&nbsp;59</td> <td class="src"><pre class="src">&nbsp; vuln.setCvssIntegrityImpact(rsV.getString(9));</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;336</td> <td class="nbHitsCovered">&nbsp;59</td> <td class="src"><pre class="src">&nbsp; vuln.setCvssAvailabilityImpact(rsV.getString(10));</pre></td></tr>
<tr> <td class="numLine">&nbsp;337</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;338</td> <td class="nbHitsCovered">&nbsp;50</td> <td class="src"><pre class="src">&nbsp; psR = conn.prepareStatement(SELECT_REFERENCE);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;339</td> <td class="nbHitsCovered">&nbsp;50</td> <td class="src"><pre class="src">&nbsp; psR.setInt(1, cveId);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;340</td> <td class="nbHitsCovered">&nbsp;50</td> <td class="src"><pre class="src">&nbsp; rsR = psR.executeQuery();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;341</td> <td class="nbHitsCovered"><a title="Line 341: Conditional coverage 100% (2/2).">&nbsp;351</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 341: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (rsR.next()) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;342</td> <td class="nbHitsCovered">&nbsp;301</td> <td class="src"><pre class="src">&nbsp; vuln.addReference(rsR.getString(1), rsR.getString(2), rsR.getString(3));</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;338</td> <td class="nbHitsCovered">&nbsp;59</td> <td class="src"><pre class="src">&nbsp; psR = conn.prepareStatement(SELECT_REFERENCE);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;339</td> <td class="nbHitsCovered">&nbsp;59</td> <td class="src"><pre class="src">&nbsp; psR.setInt(1, cveId);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;340</td> <td class="nbHitsCovered">&nbsp;59</td> <td class="src"><pre class="src">&nbsp; rsR = psR.executeQuery();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;341</td> <td class="nbHitsCovered"><a title="Line 341: Conditional coverage 100% (2/2).">&nbsp;460</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 341: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (rsR.next()) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;342</td> <td class="nbHitsCovered">&nbsp;401</td> <td class="src"><pre class="src">&nbsp; vuln.addReference(rsR.getString(1), rsR.getString(2), rsR.getString(3));</pre></td></tr>
<tr> <td class="numLine">&nbsp;343</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;344</td> <td class="nbHitsCovered">&nbsp;50</td> <td class="src"><pre class="src">&nbsp; psS = conn.prepareStatement(SELECT_SOFTWARE);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;345</td> <td class="nbHitsCovered">&nbsp;50</td> <td class="src"><pre class="src">&nbsp; psS.setInt(1, cveId);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;346</td> <td class="nbHitsCovered">&nbsp;50</td> <td class="src"><pre class="src">&nbsp; rsS = psS.executeQuery();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;344</td> <td class="nbHitsCovered">&nbsp;59</td> <td class="src"><pre class="src">&nbsp; psS = conn.prepareStatement(SELECT_SOFTWARE);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;345</td> <td class="nbHitsCovered">&nbsp;59</td> <td class="src"><pre class="src">&nbsp; psS.setInt(1, cveId);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;346</td> <td class="nbHitsCovered">&nbsp;59</td> <td class="src"><pre class="src">&nbsp; rsS = psS.executeQuery();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;347</td> <td class="nbHitsCovered"><a title="Line 347: Conditional coverage 100% (2/2).">&nbsp;2673</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 347: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (rsS.next()) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;348</td> <td class="nbHitsCovered">&nbsp;2623</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> String cpe = rsS.getString(1);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;349</td> <td class="nbHitsCovered">&nbsp;2623</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> String prevVersion = rsS.getString(2);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;350</td> <td class="nbHitsCovered"><a title="Line 350: Conditional coverage 100% (2/2).">&nbsp;2623</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 350: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (prevVersion == <span class="keyword">null</span>) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;351</td> <td class="nbHitsCovered">&nbsp;2586</td> <td class="src"><pre class="src">&nbsp; vuln.addVulnerableSoftware(cpe);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;348</td> <td class="nbHitsCovered">&nbsp;2614</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> String cpe = rsS.getString(1);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;349</td> <td class="nbHitsCovered">&nbsp;2614</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> String prevVersion = rsS.getString(2);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;350</td> <td class="nbHitsCovered"><a title="Line 350: Conditional coverage 100% (2/2).">&nbsp;2614</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 350: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (prevVersion == <span class="keyword">null</span>) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;351</td> <td class="nbHitsCovered">&nbsp;2572</td> <td class="src"><pre class="src">&nbsp; vuln.addVulnerableSoftware(cpe);</pre></td></tr>
<tr> <td class="numLine">&nbsp;352</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;353</td> <td class="nbHitsCovered">&nbsp;37</td> <td class="src"><pre class="src">&nbsp; vuln.addVulnerableSoftware(cpe, prevVersion);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;353</td> <td class="nbHitsCovered">&nbsp;42</td> <td class="src"><pre class="src">&nbsp; vuln.addVulnerableSoftware(cpe, prevVersion);</pre></td></tr>
<tr> <td class="numLine">&nbsp;354</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;355</td> <td class="nbHitsCovered">&nbsp;2623</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;355</td> <td class="nbHitsCovered">&nbsp;2614</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;356</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;357</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; } <span class="keyword">catch</span> (SQLException ex) {</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;358</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">"Error retrieving "</span> + cve, ex);</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;359</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;360</td> <td class="nbHitsCovered">&nbsp;50</td> <td class="src"><pre class="src">&nbsp; closeResultSet(rsV);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;361</td> <td class="nbHitsCovered">&nbsp;50</td> <td class="src"><pre class="src">&nbsp; closeResultSet(rsR);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;362</td> <td class="nbHitsCovered">&nbsp;50</td> <td class="src"><pre class="src">&nbsp; closeResultSet(rsS);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;363</td> <td class="nbHitsCovered">&nbsp;50</td> <td class="src"><pre class="src">&nbsp; closeStatement(psV);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;364</td> <td class="nbHitsCovered">&nbsp;50</td> <td class="src"><pre class="src">&nbsp; closeStatement(psR);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;365</td> <td class="nbHitsCovered">&nbsp;50</td> <td class="src"><pre class="src">&nbsp; closeStatement(psS);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;366</td> <td class="nbHitsCovered">&nbsp;50</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;367</td> <td class="nbHitsCovered">&nbsp;50</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> vuln;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;360</td> <td class="nbHitsCovered">&nbsp;59</td> <td class="src"><pre class="src">&nbsp; closeResultSet(rsV);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;361</td> <td class="nbHitsCovered">&nbsp;59</td> <td class="src"><pre class="src">&nbsp; closeResultSet(rsR);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;362</td> <td class="nbHitsCovered">&nbsp;59</td> <td class="src"><pre class="src">&nbsp; closeResultSet(rsS);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;363</td> <td class="nbHitsCovered">&nbsp;59</td> <td class="src"><pre class="src">&nbsp; closeStatement(psV);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;364</td> <td class="nbHitsCovered">&nbsp;59</td> <td class="src"><pre class="src">&nbsp; closeStatement(psR);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;365</td> <td class="nbHitsCovered">&nbsp;59</td> <td class="src"><pre class="src">&nbsp; closeStatement(psS);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;366</td> <td class="nbHitsCovered">&nbsp;59</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;367</td> <td class="nbHitsCovered">&nbsp;59</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> vuln;</pre></td></tr>
<tr> <td class="numLine">&nbsp;368</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;369</td> <td class="nbHits">&nbsp;</td>
@@ -809,15 +809,15 @@
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></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> <span class="keyword">static</span> File getDataDirectory() <span class="keyword">throws</span> IOException {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;515</td> <td class="nbHitsCovered">&nbsp;16</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> File path = Settings.getFile(Settings.KEYS.CVE_DATA_DIRECTORY);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;516</td> <td class="nbHitsCovered"><a title="Line 516: Conditional coverage 100% (2/2).">&nbsp;16</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 516: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (!path.exists()) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;515</td> <td class="nbHitsCovered">&nbsp;20</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> File path = Settings.getFile(Settings.KEYS.CVE_DATA_DIRECTORY);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;516</td> <td class="nbHitsCovered"><a title="Line 516: Conditional coverage 100% (2/2).">&nbsp;20</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 516: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (!path.exists()) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;517</td> <td class="nbHitsUncovered"><a title="Line 517: Conditional coverage 50% (1/2).">&nbsp;1</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 517: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (!path.mkdirs()) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;518</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> IOException(<span class="string">"Unable to create NVD CVE Data directory"</span>);</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;519</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;520</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;521</td> <td class="nbHitsCovered">&nbsp;16</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> path;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;521</td> <td class="nbHitsCovered">&nbsp;20</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> path;</pre></td></tr>
<tr> <td class="numLine">&nbsp;522</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;523</td> <td class="nbHits">&nbsp;</td>
@@ -923,18 +923,18 @@
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;588</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">private</span> <span class="keyword">void</span> closeStatement(Statement statement) {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;589</td> <td class="nbHitsUncovered"><a title="Line 589: Conditional coverage 50% (1/2).">&nbsp;209</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 589: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (statement != <span class="keyword">null</span>) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;589</td> <td class="nbHitsUncovered"><a title="Line 589: Conditional coverage 50% (1/2).">&nbsp;261</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 589: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (statement != <span class="keyword">null</span>) {</a></span></pre></td></tr>
<tr> <td class="numLine">&nbsp;590</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">try</span> {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;591</td> <td class="nbHitsCovered">&nbsp;209</td> <td class="src"><pre class="src">&nbsp; statement.close();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;591</td> <td class="nbHitsCovered">&nbsp;261</td> <td class="src"><pre class="src">&nbsp; statement.close();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;592</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;593</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; Logger.getLogger(CveDB.<span class="keyword">class</span></span></pre></td></tr>
<tr> <td class="numLine">&nbsp;594</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; .getName()).log(Level.FINEST, statement.toString(), ex);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;595</td> <td class="nbHitsCovered">&nbsp;209</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;595</td> <td class="nbHitsCovered">&nbsp;261</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;596</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;597</td> <td class="nbHitsCovered">&nbsp;209</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;597</td> <td class="nbHitsCovered">&nbsp;261</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;598</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;599</td> <td class="nbHits">&nbsp;</td>
@@ -951,18 +951,18 @@
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;605</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">private</span> <span class="keyword">void</span> closeResultSet(ResultSet rs) {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;606</td> <td class="nbHitsUncovered"><a title="Line 606: Conditional coverage 50% (1/2).">&nbsp;216</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 606: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (rs != <span class="keyword">null</span>) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;606</td> <td class="nbHitsUncovered"><a title="Line 606: Conditional coverage 50% (1/2).">&nbsp;273</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 606: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (rs != <span class="keyword">null</span>) {</a></span></pre></td></tr>
<tr> <td class="numLine">&nbsp;607</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;608</td> <td class="nbHitsCovered">&nbsp;216</td> <td class="src"><pre class="src">&nbsp; rs.close();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;608</td> <td class="nbHitsCovered">&nbsp;273</td> <td class="src"><pre class="src">&nbsp; rs.close();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;609</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;610</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; Logger.getLogger(CveDB.<span class="keyword">class</span></span></pre></td></tr>
<tr> <td class="numLine">&nbsp;611</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; .getName()).log(Level.FINEST, rs.toString(), ex);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;612</td> <td class="nbHitsCovered">&nbsp;216</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;612</td> <td class="nbHitsCovered">&nbsp;273</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;613</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;614</td> <td class="nbHitsCovered">&nbsp;216</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;614</td> <td class="nbHitsCovered">&nbsp;273</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;615</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;616</td> <td class="nbHits">&nbsp;</td>
@@ -1035,24 +1035,24 @@
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</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="keyword">private</span> <span class="keyword">boolean</span> isAffected(String vendor, String product, DependencyVersion identifiedVersion, String cpeId, String previous) {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;656</td> <td class="nbHitsCovered">&nbsp;1982</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">boolean</span> affected = <span class="keyword">false</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;657</td> <td class="nbHitsCovered"><a title="Line 657: Conditional coverage 100% (4/4) [each condition: 100%, 100%].">&nbsp;1982</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 657: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> <span class="keyword">final</span> <span class="keyword">boolean</span> isStruts = <span class="string">"apache"</span>.equals(vendor) &amp;&amp; <span class="string">"struts"</span>.equals(product);</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;658</td> <td class="nbHitsCovered">&nbsp;1982</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> DependencyVersion v = parseDependencyVersion(cpeId);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;659</td> <td class="nbHitsUncovered"><a title="Line 659: Conditional coverage 75% (3/4) [each condition: 100%, 50%].">&nbsp;1982</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 659: Conditional coverage 75% (3/4) [each condition: 100%, 50%]."> <span class="keyword">final</span> <span class="keyword">boolean</span> prevAffected = previous == <span class="keyword">null</span> ? <span class="keyword">false</span> : !previous.isEmpty();</a></span></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;1982</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">if</span> (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="nbHitsUncovered"><a title="Line 661: Conditional coverage 0% (0/4) [each condition: 0%, 0%].">&nbsp;0</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 661: Conditional coverage 0% (0/4) [each condition: 0%, 0%]."> <span class="keyword">if</span> (v == <span class="keyword">null</span> || <span class="string">"-"</span>.equals(v.toString())) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;656</td> <td class="nbHitsCovered">&nbsp;3491</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">boolean</span> affected = <span class="keyword">false</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;657</td> <td class="nbHitsCovered"><a title="Line 657: Conditional coverage 100% (4/4) [each condition: 100%, 100%].">&nbsp;3491</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 657: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> <span class="keyword">final</span> <span class="keyword">boolean</span> isStruts = <span class="string">"apache"</span>.equals(vendor) &amp;&amp; <span class="string">"struts"</span>.equals(product);</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;658</td> <td class="nbHitsCovered">&nbsp;3491</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> DependencyVersion v = parseDependencyVersion(cpeId);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;659</td> <td class="nbHitsUncovered"><a title="Line 659: Conditional coverage 75% (3/4) [each condition: 100%, 50%].">&nbsp;3491</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 659: Conditional coverage 75% (3/4) [each condition: 100%, 50%]."> <span class="keyword">final</span> <span class="keyword">boolean</span> prevAffected = previous == <span class="keyword">null</span> ? <span class="keyword">false</span> : !previous.isEmpty();</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;660</td> <td class="nbHitsUncovered"><a title="Line 660: Conditional coverage 75% (3/4) [each condition: 50%, 100%].">&nbsp;3491</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 660: Conditional coverage 75% (3/4) [each condition: 50%, 100%]."> <span class="keyword">if</span> (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="nbHitsUncovered"><a title="Line 661: Conditional coverage 50% (2/4) [each condition: 50%, 50%].">&nbsp;96</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 661: 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())) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;662</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; affected = <span class="keyword">true</span>;</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;663</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;664</td> <td class="nbHitsCovered"><a title="Line 664: Conditional coverage 100% (6/6) [each condition: 100%, 100%, 100%].">&nbsp;1982</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 664: Conditional coverage 100% (6/6) [each condition: 100%, 100%, 100%]."> } <span class="keyword">else</span> <span class="keyword">if</span> (identifiedVersion.equals(v) || (prevAffected &amp;&amp; identifiedVersion.compareTo(v) &lt; 0)) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;665</td> <td class="nbHitsCovered"><a title="Line 665: Conditional coverage 100% (2/2).">&nbsp;50</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 665: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (isStruts) { <span class="comment">//struts 2 vulns don't affect struts 1</span></a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;666</td> <td class="nbHitsUncovered"><a title="Line 666: Conditional coverage 50% (1/2).">&nbsp;38</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 666: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (identifiedVersion.getVersionParts().get(0).equals(v.getVersionParts().get(0))) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;667</td> <td class="nbHitsCovered">&nbsp;38</td> <td class="src"><pre class="src">&nbsp; affected = <span class="keyword">true</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;664</td> <td class="nbHitsCovered"><a title="Line 664: Conditional coverage 100% (6/6) [each condition: 100%, 100%, 100%].">&nbsp;3395</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 664: Conditional coverage 100% (6/6) [each condition: 100%, 100%, 100%]."> } <span class="keyword">else</span> <span class="keyword">if</span> (identifiedVersion.equals(v) || (prevAffected &amp;&amp; identifiedVersion.compareTo(v) &lt; 0)) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;665</td> <td class="nbHitsCovered"><a title="Line 665: Conditional coverage 100% (2/2).">&nbsp;81</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 665: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (isStruts) { <span class="comment">//struts 2 vulns don't affect struts 1</span></a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;666</td> <td class="nbHitsCovered"><a title="Line 666: Conditional coverage 100% (2/2).">&nbsp;70</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 666: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (identifiedVersion.getVersionParts().get(0).equals(v.getVersionParts().get(0))) {</a></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;667</td> <td class="nbHitsCovered">&nbsp;48</td> <td class="src"><pre class="src">&nbsp; affected = <span class="keyword">true</span>;</pre></td></tr>
<tr> <td class="numLine">&nbsp;668</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;669</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;670</td> <td class="nbHitsCovered">&nbsp;12</td> <td class="src"><pre class="src">&nbsp; affected = <span class="keyword">true</span>;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;670</td> <td class="nbHitsCovered">&nbsp;11</td> <td class="src"><pre class="src">&nbsp; affected = <span class="keyword">true</span>;</pre></td></tr>
<tr> <td class="numLine">&nbsp;671</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;672</td> <td class="nbHits">&nbsp;</td>
@@ -1065,7 +1065,7 @@
<td class="src"><pre class="src">&nbsp;<span class="comment"> * might also introduce false positives.</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;676</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;677</td> <td class="nbHitsCovered">&nbsp;1982</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> affected;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;677</td> <td class="nbHitsCovered">&nbsp;3491</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> affected;</pre></td></tr>
<tr> <td class="numLine">&nbsp;678</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;679</td> <td class="nbHits">&nbsp;</td>
@@ -1086,16 +1086,16 @@
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;687</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;688</td> <td class="nbHitsCovered">&nbsp;1982</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;688</td> <td class="nbHitsCovered">&nbsp;3491</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;689</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;690</td> <td class="nbHitsCovered">&nbsp;1982</td> <td class="src"><pre class="src">&nbsp; cpe.parseName(cpeStr);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;690</td> <td class="nbHitsCovered">&nbsp;3491</td> <td class="src"><pre class="src">&nbsp; cpe.parseName(cpeStr);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;691</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;692</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;693</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; Logger.getLogger(CveDB.<span class="keyword">class</span>.getName()).log(Level.FINEST, <span class="keyword">null</span>, ex);</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;694</td> <td class="nbHitsCovered">&nbsp;1982</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;695</td> <td class="nbHitsCovered">&nbsp;1982</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> parseDependencyVersion(cpe);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;694</td> <td class="nbHitsCovered">&nbsp;3491</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;695</td> <td class="nbHitsCovered">&nbsp;3491</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> parseDependencyVersion(cpe);</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>
@@ -1118,28 +1118,28 @@
<td class="src"><pre class="src">&nbsp; <span class="keyword">private</span> DependencyVersion parseDependencyVersion(VulnerableSoftware cpe) {</pre></td></tr>
<tr> <td class="numLine">&nbsp;706</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; DependencyVersion cpeVersion;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;707</td> <td class="nbHitsUncovered"><a title="Line 707: Conditional coverage 75% (3/4) [each condition: 100%, 50%].">&nbsp;1989</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 707: Conditional coverage 75% (3/4) [each condition: 100%, 50%]."> <span class="keyword">if</span> (cpe.getVersion() != <span class="keyword">null</span> &amp;&amp; cpe.getVersion().length() &gt; 0) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;707</td> <td class="nbHitsUncovered"><a title="Line 707: Conditional coverage 75% (3/4) [each condition: 100%, 50%].">&nbsp;3503</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 707: Conditional coverage 75% (3/4) [each condition: 100%, 50%]."> <span class="keyword">if</span> (cpe.getVersion() != <span class="keyword">null</span> &amp;&amp; cpe.getVersion().length() &gt; 0) {</a></span></pre></td></tr>
<tr> <td class="numLine">&nbsp;708</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; String versionText;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;709</td> <td class="nbHitsUncovered"><a title="Line 709: Conditional coverage 75% (3/4) [each condition: 100%, 50%].">&nbsp;1987</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 709: Conditional coverage 75% (3/4) [each condition: 100%, 50%]."> <span class="keyword">if</span> (cpe.getRevision() != <span class="keyword">null</span> &amp;&amp; cpe.getRevision().length() &gt; 0) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;710</td> <td class="nbHitsCovered">&nbsp;460</td> <td class="src"><pre class="src">&nbsp; versionText = String.format(<span class="string">"%s.%s"</span>, cpe.getVersion(), cpe.getRevision());</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;709</td> <td class="nbHitsUncovered"><a title="Line 709: Conditional coverage 75% (3/4) [each condition: 100%, 50%].">&nbsp;3499</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 709: Conditional coverage 75% (3/4) [each condition: 100%, 50%]."> <span class="keyword">if</span> (cpe.getRevision() != <span class="keyword">null</span> &amp;&amp; cpe.getRevision().length() &gt; 0) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;710</td> <td class="nbHitsCovered">&nbsp;441</td> <td class="src"><pre class="src">&nbsp; versionText = String.format(<span class="string">"%s.%s"</span>, cpe.getVersion(), cpe.getRevision());</pre></td></tr>
<tr> <td class="numLine">&nbsp;711</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;712</td> <td class="nbHitsCovered">&nbsp;1527</td> <td class="src"><pre class="src">&nbsp; versionText = cpe.getVersion();</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;712</td> <td class="nbHitsCovered">&nbsp;3058</td> <td class="src"><pre class="src">&nbsp; versionText = cpe.getVersion();</pre></td></tr>
<tr> <td class="numLine">&nbsp;713</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;714</td> <td class="nbHitsCovered">&nbsp;1987</td> <td class="src"><pre class="src">&nbsp; cpeVersion = DependencyVersionUtil.parseVersion(versionText);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;715</td> <td class="nbHitsCovered">&nbsp;1987</td> <td class="src"><pre class="src">&nbsp; } <span class="keyword">else</span> {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;716</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; cpeVersion = <span class="keyword">new</span> DependencyVersion(<span class="string">"-"</span>);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;714</td> <td class="nbHitsCovered">&nbsp;3499</td> <td class="src"><pre class="src">&nbsp; cpeVersion = DependencyVersionUtil.parseVersion(versionText);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;715</td> <td class="nbHitsCovered">&nbsp;3499</td> <td class="src"><pre class="src">&nbsp; } <span class="keyword">else</span> {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;716</td> <td class="nbHitsCovered">&nbsp;4</td> <td class="src"><pre class="src">&nbsp; cpeVersion = <span class="keyword">new</span> DependencyVersion(<span class="string">"-"</span>);</pre></td></tr>
<tr> <td class="numLine">&nbsp;717</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;718</td> <td class="nbHitsCovered">&nbsp;1989</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> cpeVersion;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;718</td> <td class="nbHitsCovered">&nbsp;3503</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> cpeVersion;</pre></td></tr>
<tr> <td class="numLine">&nbsp;719</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;720</td> <td class="nbHits">&nbsp;</td>
<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>