private static function getLinesToBeCoveredOrUsed($className, $methodName, $mode)
{
$annotations = self::parseTestMethodAnnotations($className, $methodName);
$classShortcut = null;
if (!empty($annotations['class'][$mode . 'DefaultClass'])) {
if (count($annotations['class'][$mode . 'DefaultClass']) > 1) {
throw new PHPUnit_Framework_CodeCoverageException(sprintf('More than one @%sClass annotation in class or interface "%s".', $mode, $className));
}
$classShortcut = $annotations['class'][$mode . 'DefaultClass'][0];
}
$list = [];
if (isset($annotations['class'][$mode])) {
$list = $annotations['class'][$mode];
}
if (isset($annotations['method'][$mode])) {
$list = array_merge($list, $annotations['method'][$mode]);
}
$codeList = [];
foreach (array_unique($list) as $element) {
if ($classShortcut && strncmp($element, '::', 2) === 0) {
$element = $classShortcut . $element;
}
$element = preg_replace('/[\\s()]+$/', '', $element);
$element = explode(' ', $element);
$element = $element[0];
$codeList = array_merge($codeList, self::resolveElementToReflectionObjects($element));
}
return self::resolveReflectionObjectsToLines($codeList);
}