SniffFinder   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 44
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 44
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 13 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 17
    public function __construct(
30
        SniffClassRobotLoaderFactory $sniffClassRobotLoaderFactory,
31
        SniffClassFilter $sniffClassFilter
32
    ) {
33 17
        $this->sniffClassRobotLoaderFactory = $sniffClassRobotLoaderFactory;
34 17
        $this->sniffClassFilter = $sniffClassFilter;
35 17
    }
36
37 12
    public function findAllSniffClasses() : array
38
    {
39 12
        return $this->findAllSniffClassesInDirectory(VendorDirProvider::provide());
40
    }
41
42 13
    public function findAllSniffClassesInDirectory(string $directory) : array
43
    {
44 13
        if (isset($this->sniffClassesPerDirectory[$directory])) {
45 9
            return $this->sniffClassesPerDirectory[$directory];
46
        }
47
48 13
        $robotLoader = $this->sniffClassRobotLoaderFactory->createForDirectory($directory);
49 13
        $sniffClasses = $this->sniffClassFilter->filterOutAbstractAndNonPhpSniffClasses(
50 13
            array_keys($robotLoader->getIndexedClasses())
51
        );
52
53 13
        return $this->sniffClassesPerDirectory[$directory] = $sniffClasses;
54
    }
55
}
56