public static function getFilteredStacktrace(Exception $e, $filterTests = TRUE, $asString = TRUE)
{
if ($asString === TRUE) {
$filteredStacktrace = '';
} else {
$filteredStacktrace = array();
}
$groups = array('DEFAULT');
if (!defined('PHPUNIT_TESTSUITE')) {
$groups[] = 'PHPUNIT';
}
if ($filterTests) {
$groups[] = 'TESTS';
}
if ($e instanceof PHPUnit_Framework_SyntheticError) {
$eTrace = $e->getSyntheticTrace();
} else {
$eTrace = $e->getTrace();
}
if (!self::frameExists($eTrace, $e->getFile(), $e->getLine())) {
array_unshift($eTrace, array('file' => $e->getFile(), 'line' => $e->getLine()));
}
foreach ($eTrace as $frame) {
if (isset($frame['file']) && is_file($frame['file']) && !PHP_CodeCoverage::getInstance()->filter()->isFiltered($frame['file'], $groups, TRUE)) {
if ($asString === TRUE) {
$filteredStacktrace .= sprintf("%s:%s\n", $frame['file'], isset($frame['line']) ? $frame['line'] : '?');
} else {
$filteredStacktrace[] = $frame;
}
}
}
return $filteredStacktrace;
}