<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.11.1 from org.apache.maven.plugins:maven-site-plugin:3.12.1:CategorySummaryDocumentRenderer at 2023-06-08

 | Rendered using Apache Maven Default Skin
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="generator" content="Apache Maven Doxia Site Renderer 1.11.1" />
    <title>shardingsphere-test-fixture-jdbc &#x2013; Generated Reports</title>
    <link rel="stylesheet" href="./css/maven-base.css" />
    <link rel="stylesheet" href="./css/maven-theme.css" />
    <link rel="stylesheet" href="./css/site.css" />
    <link rel="stylesheet" href="./css/print.css" media="print" />
  </head>
  <body class="composite">
    <div id="banner">
<div id="bannerLeft">shardingsphere-test-fixture-jdbc
</div>
      <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="breadcrumbs">
      <div class="xleft">
        <span id="publishDate">Last Published: 2023-06-08</span>
           | <span id="projectVersion">Version: 5.3.3-SNAPSHOT</span>
      </div>
      <div class="xright"><a href="./" title="shardingsphere-test-fixture-jdbc">shardingsphere-test-fixture-jdbc</a>      </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="leftColumn">
      <div id="navcolumn">
       <h5>Parent Project</h5>
    <ul>
     <li class="none"><a href="../index.html" title="shardingsphere-test-fixture">shardingsphere-test-fixture</a></li>
    </ul>
       <h5>Project Documentation</h5>
    <ul>
     <li class="collapsed"><a href="project-info.html" title="Project Information">Project Information</a></li>
     <li class="expanded"><strong>Project Reports</strong>
      <ul>
       <li class="none"><a href="apidocs/index.html" title="Javadoc">Javadoc</a></li>
       <li class="none"><a href="xref/index.html" title="Source Xref">Source Xref</a></li>
       <li class="none"><a href="rat-report.html" title="Rat Report">Rat Report</a></li>
       <li class="none"><a href="checkstyle.html" title="Checkstyle">Checkstyle</a></li>
       <li class="none"><a href="spotbugs.html" title="SpotBugs">SpotBugs</a></li>
       <li class="none"><a href="jdepend-report.html" title="JDepend">JDepend</a></li>
      </ul></li>
    </ul>
      <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
        <img class="poweredBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
      </a>
      </div>
    </div>
    <div id="bodyColumn">
      <div id="contentBox">
<section>
<h2><a name="Generated_Reports"></a>Generated Reports</h2>
<p>This document provides an overview of the various reports that are automatically generated by <a class="externalLink" href="http://maven.apache.org">Maven</a> . Each report is briefly described below.</p><section>
<h3><a name="Overview"></a>Overview</h3>
<table border="0" class="bodyTable">
<tr class="a">
<th>Document</th>
<th>Description</th></tr>
<tr class="b">
<td align="left"><a href="apidocs/index.html">Javadoc</a></td>
<td align="left">Javadoc API documentation.</td></tr>
<tr class="a">
<td align="left"><a href="xref/index.html">Source Xref</a></td>
<td align="left">HTML based, cross-reference version of Java source code.</td></tr>
<tr class="b">
<td align="left"><a href="rat-report.html">Rat Report</a></td>
<td align="left">Report on compliance to license related source code policies</td></tr>
<tr class="a">
<td align="left"><a href="checkstyle.html">Checkstyle</a></td>
<td align="left">Report on coding style conventions.</td></tr>
<tr class="b">
<td align="left"><a href="spotbugs.html">SpotBugs</a></td>
<td align="left">Generates a source code report with the SpotBugs Library.</td></tr>
<tr class="a">
<td align="left"><a href="jdepend-report.html">JDepend</a></td>
<td align="left">JDepend traverses Java class file directories and generates design quality metrics for each Java package. JDepend allows you to automatically measure the quality of a design in terms of its extensibility, reusability, and maintainability to manage package dependencies effectively.</td></tr></table></section></section>
      </div>
    </div>
    <div class="clear">
      <hr/>
    </div>
    <div id="footer">
      <div class="xright">
        Copyright &#169;      2023<a href="https://www.apache.org/">The Apache Software Foundation</a>.
.      </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
  </body>
</html>
