$data) { if (!preg_match('/.php$/', $filename)) { continue; } if (!preg_match('/\W(lib|plugins|tests)\W/', $filename)) { $content = file_get_contents($filename); $content_code .= PHP_EOL . $content; preg_match_all('/function\s+?([a-z_\-]+)\s*?\(/i', $content, $matches); if (isset($matches[1][0])) { foreach ($matches[1] as $match) { $functions[$match] = array( 'filename' => $filename, 'file' => basename($filename, '.php'), 'function' => $match, 'count_code' => 0, 'count_tests' => 0 ); } } } elseif (preg_match('/\Wtests\W/', $filename)) { $content_tests .= PHP_EOL . file_get_contents($filename); } } foreach ($functions as $function => $attributes) { preg_match_all('/[\s\W]' . $function . '\s*?\(/i', $content_code, $matches); $match_count = count($matches[0]); $functions[$function]['count_code'] = $match_count; preg_match_all('/[\s\W]' . $function . '\s*?\(/i', $content_tests, $matches); $match_count = count($matches[0]); $functions[$function]['count_tests'] = $match_count; if ($match_count > 0) { $test_coverage_count++; } } usort($functions, function ($a, $b) { return $b['count_code'] - $a['count_code']; }); // sort by count of code call descending ?>

% test coverage

(excluding plugins/ and lib/)

Function Code calls Test calls
.()