<!DOCTYPE html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <title>Dashboard for D:\work\log4php-trunk\src\main\php/helpers</title>
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link href="css/bootstrap.min.css" rel="stylesheet">
  <link href="css/bootstrap-responsive.min.css" rel="stylesheet">
  <link href="css/style.css" rel="stylesheet">
  <!--[if lt IE 9]>
  <script src="http://html5shim.googlecode.com/svn/trunk/html5.js" type="text/javascript"></script>
  <![endif]-->
 </head>
 <body>
  <header>
   <div class="container">
    <div class="row">
     <div class="span12">
      <ul class="breadcrumb">
        <li><a href="index.html">D:\work\log4php-trunk\src\main\php</a> <span class="divider">/</span></li>
        <li><a href="helpers.html">helpers</a></li>
        <li class="active">(Dashboard)</li>

      </ul>
     </div>
    </div>
   </div>
  </header>
  <div class="container">
   <div class="row">
    <div class="span6">
     <h2>Class Coverage Distribution</h2>
     <div id="classCoverageDistribution"></div>
    </div>
    <div class="span6">
     <h2>Class Complexity</h2>
     <div id="classComplexity"></div>
    </div>
   </div>
   <div class="row">
    <div class="span6">
     <h2>Top Project Risks</h2>
     <ul>
              <li><a href="helpers_LoggerOptionConverter.php.html#29">LoggerOptionConverter</a> (75)</li>
              <li><a href="helpers_LoggerPatternParser.php.html#34">LoggerPatternParser</a> (25)</li>
              <li><a href="helpers_LoggerUtils.php.html#28">LoggerUtils</a> (18)</li>

     </ul>
    </div>
    <div class="span6">
     <h2>Least Tested Methods</h2>
     <ul>
              <li><a href="helpers_LoggerUtils.php.html#41">LoggerUtils::tokenizeClassName</a> (0%)</li>
              <li><a href="helpers_LoggerOptionConverter.php.html#56">LoggerOptionConverter::getSystemProperty</a> (0%)</li>
              <li><a href="helpers_LoggerOptionConverter.php.html#184">LoggerOptionConverter::toStringEx</a> (28%)</li>
              <li><a href="helpers_LoggerOptionConverter.php.html#105">LoggerOptionConverter::toPositiveIntegerEx</a> (40%)</li>
              <li><a href="helpers_LoggerPatternParser.php.html#169">LoggerPatternParser::getConverter</a> (66%)</li>
              <li><a href="helpers_LoggerPatternParser.php.html#206">LoggerPatternParser::parseModifiers</a> (68%)</li>
              <li><a href="helpers_LoggerOptionConverter.php.html#144">LoggerOptionConverter::toFileSizeEx</a> (81%)</li>
              <li><a href="helpers_LoggerOptionConverter.php.html#117">LoggerOptionConverter::toLevelEx</a> (83%)</li>
              <li><a href="helpers_LoggerPatternParser.php.html#144">LoggerPatternParser::addConverter</a> (87%)</li>
              <li><a href="helpers_LoggerUtils.php.html#69">LoggerUtils::shortenClassName</a> (92%)</li>

     </ul>
    </div>
   </div>
   <footer>
    <p>
     <small>Generated by <a href="http://github.com/sebastianbergmann/php-code-coverage" target="_top">PHP_CodeCoverage 1.2.3</a> using <a href="http://www.php.net/" target="_top">PHP 5.3.13</a> and <a href="http://phpunit.de/">PHPUnit 3.7.6</a> at Sat Oct 13 8:58:14 BST 2012.</small>
    </p>
   </footer>
  </div>
  <script src="js/bootstrap.min.js" type="text/javascript"></script>
  <script src="js/jquery.min.js" type="text/javascript"></script>
  <script src="js/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,1,1,1,0,1]
          }],
        });

      var classComplexity = new Highcharts.Chart({
          chart: {
            renderTo: 'classComplexity',
            type: 'scatter'
          },
          title: {text: ''},
          legend: {enabled: false},
          credits: {enabled: false},
          xAxis: {
             title: {text: 'Code Coverage (in percent)'},
             labels: {enabled: true},
          },
          yAxis: {
            title: 'Cyclomatic Complexity',
            labels: {enabled: true},
          },
          tooltip: {
              formatter: function() {
                  return this.point.config[2];
              }
          },
          series: [{
            data: [[100,0,"<a href=\"helpers_LoggerFormattingInfo.php.html#29\">LoggerFormattingInfo<\/a>"],[70.3125,38,"<a href=\"helpers_LoggerOptionConverter.php.html#29\">LoggerOptionConverter<\/a>"],[85.365853658537,24,"<a href=\"helpers_LoggerPatternParser.php.html#34\">LoggerPatternParser<\/a>"],[68.571428571429,13,"<a href=\"helpers_LoggerUtils.php.html#28\">LoggerUtils<\/a>"]],
            marker: {
                symbol: 'diamond'
            }
          }],
      });
  });
  </script>
 </body>
</html>
