mirror of
https://github.com/ysoftdevs/DependencyCheck.git
synced 2026-05-02 21:24:34 +02:00
v1.3.5 documentation
This commit is contained in:
@@ -12,7 +12,7 @@
|
||||
<div class="separator"> </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.ConnectionFactory.html">ConnectionFactory</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">40%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:40px"><span class="text">68/168</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">32%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:32px"><span class="text">11/34</span></div></div></td></tr></table></td><td class="value"><span class="hidden">7.5;</span>7.5</td></tr>
|
||||
<tr><td><a href="org.owasp.dependencycheck.data.nvdcve.ConnectionFactory.html">ConnectionFactory</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">38%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:38px"><span class="text">68/177</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">26%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:26px"><span class="text">11/42</span></div></div></td></tr></table></td><td class="value"><span class="hidden">8.0;</span>8</td></tr>
|
||||
|
||||
</table>
|
||||
<div class="separator"> </div>
|
||||
@@ -461,128 +461,151 @@
|
||||
<tr> <td class="numLine"> 278</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="comment"> * @param conn the database connection object</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 279</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="comment"> * @param schema the current schema version that is being upgraded</span></pre></td></tr>
|
||||
<td class="src"><pre class="src"> <span class="comment"> * @param appExpectedVersion the schema version that the application expects</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 280</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="comment"> * @throws DatabaseException thrown if there is an exception upgrading the database schema</span></pre></td></tr>
|
||||
<td class="src"><pre class="src"> <span class="comment"> * @param currentDbVersion the current schema version of the database</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 281</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
||||
<td class="src"><pre class="src"> <span class="comment"> * @throws DatabaseException thrown if there is an exception upgrading the database schema</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 282</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">void</span> updateSchema(Connection conn, String schema) <span class="keyword">throws</span> DatabaseException {</pre></td></tr>
|
||||
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 283</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="keyword">final</span> String databaseProductName;</pre></td></tr>
|
||||
<td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">void</span> updateSchema(Connection conn, DependencyVersion appExpectedVersion, DependencyVersion currentDbVersion)</pre></td></tr>
|
||||
<tr> <td class="numLine"> 284</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="keyword">throws</span> DatabaseException {</pre></td></tr>
|
||||
<tr> <td class="numLine"> 285</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> </pre></td></tr>
|
||||
<tr> <td class="numLine"> 286</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="keyword">final</span> String databaseProductName;</pre></td></tr>
|
||||
<tr> <td class="numLine"> 287</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 285</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> databaseProductName = conn.getMetaData().getDatabaseProductName();</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 286</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (SQLException ex) {</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 287</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> <span class="keyword">new</span> DatabaseException(<span class="string">"Unable to get the database product name"</span>);</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 288</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 289</td> <td class="nbHitsUncovered"><a title="Line 289: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 289: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (<span class="string">"h2"</span>.equalsIgnoreCase(databaseProductName)) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 290</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> LOGGER.debug(<span class="string">"Updating database structure"</span>);</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 291</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> InputStream is = <span class="keyword">null</span>;</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 292</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> String updateFile = <span class="keyword">null</span>;</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 293</td> <td class="nbHits"> </td>
|
||||
<tr> <td class="numLineCover"> 288</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> databaseProductName = conn.getMetaData().getDatabaseProductName();</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 289</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (SQLException ex) {</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 290</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> <span class="keyword">new</span> DatabaseException(<span class="string">"Unable to get the database product name"</span>);</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 291</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 292</td> <td class="nbHitsUncovered"><a title="Line 292: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 292: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (<span class="string">"h2"</span>.equalsIgnoreCase(databaseProductName)) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 293</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> LOGGER.debug(<span class="string">"Updating database structure"</span>);</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 294</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> InputStream is = <span class="keyword">null</span>;</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 295</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> String updateFile = <span class="keyword">null</span>;</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 296</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 294</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> updateFile = String.format(DB_STRUCTURE_UPDATE_RESOURCE, schema);</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 295</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> is = ConnectionFactory.<span class="keyword">class</span>.getClassLoader().getResourceAsStream(updateFile);</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 296</td> <td class="nbHitsUncovered"><a title="Line 296: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 296: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (is == <span class="keyword">null</span>) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 297</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> <span class="keyword">new</span> DatabaseException(String.format(<span class="string">"Unable to load update file '%s'"</span>, updateFile));</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 298</td> <td class="nbHits"> </td>
|
||||
<tr> <td class="numLineCover"> 297</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> updateFile = String.format(DB_STRUCTURE_UPDATE_RESOURCE, currentDbVersion.toString());</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 298</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> is = ConnectionFactory.<span class="keyword">class</span>.getClassLoader().getResourceAsStream(updateFile);</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 299</td> <td class="nbHitsUncovered"><a title="Line 299: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 299: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (is == <span class="keyword">null</span>) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 300</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> <span class="keyword">new</span> DatabaseException(String.format(<span class="string">"Unable to load update file '%s'"</span>, updateFile));</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 301</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 299</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">final</span> String dbStructureUpdate = IOUtils.toString(is, <span class="string">"UTF-8"</span>);</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 300</td> <td class="nbHits"> </td>
|
||||
<tr> <td class="numLineCover"> 302</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">final</span> String dbStructureUpdate = IOUtils.toString(is, <span class="string">"UTF-8"</span>);</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 303</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> </pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 301</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Statement statement = <span class="keyword">null</span>;</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 302</td> <td class="nbHits"> </td>
|
||||
<tr> <td class="numLineCover"> 304</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Statement statement = <span class="keyword">null</span>;</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 305</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 303</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> statement = conn.createStatement();</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 304</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">final</span> <span class="keyword">boolean</span> success = statement.execute(dbStructureUpdate);</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 305</td> <td class="nbHitsUncovered"><a title="Line 305: Conditional coverage 0% (0/4) [each condition: 0%, 0%]."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 305: Conditional coverage 0% (0/4) [each condition: 0%, 0%]."> <span class="keyword">if</span> (!success && statement.getUpdateCount() <= 0) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 306</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> <span class="keyword">new</span> DatabaseException(String.format(<span class="string">"Unable to upgrade the database schema to %s"</span>, schema));</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 307</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 308</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (SQLException ex) {</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 309</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> LOGGER.debug(<span class="string">""</span>, ex);</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 310</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> <span class="keyword">new</span> DatabaseException(<span class="string">"Unable to update database schema"</span>, ex);</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 306</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> statement = conn.createStatement();</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 307</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">final</span> <span class="keyword">boolean</span> success = statement.execute(dbStructureUpdate);</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 308</td> <td class="nbHitsUncovered"><a title="Line 308: Conditional coverage 0% (0/4) [each condition: 0%, 0%]."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 308: Conditional coverage 0% (0/4) [each condition: 0%, 0%]."> <span class="keyword">if</span> (!success && statement.getUpdateCount() <= 0) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 309</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> <span class="keyword">new</span> DatabaseException(String.format(<span class="string">"Unable to upgrade the database schema to %s"</span>,</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 310</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> currentDbVersion.toString()));</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 311</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> } <span class="keyword">finally</span> {</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 312</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> DBUtils.closeStatement(statement);</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 313</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 314</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (IOException ex) {</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 315</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">final</span> String msg = String.format(<span class="string">"Upgrade SQL file does not exist: %s"</span>, updateFile);</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 316</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> <span class="keyword">new</span> DatabaseException(msg, ex);</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 317</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> } <span class="keyword">finally</span> {</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 318</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> IOUtils.closeQuietly(is);</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 319</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 320</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">else</span> {</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 321</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> LOGGER.error(<span class="string">"The database schema must be upgraded to use this version of dependency-check. Please see {} for more information."</span>, UPGRADE_HELP_URL);</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 322</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> <span class="keyword">new</span> DatabaseException(<span class="string">"Database schema is out of date"</span>);</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 323</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 324</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 325</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> </pre></td></tr>
|
||||
<tr> <td class="numLine"> 326</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 327</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="comment"> * Counter to ensure that calls to ensureSchemaVersion does not end up in an endless loop.</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 328</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 329</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">int</span> callDepth = 0;</pre></td></tr>
|
||||
<tr> <td class="numLine"> 330</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> </pre></td></tr>
|
||||
<tr> <td class="numLine"> 331</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 332</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="comment"> * Uses the provided connection to check the specified schema version within the database.</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 333</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 334</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="comment"> * @param conn the database connection object</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 335</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="comment"> * @throws DatabaseException thrown if the schema version is not compatible with this version of dependency-check</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 336</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 337</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">void</span> ensureSchemaVersion(Connection conn) <span class="keyword">throws</span> DatabaseException {</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 338</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> ResultSet rs = <span class="keyword">null</span>;</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 339</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> CallableStatement cs = <span class="keyword">null</span>;</pre></td></tr>
|
||||
<tr> <td class="numLine"> 340</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr>
|
||||
<tr> <td class="numLine"> 341</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="comment">//TODO convert this to use DatabaseProperties</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 342</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> cs = conn.prepareCall(<span class="string">"SELECT value FROM properties WHERE id = 'version'"</span>);</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 343</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> rs = cs.executeQuery();</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 344</td> <td class="nbHitsUncovered"><a title="Line 344: Conditional coverage 50% (1/2)."> 2</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 344: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (rs.next()) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 345</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">final</span> DependencyVersion current = DependencyVersionUtil.parseVersion(DB_SCHEMA_VERSION);</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 346</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">final</span> DependencyVersion db = DependencyVersionUtil.parseVersion(rs.getString(1));</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 347</td> <td class="nbHitsUncovered"><a title="Line 347: Conditional coverage 50% (1/2)."> 2</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 347: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (current.compareTo(db) > 0) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 348</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> LOGGER.debug(<span class="string">"Current Schema: {}"</span>, DB_SCHEMA_VERSION);</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 349</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> LOGGER.debug(<span class="string">"DB Schema: {}"</span>, rs.getString(1));</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 350</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> updateSchema(conn, rs.getString(1));</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 351</td> <td class="nbHitsUncovered"><a title="Line 351: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 351: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (++callDepth < 10) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 352</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> ensureSchemaVersion(conn);</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 353</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLine"> 354</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 355</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 356</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> <span class="keyword">new</span> DatabaseException(<span class="string">"Database schema is missing"</span>);</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 357</td> <td class="nbHits"> </td>
|
||||
<tr> <td class="numLineCover"> 312</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (SQLException ex) {</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 313</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> LOGGER.debug(<span class="string">""</span>, ex);</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 314</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> <span class="keyword">new</span> DatabaseException(<span class="string">"Unable to update database schema"</span>, ex);</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 315</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> } <span class="keyword">finally</span> {</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 316</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> DBUtils.closeStatement(statement);</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 317</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 318</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (IOException ex) {</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 319</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">final</span> String msg = String.format(<span class="string">"Upgrade SQL file does not exist: %s"</span>, updateFile);</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 320</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> <span class="keyword">new</span> DatabaseException(msg, ex);</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 321</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> } <span class="keyword">finally</span> {</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 322</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> IOUtils.closeQuietly(is);</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 323</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 324</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">else</span> {</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 325</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">final</span> <span class="keyword">int</span> e0 = Integer.parseInt(appExpectedVersion.getVersionParts().get(0));</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 326</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">final</span> <span class="keyword">int</span> c0 = Integer.parseInt(currentDbVersion.getVersionParts().get(0));</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 327</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">final</span> <span class="keyword">int</span> e1 = Integer.parseInt(appExpectedVersion.getVersionParts().get(1));</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 328</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">final</span> <span class="keyword">int</span> c1 = Integer.parseInt(currentDbVersion.getVersionParts().get(1));</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 329</td> <td class="nbHitsUncovered"><a title="Line 329: Conditional coverage 0% (0/4) [each condition: 0%, 0%]."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 329: Conditional coverage 0% (0/4) [each condition: 0%, 0%]."> <span class="keyword">if</span> (e0 == c0 && e1 < c1) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 330</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> LOGGER.warn(<span class="string">"A new version of dependency-check is available; consider upgrading"</span>);</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 331</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Settings.setBoolean(Settings.KEYS.AUTO_UPDATE, <span class="keyword">false</span>);</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 332</td> <td class="nbHitsUncovered"><a title="Line 332: Conditional coverage 0% (0/4) [each condition: 0%, 0%]."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 332: Conditional coverage 0% (0/4) [each condition: 0%, 0%]."> } <span class="keyword">else</span> <span class="keyword">if</span> (e0 == c0 && e1 == c1) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 333</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="comment">//do nothing - not sure how we got here, but just incase...</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 334</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 335</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> LOGGER.error(<span class="string">"The database schema must be upgraded to use this version of dependency-check. Please see {} for more information."</span>,</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 336</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> UPGRADE_HELP_URL);</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 337</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> <span class="keyword">new</span> DatabaseException(<span class="string">"Database schema is out of date"</span>);</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 338</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 358</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (SQLException ex) {</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 359</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> LOGGER.debug(<span class="string">""</span>, ex);</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 360</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> <span class="keyword">new</span> DatabaseException(<span class="string">"Unable to check the database schema version"</span>);</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 361</td> <td class="nbHits"> </td>
|
||||
<tr> <td class="numLine"> 339</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 340</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 341</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> </pre></td></tr>
|
||||
<tr> <td class="numLine"> 342</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 343</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="comment"> * Counter to ensure that calls to ensureSchemaVersion does not end up in an endless loop.</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 344</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 345</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">int</span> callDepth = 0;</pre></td></tr>
|
||||
<tr> <td class="numLine"> 346</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> </pre></td></tr>
|
||||
<tr> <td class="numLine"> 347</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 348</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="comment"> * Uses the provided connection to check the specified schema version within the database.</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 349</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 350</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="comment"> * @param conn the database connection object</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 351</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="comment"> * @throws DatabaseException thrown if the schema version is not compatible with this version of dependency-check</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 352</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 353</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">void</span> ensureSchemaVersion(Connection conn) <span class="keyword">throws</span> DatabaseException {</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 354</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> ResultSet rs = <span class="keyword">null</span>;</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 355</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> CallableStatement cs = <span class="keyword">null</span>;</pre></td></tr>
|
||||
<tr> <td class="numLine"> 356</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr>
|
||||
<tr> <td class="numLine"> 357</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> <span class="comment">//TODO convert this to use DatabaseProperties</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 358</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> cs = conn.prepareCall(<span class="string">"SELECT value FROM properties WHERE id = 'version'"</span>);</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 359</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> rs = cs.executeQuery();</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 360</td> <td class="nbHitsUncovered"><a title="Line 360: Conditional coverage 50% (1/2)."> 2</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 360: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (rs.next()) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 361</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">final</span> DependencyVersion appDbVersion = DependencyVersionUtil.parseVersion(DB_SCHEMA_VERSION);</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 362</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">final</span> DependencyVersion db = DependencyVersionUtil.parseVersion(rs.getString(1));</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 363</td> <td class="nbHitsUncovered"><a title="Line 363: Conditional coverage 50% (1/2)."> 2</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 363: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (appDbVersion.compareTo(db) > 0) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 364</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> LOGGER.debug(<span class="string">"Current Schema: {}"</span>, DB_SCHEMA_VERSION);</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 365</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> LOGGER.debug(<span class="string">"DB Schema: {}"</span>, rs.getString(1));</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 366</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> updateSchema(conn, appDbVersion, db);</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 367</td> <td class="nbHitsUncovered"><a title="Line 367: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 367: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (++callDepth < 10) {</a></span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 368</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> ensureSchemaVersion(conn);</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 369</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLine"> 370</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 371</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 372</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> <span class="keyword">new</span> DatabaseException(<span class="string">"Database schema is missing"</span>);</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 373</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 374</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (SQLException ex) {</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 375</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> LOGGER.debug(<span class="string">""</span>, ex);</span></pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 376</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> <span class="keyword">new</span> DatabaseException(<span class="string">"Unable to check the database schema version"</span>);</span></pre></td></tr>
|
||||
<tr> <td class="numLine"> 377</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> } <span class="keyword">finally</span> {</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 362</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> DBUtils.closeResultSet(rs);</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 363</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> DBUtils.closeStatement(cs);</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 364</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 365</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLine"> 366</td> <td class="nbHits"> </td>
|
||||
<tr> <td class="numLineCover"> 378</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> DBUtils.closeResultSet(rs);</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 379</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> DBUtils.closeStatement(cs);</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 380</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLineCover"> 381</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> }</pre></td></tr>
|
||||
<tr> <td class="numLine"> 382</td> <td class="nbHits"> </td>
|
||||
<td class="src"><pre class="src"> }</pre></td></tr>
|
||||
</table>
|
||||
|
||||
<div class="footer">Report generated by <a href="http://cobertura.sourceforge.net/" target="_top">Cobertura</a> 2.1.1 on 1/31/16 8:34 AM.</div>
|
||||
<div class="footer">Report generated by <a href="http://cobertura.sourceforge.net/" target="_top">Cobertura</a> 2.1.1 on 3/5/16 1:26 PM.</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user