diff --git a/tests/cc.php b/tests/cc.php index 49ce903ef..1b27d46fc 100644 --- a/tests/cc.php +++ b/tests/cc.php @@ -1,4 +1,24 @@ . + */ + require_once dirname(__FILE__) . '/../lib/Doctrine.php'; spl_autoload_register(array('Doctrine', 'autoload')); @@ -39,11 +59,11 @@ dt { clear: both; } Coverage for ' . $_GET["file"] . ''; echo 'Back to coverage report'; $reporter->showFile($_GET["file"]); -}else{ +} else { ?>

Coverage report for Doctrine

Default mode shows results sorted by percentage. This can be changed with GET variables:

@@ -58,11 +78,17 @@ if(isset($_GET["file"])){ + * @license http://www.opensource.org/licenses/lgpl-license.php LGPL + * @category Object Relational Mapping + * @link www.phpdoctrine.com + * @since 1.0 + * @version $Revision: 1976 $ */ class Doctrine_Coverage_Report { @@ -80,6 +106,12 @@ class Doctrine_Coverage_Report private $totalmaybe = 0; private $totalnotcovered = 0; + /* + * Create a new coverage report + * + * @param string $file The name of the file where coverage data is stored + * + */ public function __construct($file) { $result = unserialize(file_get_contents("coverage.txt")); @@ -89,26 +121,31 @@ class Doctrine_Coverage_Report $this->sortBy ="percentage"; // default sort } + /* + * Show graphical coverage report for a file + * + * @param string $fileName The name of the file to show + */ public function showFile($fileName) { $key = $this->path . $fileName; $html = '
'; - if( !isset( $this->coverage[$key])) + if (!isset( $this->coverage[$key])) { echo '

This file has not been tested!

'; } $coveredLines = $this->coverage[$key]; $fileArray = file(Doctrine::getPath() . "/".$fileName); $html .= '
' . "\n"; - foreach( $fileArray as $num => $line){ + foreach ($fileArray as $num => $line){ $linenum = $num+1; $html .= '
' . $linenum . '
' . "\n"; $class ="normal"; - if( isset($coveredLines[$linenum]) && $coveredLines[$linenum] == 1){ + if (isset($coveredLines[$linenum]) && $coveredLines[$linenum] == 1){ $class = "covered"; - }else if( isset($coveredLines[$linenum]) && $coveredLines[$linenum] == -1){ + } else if (isset($coveredLines[$linenum]) && $coveredLines[$linenum] == -1) { $class ="red"; - }else if( isset($coveredLines[$linenum]) && $coveredLines[$linenum] == -2){ + } else if (isset($coveredLines[$linenum]) && $coveredLines[$linenum] == -2) { $class ="orange"; } $html .= '
' . htmlspecialchars($line) . '
' . "\n"; @@ -117,62 +154,76 @@ class Doctrine_Coverage_Report echo $html; } + /* + * Generate coverage data for non tested files + * + * Scans all files and records data for those that are not in the coverage + * record. + * + * @return array An array with coverage data + */ public function generateNotCoveredFiles() { $it = new RecursiveDirectoryIterator(Doctrine::getPath()); $notCoveredArray = array(); - foreach( new RecursiveIteratorIterator($it) as $file){ - if( strpos($file->getPathname(), ".svn")){ + foreach (new RecursiveIteratorIterator($it) as $file){ + if (strpos($file->getPathname(), ".svn")){ continue; } $path = Doctrine::getPath() . DIRECTORY_SEPARATOR; $coveredPath = str_replace($path, $this->path, $file->getPathname()); - if( isset($this->coverage[$coveredPath])){ + if (isset($this->coverage[$coveredPath])){ continue; - } + } - $class = str_replace($path, "", $file->getPathname()); - $class = str_replace(DIRECTORY_SEPARATOR, "_", $class); - $class = substr($class, 0,-4); + $class = str_replace($path, "", $file->getPathname()); + $class = str_replace(DIRECTORY_SEPARATOR, "_", $class); + $class = substr($class, 0,-4); if (strpos($class, '_Interface')) { continue; } - if(!class_exists($class)){ + if ( ! class_exists($class)){ continue; } try{ $refClass = new ReflectionClass($class); - }catch(Exception $e){ + } catch (Exception $e){ echo $e->getMessage(); continue; } $lines = 0; $methodLines = 0; - foreach($refClass->getMethods() as $refMethod){ + foreach ($refClass->getMethods() as $refMethod){ - if($refMethod->getDeclaringClass() != $refClass){ + if ($refMethod->getDeclaringClass() != $refClass){ continue; } $methodLines = $refMethod->getEndLine() - $refMethod->getStartLine(); $lines += $methodLines; } - if($methodLines == 0){ + if ($methodLines == 0){ $notCoveredArray[$class] = array("covered" => 0, "maybe" => 0, "notcovered"=>$lines, "total" => $lines, "percentage" => 100); - }else{ + } else { $notCoveredArray[$class] = array("covered" => 0, "maybe" => 0, "notcovered"=>$lines, "total" => $lines, "percentage" => 0); - } + } $this->totallines += $lines; $this->totalnotcovered += $lines; } return $notCoveredArray; } + /* + * Show a summary of all files in Doctrine and their coverage data + * + * @uses generateNonCoveredFiles + * @uses generateCoverage + */ public function showSummary() { - if(isset($_GET["order"])){ + if (isset($_GET["order"])){ $this->sortBy = $_GET["order"]; } $coveredArray = $this->generateCoverage(); @@ -183,7 +234,7 @@ class Doctrine_Coverage_Report uasort($coveredArray, array($this,"sortArray")); //and flip if it perhaps? - if(isset($_GET["desc"]) && $_GET["desc"] == "true"){ + if (isset($_GET["desc"]) && $_GET["desc"] == "true"){ $coveredArray = array_reverse($coveredArray, true); } @@ -195,12 +246,17 @@ class Doctrine_Coverage_Report } } + /* + * Generate coverage data for tested files + * + *@return array An array of coverage data + */ public function generateCoverage() { $coveredArray = array(); foreach ($this->coverage as $file => $lines) { $pos = strpos($file, $this->path); - if($pos === false && $pos !== 0){ + if ($pos === false && $pos !== 0){ continue; } @@ -210,7 +266,7 @@ class Doctrine_Coverage_Report continue; } - if(!class_exists($class)){ + if ( ! class_exists($class)){ continue; } @@ -218,7 +274,7 @@ class Doctrine_Coverage_Report $covered = 0; $maybe = 0; $notcovered = 0; - foreach($lines as $result){ + foreach ($lines as $result){ switch($result){ case self::COVERED: $covered++; @@ -246,12 +302,16 @@ class Doctrine_Coverage_Report return $coveredArray; } + /* + * Uasort function to sort the array by key + * + */ public function sortArray($a, $b) { if ($a[$this->sortBy] == $b[$this->sortBy]) { return 0; } - return ($a[$this->sortBy] < $b[$this->sortBy]) ? -1 : 1; + return ( $a[$this->sortBy] < $b[$this->sortBy]) ? -1 : 1; } }