Xdebug.php (3519B)
1 <?php 2 /** 3 * PHP_CodeCoverage 4 * 5 * Copyright (c) 2009-2014, Sebastian Bergmann <sebastian@phpunit.de>. 6 * All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without 9 * modification, are permitted provided that the following conditions 10 * are met: 11 * 12 * * Redistributions of source code must retain the above copyright 13 * notice, this list of conditions and the following disclaimer. 14 * 15 * * Redistributions in binary form must reproduce the above copyright 16 * notice, this list of conditions and the following disclaimer in 17 * the documentation and/or other materials provided with the 18 * distribution. 19 * 20 * * Neither the name of Sebastian Bergmann nor the names of his 21 * contributors may be used to endorse or promote products derived 22 * from this software without specific prior written permission. 23 * 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 25 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 26 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 27 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 28 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 29 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 30 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 31 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 32 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 33 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 34 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 35 * POSSIBILITY OF SUCH DAMAGE. 36 * 37 * @category PHP 38 * @package CodeCoverage 39 * @author Sebastian Bergmann <sebastian@phpunit.de> 40 * @copyright 2009-2014 Sebastian Bergmann <sebastian@phpunit.de> 41 * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License 42 * @link http://github.com/sebastianbergmann/php-code-coverage 43 * @since File available since Release 1.0.0 44 */ 45 46 /** 47 * Driver for Xdebug's code coverage functionality. 48 * 49 * @category PHP 50 * @package CodeCoverage 51 * @author Sebastian Bergmann <sebastian@phpunit.de> 52 * @copyright 2009-2014 Sebastian Bergmann <sebastian@phpunit.de> 53 * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License 54 * @link http://github.com/sebastianbergmann/php-code-coverage 55 * @since Class available since Release 1.0.0 56 * @codeCoverageIgnore 57 */ 58 class PHP_CodeCoverage_Driver_Xdebug implements PHP_CodeCoverage_Driver 59 { 60 /** 61 * Constructor. 62 */ 63 public function __construct() 64 { 65 if (!extension_loaded('xdebug')) { 66 throw new PHP_CodeCoverage_Exception('Xdebug is not loaded.'); 67 } 68 69 if (version_compare(phpversion('xdebug'), '2.2.0-dev', '>=') && 70 !ini_get('xdebug.coverage_enable')) { 71 throw new PHP_CodeCoverage_Exception( 72 'You need to set xdebug.coverage_enable=On in your php.ini.' 73 ); 74 } 75 } 76 77 /** 78 * Start collection of code coverage information. 79 */ 80 public function start() 81 { 82 xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE); 83 } 84 85 /** 86 * Stop collection of code coverage information. 87 * 88 * @return array 89 */ 90 public function stop() 91 { 92 $codeCoverage = xdebug_get_code_coverage(); 93 xdebug_stop_code_coverage(); 94 95 return $codeCoverage; 96 } 97 }