93 lines
2.7 KiB
PHP
93 lines
2.7 KiB
PHP
<?php
|
|
/*
|
|
* $Id: CoverageXmlParser.php 14663 2005-03-23 19:27:27Z npac $
|
|
*
|
|
* Copyright(c) 2004-2006, SpikeSource Inc. All Rights Reserved.
|
|
* Licensed under the Open Software License version 2.1
|
|
* (See http://www.spikesource.com/license.html)
|
|
*/
|
|
?>
|
|
<?php
|
|
|
|
require_once dirname(__FILE__) . "/BasicXmlParser.php";
|
|
|
|
/**
|
|
* Special parser for SpikePHPCoverage data parsing
|
|
* Expect input in following format:
|
|
* <spike-phpcoverage>
|
|
* <file path="/complete/file/path">
|
|
* <line line-number="10" frequency="1"/>
|
|
* <line line-number="12" frequency="2"/>
|
|
* </file>
|
|
* <file path="/another/file/path">
|
|
* ...
|
|
* </file>
|
|
* </spike-phpcoverage>
|
|
*
|
|
* @author Nimish Pachapurkar <npac@spikesource.com>
|
|
* @version $Revision: $
|
|
* @package SpikePHPCoverage_Parser
|
|
*/
|
|
class CoverageXmlParser extends BasicXmlParser {
|
|
/*{{{ Members */
|
|
|
|
protected $_data = array();
|
|
protected $_lastFilePath;
|
|
|
|
/*}}}*/
|
|
/*{{{ public function startHandler() */
|
|
|
|
public function startHandler($xp, $name, $attrs) {
|
|
switch($name) {
|
|
case "FILE":
|
|
$fileAttributes = $this->handleAttrTag($name, $attrs);
|
|
$this->_lastFilePath = $fileAttributes["PATH"];
|
|
if( ! isset($this->_data[$this->_lastFilePath])) {
|
|
$this->_data[$this->_lastFilePath] = array();
|
|
}
|
|
break;
|
|
|
|
case "LINE":
|
|
$lineAttributes = $this->handleAttrTag($name, $attrs);
|
|
$lineNumber = (int)$lineAttributes["LINE-NUMBER"];
|
|
if( ! isset($this->_data[$this->_lastFilePath][$lineNumber])) {
|
|
$this->_data[$this->_lastFilePath][$lineNumber] = (int)$lineAttributes["FREQUENCY"];
|
|
}
|
|
else {
|
|
$this->_data[$this->_lastFilePath][$lineNumber] += (int)$lineAttributes["FREQUENCY"];
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
/*}}}*/
|
|
/*{{{ public function getCoverageData() */
|
|
|
|
/**
|
|
* Returns coverage data array from the XML
|
|
* Format:
|
|
* Array
|
|
* (
|
|
* [/php/src/remote/RemoteCoverageRecorder.php] => Array
|
|
* (
|
|
* [220] => 1
|
|
* [221] => 1
|
|
* )
|
|
*
|
|
* [/opt/oss/share/apache2/htdocs/web/sample.php] => Array
|
|
* (
|
|
* [16] => 1
|
|
* [18] => 1
|
|
* )
|
|
* )
|
|
*
|
|
* @access public
|
|
*/
|
|
public function getCoverageData() {
|
|
return $this->_data;
|
|
}
|
|
|
|
/*}}}*/
|
|
}
|
|
?>
|