lithium\test\filter\Coverage::analyze PHP Метод

analyze() публичный статический Метод

Analyzes code coverage results collected from XDebug, and performs coverage density analysis.
public static analyze ( object $report, array $classes = [] ) : array
$report object The report instance running this filter and aggregating results
$classes array A list of classes to analyze coverage on. By default, gets all defined subclasses of lithium\test\Unit which are currently in memory.
Результат array Returns an array indexed by file and line, showing the number of instances each line was called.
    public static function analyze($report, array $classes = array())
    {
        $data = static::collect($report->results['filters'][__CLASS__]);
        $classes = $classes ?: array_filter(get_declared_classes(), function ($class) use($data) {
            $unit = 'lithium\\test\\Unit';
            return !is_subclass_of($class, $unit) || array_key_exists($class, $data);
        });
        $classes = array_values(array_intersect((array) $classes, array_keys($data)));
        $densities = $result = array();
        foreach ($classes as $class) {
            $classMap = array($class => Libraries::path($class));
            $densities += static::_density($data[$class], $classMap);
        }
        $executableLines = array();
        if ($classes) {
            $executableLines = array_combine($classes, array_map(function ($cls) {
                return Inspector::executable($cls, array('public' => false));
            }, $classes));
        }
        foreach ($densities as $class => $density) {
            $executable = $executableLines[$class];
            $covered = array_intersect(array_keys($density), $executable);
            $uncovered = array_diff($executable, $covered);
            if (count($executable)) {
                $percentage = round(count($covered) / (count($executable) ?: 1), 4) * 100;
            } else {
                $percentage = 100;
            }
            $result[$class] = compact('class', 'executable', 'covered', 'uncovered', 'percentage');
        }
        $result = static::collectLines($result);
        return $result;
    }