Completed
Branch master (f7eb77)
by Tomáš
03:26
created

SniffClassesResolver   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 63
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 8
lcom 1
cbo 2
dl 0
loc 63
ccs 24
cts 24
cp 1
rs 10
c 0
b 0
f 0

5 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 7 1
A resolveFromStandardsAndSniffs() 0 10 1
A addStandardSniffs() 0 12 2
A addExtraSniffs() 0 5 1
A removeExcludeSniffs() 0 12 3
1
<?php
2
3
/*
4
 * This file is part of Symplify
5
 * Copyright (c) 2016 Tomas Votruba (http://tomasvotruba.cz).
6
 */
7
8
namespace Symplify\PHP7_CodeSniffer\Sniff;
9
10
use Symplify\PHP7_CodeSniffer\Configuration\ConfigurationResolver;
11
use Symplify\PHP7_CodeSniffer\Ruleset\RulesetBuilder;
12
13
final class SniffClassesResolver
14
{
15
    /**
16
     * @var ConfigurationResolver
17
     */
18
    private $configurationResolver;
19
20
    /**
21
     * @var RulesetBuilder
22
     */
23
    private $rulesetBuilder;
24
25 4
    public function __construct(
26
        ConfigurationResolver $configurationResolver,
27
        RulesetBuilder $rulesetBuilder
28
    ) {
29 4
        $this->configurationResolver = $configurationResolver;
30 4
        $this->rulesetBuilder = $rulesetBuilder;
31 4
    }
32
33 4
    public function resolveFromStandardsAndSniffs(
34
        array $standards,
35
        array $extraSniffs,
36
        array $excludedSniffs
37
    ) : array {
38 4
        $sniffs = [];
39 4
        $sniffs = $this->addStandardSniffs($sniffs, $standards);
40 4
        $sniffs = $this->addExtraSniffs($sniffs, $extraSniffs);
41 4
        return $this->removeExcludeSniffs($sniffs, $excludedSniffs);
42
    }
43
44 4
    private function addStandardSniffs(array $sniffs, array $standards) : array
45
    {
46 4
        $standards = $this->configurationResolver->resolve('standards', $standards);
47 4
        foreach ($standards as $rulesetXmlPath) {
48 3
            $sniffs = array_merge(
49
                $sniffs,
50 3
                $this->rulesetBuilder->buildFromRulesetXml($rulesetXmlPath)
51
            );
52
        }
53
54 4
        return $sniffs;
55
    }
56
57 4
    private function addExtraSniffs(array $sniffs, array $extraSniffs) : array
58
    {
59 4
        $extraSniffs = $this->configurationResolver->resolve('sniffs', $extraSniffs);
60 4
        return array_merge($sniffs, $extraSniffs);
61
    }
62
63 4
    private function removeExcludeSniffs(array $sniffs, array $excludedSniffs) : array
64
    {
65 4
        $excludedSniffs = $this->configurationResolver->resolve('sniffs', $excludedSniffs);
66
67 4
        foreach ($excludedSniffs as $sniffCode => $sniffClass) {
68 1
            if (isset($sniffs[$sniffCode])) {
69 1
                unset($sniffs[$sniffCode]);
70
            }
71
        }
72
73 4
        return $sniffs;
74
    }
75
}
76