Blame | Letzte Änderung | Log anzeigen | RSS feed
<?php declare(strict_types=1);/** This file is part of phpunit/php-code-coverage.** (c) Sebastian Bergmann <sebastian@phpunit.de>** For the full copyright and license information, please view the LICENSE* file that was distributed with this source code.*/namespace SebastianBergmann\CodeCoverage\Driver;use function sprintf;use SebastianBergmann\CodeCoverage\BranchAndPathCoverageNotSupportedException;use SebastianBergmann\CodeCoverage\DeadCodeDetectionNotSupportedException;use SebastianBergmann\CodeCoverage\Filter;use SebastianBergmann\CodeCoverage\NoCodeCoverageDriverAvailableException;use SebastianBergmann\CodeCoverage\NoCodeCoverageDriverWithPathCoverageSupportAvailableException;use SebastianBergmann\CodeCoverage\RawCodeCoverageData;/*** @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage*/abstract class Driver{/*** @var int** @see http://xdebug.org/docs/code_coverage*/public const LINE_NOT_EXECUTABLE = -2;/*** @var int** @see http://xdebug.org/docs/code_coverage*/public const LINE_NOT_EXECUTED = -1;/*** @var int** @see http://xdebug.org/docs/code_coverage*/public const LINE_EXECUTED = 1;/*** @var int** @see http://xdebug.org/docs/code_coverage*/public const BRANCH_NOT_HIT = 0;/*** @var int** @see http://xdebug.org/docs/code_coverage*/public const BRANCH_HIT = 1;/*** @var bool*/private $collectBranchAndPathCoverage = false;/*** @var bool*/private $detectDeadCode = false;/*** @throws NoCodeCoverageDriverAvailableException* @throws PcovNotAvailableException* @throws PhpdbgNotAvailableException* @throws Xdebug2NotEnabledException* @throws Xdebug3NotEnabledException* @throws XdebugNotAvailableException** @deprecated Use DriverSelector::forLineCoverage() instead*/public static function forLineCoverage(Filter $filter): self{return (new Selector)->forLineCoverage($filter);}/*** @throws NoCodeCoverageDriverWithPathCoverageSupportAvailableException* @throws Xdebug2NotEnabledException* @throws Xdebug3NotEnabledException* @throws XdebugNotAvailableException** @deprecated Use DriverSelector::forLineAndPathCoverage() instead*/public static function forLineAndPathCoverage(Filter $filter): self{return (new Selector)->forLineAndPathCoverage($filter);}public function canCollectBranchAndPathCoverage(): bool{return false;}public function collectsBranchAndPathCoverage(): bool{return $this->collectBranchAndPathCoverage;}/*** @throws BranchAndPathCoverageNotSupportedException*/public function enableBranchAndPathCoverage(): void{if (!$this->canCollectBranchAndPathCoverage()) {throw new BranchAndPathCoverageNotSupportedException(sprintf('%s does not support branch and path coverage',$this->nameAndVersion()));}$this->collectBranchAndPathCoverage = true;}public function disableBranchAndPathCoverage(): void{$this->collectBranchAndPathCoverage = false;}public function canDetectDeadCode(): bool{return false;}public function detectsDeadCode(): bool{return $this->detectDeadCode;}/*** @throws DeadCodeDetectionNotSupportedException*/public function enableDeadCodeDetection(): void{if (!$this->canDetectDeadCode()) {throw new DeadCodeDetectionNotSupportedException(sprintf('%s does not support dead code detection',$this->nameAndVersion()));}$this->detectDeadCode = true;}public function disableDeadCodeDetection(): void{$this->detectDeadCode = false;}abstract public function nameAndVersion(): string;abstract public function start(): void;abstract public function stop(): RawCodeCoverageData;}