protected function parseCoverage(array $coverage) { $this->coveredLines = 0; $this->uncoveredLines = 0; ksort($coverage); foreach ($coverage as $file => $lines) { $this->coveredCode[$file] = array(); $this->uncoveredCode[$file] = array(); foreach ($lines as $line => $flag) { if ($flag == self::COVERED) { $this->coveredCode[$file][] = $line; $this->coveredLines++; } else { $this->uncoveredCode[$file][] = $line; $this->uncoveredLines++; } } } $lexer = new LimeLexerCodeLines(); foreach ($this->files as $file) { if (!array_key_exists($file, $this->coveredCode)) { $this->coveredCode[$file] = array(); $this->uncoveredCode[$file] = $lexer->parse($file); $this->uncoveredLines += count($this->uncoveredCode[$file]); } } }
* with this source code in the file LICENSE. */ require_once dirname(__FILE__) . '/../../lib/LimeAutoloader.php'; LimeAutoloader::register(); $baseDir = realpath(dirname(__FILE__) . '/..'); $printer = new LimePrinter(new LimeColorizer()); $printer->printLine('Source Lines Of Code', LimePrinter::HAPPY); $fileLines = 0; $testLines = 0; $lexer = new LimeLexerCodeLines(); $suite = new LimeHarness(); $suite->registerGlob($baseDir . '/../lib/*.php'); $suite->registerGlob($baseDir . '/../lib/*/*.php'); $suite->registerGlob($baseDir . '/../lib/*/*/*.php'); $suite->registerGlob($baseDir . '/../lib/*/*/*/*.php'); $suite->registerGlob($baseDir . '/../lib/*/*/*/*/*.php'); foreach ($suite->getFiles() as $file) { $fileLines += count($lexer->parse($file)); } $printer->printLine(sprintf('Classes: %d', $fileLines)); $suite = new LimeHarness(); $suite->registerGlob($baseDir . '/unit/*.php'); $suite->registerGlob($baseDir . '/unit/*/*.php'); $suite->registerGlob($baseDir . '/unit/*/*/*.php'); $suite->registerGlob($baseDir . '/unit/*/*/*/*.php'); foreach ($suite->getFiles() as $file) { $testLines += count($lexer->parse($file)); } $printer->printLine(sprintf('Tests: %d', $testLines)); $printer->printLine(sprintf('TOTAL: %d', $fileLines + $testLines)); $printer->printLine(sprintf('Tests/Classes: %d%%', 100 * $testLines / $fileLines));