Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F1432007
Xdebug2Driver.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
Xdebug2Driver.php
View Options
<?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
const
XDEBUG_CC_BRANCH_CHECK
;
use
const
XDEBUG_CC_DEAD_CODE
;
use
const
XDEBUG_CC_UNUSED
;
use
const
XDEBUG_FILTER_CODE_COVERAGE
;
use
const
XDEBUG_PATH_INCLUDE
;
use
const
XDEBUG_PATH_WHITELIST
;
use
function
defined
;
use
function
extension_loaded
;
use
function
ini_get
;
use
function
phpversion
;
use
function
sprintf
;
use
function
version_compare
;
use
function
xdebug_get_code_coverage
;
use
function
xdebug_set_filter
;
use
function
xdebug_start_code_coverage
;
use
function
xdebug_stop_code_coverage
;
use
SebastianBergmann\CodeCoverage\Filter
;
use
SebastianBergmann\CodeCoverage\RawCodeCoverageData
;
/**
* @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
*/
final
class
Xdebug2Driver
extends
Driver
{
/**
* @var bool
*/
private
$pathCoverageIsMixedCoverage
;
/**
* @throws WrongXdebugVersionException
* @throws Xdebug2NotEnabledException
* @throws XdebugNotAvailableException
*/
public
function
__construct
(
Filter
$filter
)
{
if
(!
extension_loaded
(
'xdebug'
))
{
throw
new
XdebugNotAvailableException
;
}
if
(
version_compare
(
phpversion
(
'xdebug'
),
'3'
,
'>='
))
{
throw
new
WrongXdebugVersionException
(
sprintf
(
'This driver requires Xdebug 2 but version %s is loaded'
,
phpversion
(
'xdebug'
)
)
);
}
if
(!
ini_get
(
'xdebug.coverage_enable'
))
{
throw
new
Xdebug2NotEnabledException
;
}
if
(!
$filter
->
isEmpty
())
{
if
(
defined
(
'XDEBUG_PATH_WHITELIST'
))
{
$listType
=
XDEBUG_PATH_WHITELIST
;
}
else
{
$listType
=
XDEBUG_PATH_INCLUDE
;
}
xdebug_set_filter
(
XDEBUG_FILTER_CODE_COVERAGE
,
$listType
,
$filter
->
files
()
);
}
$this
->
pathCoverageIsMixedCoverage
=
version_compare
(
phpversion
(
'xdebug'
),
'2.9.6'
,
'<'
);
}
public
function
canCollectBranchAndPathCoverage
():
bool
{
return
true
;
}
public
function
canDetectDeadCode
():
bool
{
return
true
;
}
public
function
start
():
void
{
$flags
=
XDEBUG_CC_UNUSED
;
if
(
$this
->
detectsDeadCode
()
||
$this
->
collectsBranchAndPathCoverage
())
{
$flags
|=
XDEBUG_CC_DEAD_CODE
;
}
if
(
$this
->
collectsBranchAndPathCoverage
())
{
$flags
|=
XDEBUG_CC_BRANCH_CHECK
;
}
xdebug_start_code_coverage
(
$flags
);
}
public
function
stop
():
RawCodeCoverageData
{
$data
=
xdebug_get_code_coverage
();
xdebug_stop_code_coverage
();
if
(
$this
->
collectsBranchAndPathCoverage
())
{
if
(
$this
->
pathCoverageIsMixedCoverage
)
{
return
RawCodeCoverageData
::
fromXdebugWithMixedCoverage
(
$data
);
}
return
RawCodeCoverageData
::
fromXdebugWithPathCoverage
(
$data
);
}
return
RawCodeCoverageData
::
fromXdebugWithoutPathCoverage
(
$data
);
}
public
function
nameAndVersion
():
string
{
return
'Xdebug '
.
phpversion
(
'xdebug'
);
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Sat, May 16, 21:19 (1 d, 13 h)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
44/88/769a3fa912416aa20c22168f5972
Default Alt Text
Xdebug2Driver.php (3 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment