Completed
Branch master (06cb84)
by Tomáš
06:00
created

SniffFinder   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 45
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 4
lcom 1
cbo 4
dl 0
loc 45
ccs 13
cts 13
cp 1
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 7 1
A findAllSniffClasses() 0 4 1
A findAllSniffClassesInDirectory() 0 14 2
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\Finder;
9
10
use Symplify\PHP7_CodeSniffer\Composer\VendorDirProvider;
11
12
final class SniffFinder
13
{
14
    /**
15
     * @var string[]
16
     */
17
    private $sniffClassesPerDirectory = [];
18
19
    /**
20
     * @var SniffClassRobotLoaderFactory
21
     */
22
    private $sniffClassRobotLoaderFactory;
23
24
    /**
25
     * @var SniffClassFilter
26
     */
27
    private $sniffClassFilter;
28
29 4
    public function __construct(
30
        SniffClassRobotLoaderFactory $sniffClassRobotLoaderFactory,
31
        SniffClassFilter $sniffClassFilter
32
    ) {
33 4
        $this->sniffClassRobotLoaderFactory = $sniffClassRobotLoaderFactory;
34 4
        $this->sniffClassFilter = $sniffClassFilter;
35 4
    }
36
37 2
    public function findAllSniffClasses() : array
38
    {
39 2
        return $this->findAllSniffClassesInDirectory(VendorDirProvider::provide());
40
    }
41
42 3
    public function findAllSniffClassesInDirectory(string $directory) : array
43
    {
44 3
        if (isset($this->sniffClassesPerDirectory[$directory])) {
45 1
            return $this->sniffClassesPerDirectory[$directory];
46
        }
47
48 3
        $robotLoader = $this->sniffClassRobotLoaderFactory->createForDirectory($directory);
49
50 3
        $sniffClasses = $this->sniffClassFilter->filterOutAbstractAndNonPhpSniffClasses(
51 3
            array_keys($robotLoader->getIndexedClasses())
52
        );
53
54 3
        return $this->sniffClassesPerDirectory[$directory] = $sniffClasses;
55
    }
56
}
57