Passed
Push — remove_compat_layer ( 27dc5c...3c8467 )
by Doug
03:22
created

ReportService   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 56
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 5
Bugs 0 Features 1
Metric Value
wmc 9
eloc 37
c 5
b 0
f 1
dl 0
loc 56
ccs 38
cts 38
cp 1
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
B generateReport() 0 38 8
A __construct() 0 3 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 48
    public function __construct(array $reportConfig)
39
    {
40 48
        $this->config = $reportConfig;
41 48
    }
42
43
    /**
44
     * Generate report.
45
     */
46 28
    public function generateReport(CodeCoverage $coverage): void
47
    {
48 28
        foreach ($this->config as $format => $config) {
49 21
            switch ($format) {
50 28
                case 'clover':
51 8
                    $report = new Clover();
52 8
                    $report->process($coverage, $config['target'], $config['name']);
53 8
                    break;
54 24
                case 'crap4j':
55 8
                    $report = new Crap4j();
56 8
                    $report->process($coverage, $config['target'], $config['name']);
57 8
                    break;
58 16
                case 'html':
59 4
                    $report = new HtmlFacade(
60 4
                        $config['lowUpperBound'],
61 4
                        $config['highLowerBound'],
62 4
                        \sprintf(' and <a href="https://github.com/dvdoug/behat-code-coverage">behat-code-coverage %s</a>',
63 4
                            InstalledVersions::getPrettyVersion('dvdoug/behat-code-coverage')
64
                        ));
65 4
                    $report->process($coverage, $config['target']);
66 4
                    break;
67 12
                case 'php':
68 4
                    $report = new PHP();
69 4
                    $report->process($coverage, $config['target']);
70 4
                    break;
71 8
                case 'text':
72 4
                    $report = new Text(
73 4
                        $config['lowUpperBound'],
74 4
                        $config['highLowerBound'],
75 4
                        $config['showUncoveredFiles'],
76 4
                        $config['showOnlySummary']
77
                    );
78 4
                    echo $report->process($coverage, $config['showColors']);
79 4
                    break;
80 4
                case 'xml':
81 4
                    $report = new XmlFacade('');
82 4
                    $report->process($coverage, $config['target']);
83 4
                    break;
84
            }
85
        }
86 28
    }
87
}
88