Skip to content

Commit 7f1d780

Browse files
author
Jonathan Block
committed
Add option to emit a very short json summary of the coverage stats.
1 parent 9ef4b8c commit 7f1d780

File tree

1 file changed

+74
-0
lines changed

1 file changed

+74
-0
lines changed
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
<?php
2+
/*
3+
* This file is part of the PHP_CodeCoverage package.
4+
*
5+
* (c) Jonathan Block <[email protected]>
6+
*
7+
* For the full copyright and license information, please view the LICENSE
8+
* file that was distributed with this source code.
9+
*/
10+
11+
/**
12+
* Uses json_encode to write a small json overview containing coverage stats.
13+
*
14+
* @category PHP
15+
* @package CodeCoverage
16+
* @author Jonathan Block <[email protected]>
17+
* @copyright Jonathan Block <[email protected]>
18+
* @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License
19+
* @link http://github.com/sebastianbergmann/php-code-coverage
20+
*/
21+
class PHP_CodeCoverage_Report_JsonOverview
22+
{
23+
/**
24+
* @param PHP_CodeCoverage $coverage
25+
* @param string $target
26+
* @return string
27+
*/
28+
public function process(PHP_CodeCoverage $coverage, $target = null)
29+
{
30+
$num_executable_lines = $coverage->getReport()->getNumExecutableLines();
31+
$num_executed_lines = $coverage->getReport()->getNumExecutedLines();
32+
$num_classes = $coverage->getReport()->getNumClasses();
33+
$num_tested_classes = $coverage->getReport()->getNumTestedClasses();
34+
$num_traits = $coverage->getReport()->getNumTraits();
35+
$num_tested_traits = $coverage->getReport()->getNumTestedTraits();
36+
$num_methods = $coverage->getReport()->getNumMethods();
37+
$num_tested_methods = $coverage->getReport()->getNumTestedMethods();
38+
$num_functions = $coverage->getReport()->getNumFunctions();
39+
$num_tested_functions = $coverage->getReport()->getNumTestedFunctions();
40+
$num_classes_and_traits = $coverage->getReport()->getNumClassesAndTraits();
41+
$num_tested_classes_and_traits = $coverage->getReport()->getNumTestedClassesAndTraits();
42+
$num_lines_of_code = $coverage->getReport()->getLinesOfCode();
43+
44+
$result = array(
45+
'num_executable_lines' => $num_executable_lines,
46+
'num_executed_lines' => $num_executed_lines,
47+
'percentage_tested_lines' => number_format($num_executed_lines/$num_executable_lines*100, 2),
48+
'num_classes' => $num_classes,
49+
'num_tested_classes' => $num_tested_classes,
50+
'percentage_tested_classes' => number_format($num_tested_classes/$num_classes*100, 2),
51+
'num_traits' => $num_traits,
52+
'num_tested_traits' => $num_tested_traits,
53+
'percentage_tested_traits' => number_format($num_tested_traits/$num_traits*100, 2),
54+
'num_methods' => $num_methods,
55+
'num_tested_methods' => $coverage->getReport()->getNumTestedMethods(),
56+
'percentage_tested_methods' => number_format($num_tested_methods / $num_methods * 100, 2),
57+
'num_functions' => $num_functions,
58+
'num_tested_functions' => $num_tested_functions,
59+
'percentage_tested_functions' => number_format($num_tested_functions/$num_functions*100, 2),
60+
'num_classes_and_traits' => $num_classes_and_traits,
61+
'num_tested_classes_and_traits' => $num_tested_classes_and_traits,
62+
'percentage_tested_classes_and_traits' => number_format($num_tested_classes_and_traits/$num_classes_and_traits*100, 2),
63+
'num_lines_of_code' => $num_lines_of_code,
64+
);
65+
66+
$output = json_encode($result, JSON_PRETTY_PRINT);
67+
68+
if ($target !== null) {
69+
return file_put_contents($target, $output);
70+
} else {
71+
return $output;
72+
}
73+
}
74+
}

0 commit comments

Comments
 (0)