Passed
Push — master ( 3c8467...b8b082 )
by Doug
03:13
created

ReportService::generateReport()   B

Complexity

Conditions 8
Paths 8

Size

Total Lines 38
Code Lines 34

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 35
CRAP Score 8

Importance

Changes 3
Bugs 0 Features 1
Metric Value
eloc 34
c 3
b 0
f 1
dl 0
loc 38
ccs 35
cts 35
cp 1
rs 8.1315
cc 8
nc 8
nop 1
crap 8
1
<?php
2
3
declare(strict_types=1);
4
/**
5
 * Code Coverage Report Service.
6
 *
7
 * @copyright 2013 Anthon Pang
8
 *
9
 * @license BSD-2-Clause
10
 */
11
12
namespace DVDoug\Behat\CodeCoverage\Service;
13
14
use Composer\InstalledVersions;
15
use SebastianBergmann\CodeCoverage\CodeCoverage;
16
use SebastianBergmann\CodeCoverage\Report\Clover;
17
use SebastianBergmann\CodeCoverage\Report\Crap4j;
18
use SebastianBergmann\CodeCoverage\Report\Html\Facade as HtmlFacade;
19
use SebastianBergmann\CodeCoverage\Report\PHP;
20
use SebastianBergmann\CodeCoverage\Report\Text;
21
use SebastianBergmann\CodeCoverage\Report\Xml\Facade as XmlFacade;
22
23
/**
24
 * Code coverage report service.
25
 *
26
 * @author Anthon Pang <[email protected]>
27
 */
28
class ReportService
29
{
30
    /**
31
     * @var array
32
     */
33
    private $config;
34
35
    /**
36
     * Constructor.
37
     */
38 84
    public function __construct(array $reportConfig)
39
    {
40 84
        $this->config = $reportConfig;
41 84
    }
42
43
    /**
44
     * Generate report.
45
     */
46 49
    public function generateReport(CodeCoverage $coverage): void
47
    {
48 49
        foreach ($this->config as $format => $config) {
49 28
            switch ($format) {
50 49
                case 'clover':
51 14
                    $report = new Clover();
52 14
                    $report->process($coverage, $config['target'], $config['name']);
53 14
                    break;
54 42
                case 'crap4j':
55 14
                    $report = new Crap4j();
56 14
                    $report->process($coverage, $config['target'], $config['name']);
57 14
                    break;
58 28
                case 'html':
59 7
                    $report = new HtmlFacade(
60 7
                        $config['lowUpperBound'],
61 7
                        $config['highLowerBound'],
62 7
                        \sprintf(' and <a href="https://github.com/dvdoug/behat-code-coverage">behat-code-coverage %s</a>',
63 7
                            InstalledVersions::getPrettyVersion('dvdoug/behat-code-coverage')
64
                        ));
65 7
                    $report->process($coverage, $config['target']);
66 7
                    break;
67 21
                case 'php':
68 7
                    $report = new PHP();
69 7
                    $report->process($coverage, $config['target']);
70 7
                    break;
71 14
                case 'text':
72 7
                    $report = new Text(
73 7
                        $config['lowUpperBound'],
74 7
                        $config['highLowerBound'],
75 7
                        $config['showUncoveredFiles'],
76 7
                        $config['showOnlySummary']
77
                    );
78 7
                    echo $report->process($coverage, $config['showColors']);
79 7
                    break;
80 7
                case 'xml':
81 7
                    $report = new XmlFacade('');
82 7
                    $report->process($coverage, $config['target']);
83 7
                    break;
84
            }
85
        }
86 49
    }
87
}
88