Skip to content

Commit 1d593c3

Browse files
Initial support of CSV coverage format.
1 parent b23c4b2 commit 1d593c3

File tree

2 files changed

+87
-0
lines changed

2 files changed

+87
-0
lines changed

PHP/CodeCoverage/Autoload.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ function ($class)
6060
'php_codecoverage_driver_xdebug' => '/CodeCoverage/Driver/Xdebug.php',
6161
'php_codecoverage_exception' => '/CodeCoverage/Exception.php',
6262
'php_codecoverage_filter' => '/CodeCoverage/Filter.php',
63+
'php_codecoverage_report_csv' => '/CodeCoverage/Report/CSV.php',
6364
'php_codecoverage_report_clover' => '/CodeCoverage/Report/Clover.php',
6465
'php_codecoverage_report_factory' => '/CodeCoverage/Report/Factory.php',
6566
'php_codecoverage_report_html' => '/CodeCoverage/Report/HTML.php',

PHP/CodeCoverage/Report/CSV.php

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
<?php
2+
/**
3+
* PHP_CodeCoverage
4+
*
5+
* Copyright (c) 2009-2012, Sebastian Bergmann <[email protected]>.
6+
* All rights reserved.
7+
*
8+
* Redistribution and use in source and binary forms, with or without
9+
* modification, are permitted provided that the following conditions
10+
* are met:
11+
*
12+
* * Redistributions of source code must retain the above copyright
13+
* notice, this list of conditions and the following disclaimer.
14+
*
15+
* * Redistributions in binary form must reproduce the above copyright
16+
* notice, this list of conditions and the following disclaimer in
17+
* the documentation and/or other materials provided with the
18+
* distribution.
19+
*
20+
* * Neither the name of Sebastian Bergmann nor the names of his
21+
* contributors may be used to endorse or promote products derived
22+
* from this software without specific prior written permission.
23+
*
24+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
25+
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
26+
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
27+
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
28+
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
29+
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
30+
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
31+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
32+
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
33+
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
34+
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
35+
* POSSIBILITY OF SUCH DAMAGE.
36+
*
37+
* @category PHP
38+
* @package CodeCoverage
39+
* @author Sebastian Bergmann <[email protected]>
40+
* @copyright 2009-2012 Sebastian Bergmann <[email protected]>
41+
* @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License
42+
* @link http://github.com/sebastianbergmann/php-code-coverage
43+
* @since File available since Release 1.1.0
44+
*/
45+
46+
/**
47+
* Uses serialize() to write a PHP_CodeCoverage object to a file.
48+
*
49+
* @category PHP
50+
* @package CodeCoverage
51+
* @author Sebastian Bergmann <[email protected]>
52+
* @copyright 2009-2012 Sebastian Bergmann <[email protected]>
53+
* @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License
54+
* @link http://github.com/sebastianbergmann/php-code-coverage
55+
* @since Class available since Release 1.1.0
56+
*/
57+
class PHP_CodeCoverage_Report_CSV
58+
{
59+
/**
60+
* @param PHP_CodeCoverage $coverage
61+
* @param string $target
62+
* @return string
63+
*/
64+
public function process(PHP_CodeCoverage $coverage, $target = NULL)
65+
{
66+
$data = $coverage->getData();
67+
$fp = fopen($target, 'w');
68+
foreach ($data as $filename => $coverage) {
69+
$covered = 0;
70+
$uncovered = 0;
71+
foreach ($coverage as $line => $tests) {
72+
if(is_null($tests) ){
73+
continue;
74+
}
75+
if(count($tests)){
76+
$covered++;
77+
} else {
78+
$uncovered++;
79+
}
80+
}
81+
$array = array($filename, $covered, $uncovered);
82+
fputcsv($fp, $array);
83+
}
84+
fclose($fp);
85+
}
86+
}

0 commit comments

Comments
 (0)