Passed
Push — remove_compat_layer ( c48121...1de0f9 )
by Doug
10:31 queued 01:39
created

ReportService::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 1
c 2
b 0
f 0
dl 0
loc 3
ccs 2
cts 2
cp 1
rs 10
cc 1
nc 1
nop 1
crap 1
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 24
    public function __construct(array $reportConfig)
39
    {
40 24
        $this->config = $reportConfig;
41 24
    }
42
43
    /**
44
     * Generate report.
45
     */
46 14
    public function generateReport(CodeCoverage $coverage): void
47
    {
48 14
        foreach ($this->config as $format => $config) {
49 7
            switch ($format) {
50 14
                case 'clover':
51 4
                    $report = new Clover();
52 4
                    $report->process($coverage, $config['target'], $config['name']);
53 4
                    break;
54 12
                case 'crap4j':
55 4
                    $report = new Crap4j();
56 4
                    $report->process($coverage, $config['target'], $config['name']);
57 4
                    break;
58 8
                case 'html':
59 2
                    $report = new HtmlFacade(
60 2
                        $config['lowUpperBound'],
61 2
                        $config['highLowerBound'],
62 2
                        \sprintf(' and <a href="https://github.com/dvdoug/behat-code-coverage">behat-code-coverage %s</a>',
63 2
                            InstalledVersions::getPrettyVersion('dvdoug/behat-code-coverage')
64
                        ));
65 2
                    $report->process($coverage, $config['target']);
66 2
                    break;
67 6
                case 'php':
68 2
                    $report = new PHP();
69 2
                    $report->process($coverage, $config['target']);
70 2
                    break;
71 4
                case 'text':
72 2
                    $report = new Text(
73 2
                        $config['lowUpperBound'],
74 2
                        $config['highLowerBound'],
75 2
                        $config['showUncoveredFiles'],
76 2
                        $config['showOnlySummary']
77
                    );
78 2
                    echo $report->process($coverage, $config['showColors']);
79 2
                    break;
80 2
                case 'xml':
81 2
                    $report = new XmlFacade('');
82 2
                    $report->process($coverage, $config['target']);
83 2
                    break;
84
            }
85
        }
86 14
    }
87
}
88