<!DOCTYPE html>
<html lang="en">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>configurators</title>
    <link rel="stylesheet" type="text/css" href="style.css">
    <script src="jquery.min.js" type="text/javascript"></script>
    <script src="highcharts.js" type="text/javascript"></script>
    <script type="text/javascript">
    $(document).ready(function() {
          var classCoverageDistribution = new Highcharts.Chart({
             chart: {
                renderTo: 'classCoverageDistribution',
                type: 'column'
             },
             title: {text: ''},
             legend: {enabled: false},
             credits: {enabled: false},
             tooltip: {enabled: false},
             xAxis: {
                 labels: {style: {fontSize: '8px'}},
                 categories: [
                 '0%','0-10%','10-20%','20-30%','30-40%','40-50%','50-60%','60-70%','70-80%','80-90%','90-100%','100%'
                 ]
            },
            yAxis: {
                title: '',
                labels: {style: {fontSize: '8px'}},
            },
            series: [{
                data: [0,0,0,0,0,0,0,0,0,1,3,0]
            }],
          });

        var classComplexity = new Highcharts.Chart({
            chart: {
              renderTo: 'classComplexity',
              type: 'scatter'
            },
            title: {text: ''},
            legend: {enabled: false},
            credits: {enabled: false},
            xAxis: {
               labels: {enabled: false},
            },
            yAxis: {
              title: '',
              labels: {enabled: false},
            },
            tooltip: {
                formatter: function() {
                    return this.point.config[2];
                }
            },
            series: [{
              data: [[97.435897435897,26,"<a href=\"configurators_LoggerConfigurationAdapterINI.php.html#33\">LoggerConfigurationAdapterINI<\/a>"],[86.666666666667,6,"<a href=\"configurators_LoggerConfigurationAdapterPHP.php.html#52\">LoggerConfigurationAdapterPHP<\/a>"],[94.782608695652,38,"<a href=\"configurators_LoggerConfigurationAdapterXML.php.html#30\">LoggerConfigurationAdapterXML<\/a>"],[91.752577319588,69,"<a href=\"configurators_LoggerConfiguratorDefault.php.html#31\">LoggerConfiguratorDefault<\/a>"]],
              marker: {
                  symbol: 'diamond'
              }
            }],
        });
    });
    </script>
  </head>

  <body>
    <table width="100%" border="0" cellspacing="0" cellpadding="0">
      <tr><td class="title">configurators</td></tr>
      <tr><td><div align="center"><p><a href="configurators.html">Back to Code Coverage report</a></p></div></td></tr>
      <tr><td class="ruler"><img src="glass.png" width="3" height="3" alt=""></td></tr>
    </table>

    <br />

    <center>
      <table width="90%" cellpadding="2" cellspacing="1" border="0">
        <tr>
          <td valign="top">
            <h2>Class Coverage Distribution</h2>
            <div id="classCoverageDistribution"></div>
          </td>

          <td valign="top">
            <h2>Class Complexity</h2>
            <div id="classComplexity"></div>
          </td>
        </tr>
        <tr>
          <td valign="top">
            <h2>Top Project Risks</h2>
            <ul>
              <li><a href="configurators_LoggerConfiguratorDefault.php.html#31">LoggerConfiguratorDefault</a> (71)</li>
              <li><a href="configurators_LoggerConfigurationAdapterXML.php.html#30">LoggerConfigurationAdapterXML</a> (38)</li>
              <li><a href="configurators_LoggerConfigurationAdapterINI.php.html#33">LoggerConfigurationAdapterINI</a> (26)</li>
              <li><a href="configurators_LoggerConfigurationAdapterPHP.php.html#52">LoggerConfigurationAdapterPHP</a> (6)</li>

            </ul>
          </td>

          <td valign="top">
            <h2>Least Tested Methods</h2>
            <ul>
              <li><a href="configurators_LoggerConfiguratorDefault.php.html#229">LoggerConfiguratorDefault::configureRenderer</a> (75%)</li>
              <li><a href="configurators_LoggerConfigurationAdapterXML.php.html#151">LoggerConfigurationAdapterXML::parseParameters</a> (80%)</li>
              <li><a href="configurators_LoggerConfiguratorDefault.php.html#331">LoggerConfiguratorDefault::createAppenderLayout</a> (83%)</li>
              <li><a href="configurators_LoggerConfigurationAdapterPHP.php.html#54">LoggerConfigurationAdapterPHP::convert</a> (86%)</li>
              <li><a href="configurators_LoggerConfiguratorDefault.php.html#363">LoggerConfiguratorDefault::createAppenderFilter</a> (86%)</li>
              <li><a href="configurators_LoggerConfigurationAdapterXML.php.html#186">LoggerConfigurationAdapterXML::parseLogger</a> (87%)</li>
              <li><a href="configurators_LoggerConfiguratorDefault.php.html#267">LoggerConfiguratorDefault::configureAppender</a> (88%)</li>
              <li><a href="configurators_LoggerConfigurationAdapterXML.php.html#110">LoggerConfigurationAdapterXML::parseAppender</a> (90%)</li>
              <li><a href="configurators_LoggerConfiguratorDefault.php.html#166">LoggerConfiguratorDefault::getConfigType</a> (91%)</li>
              <li><a href="configurators_LoggerConfiguratorDefault.php.html#103">LoggerConfiguratorDefault::parse</a> (93%)</li>

            </ul>
          </td>
        </tr>
      </table>
    </center>

    <br />

    <table width="100%" border="0" cellspacing="0" cellpadding="0">
      <tr><td class="ruler"><img src="glass.png" width="3" height="3" alt=""></td></tr>
      <tr><td class="versionInfo">Generated by <a href="http://github.com/sebastianbergmann/php-code-coverage" target="_top">PHP_CodeCoverage 1.1.1</a> using <a href="http://www.php.net/" target="_top">PHP 5.3.3-7+squeeze3</a> and PHPUnit 3.6.3 at Sat Feb 18 22:32:39 GMT 2012.</td></tr>
    </table>

    <br/>
  </body>
</html>
