NodeTraverserFactory   A
last analyzed

Complexity

Total Complexity 1

Size/Duplication

Total Lines 26
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 1
eloc 16
dl 0
loc 26
ccs 21
cts 21
cp 1
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
A createTraverser() 0 24 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Jerowork\ClassDependenciesParser\PhpParser;
6
7
use Jerowork\ClassDependenciesParser\ClassDependencies;
8
use Jerowork\ClassDependenciesParser\PhpParser\NodeVisitor\InlineFqnParser\Decliner\ImportedFqnDecliner;
9
use Jerowork\ClassDependenciesParser\PhpParser\NodeVisitor\InlineFqnParser\Decliner\NamespaceDecliner;
10
use Jerowork\ClassDependenciesParser\PhpParser\NodeVisitor\InlineFqnParser\Decliner\PhpNativeAccessorDecliner;
11
use Jerowork\ClassDependenciesParser\PhpParser\NodeVisitor\InlineFqnParser\Processor\FullyQualifiedNameProcessor;
12
use Jerowork\ClassDependenciesParser\PhpParser\NodeVisitor\InlineFqnParser\Processor\InlineFqnIsImportedAsAliasProcessor;
13
use Jerowork\ClassDependenciesParser\PhpParser\NodeVisitor\InlineFqnParser\Processor\InlineFqnIsImportedProcessor;
14
use Jerowork\ClassDependenciesParser\PhpParser\NodeVisitor\InlineFqnParser\Processor\InlineFqnWithinSameNamespaceProcessor;
15
use Jerowork\ClassDependenciesParser\PhpParser\NodeVisitor\InlineFqnParser\Processor\RootLevelFunctionProcessor;
16
use Jerowork\ClassDependenciesParser\PhpParser\NodeVisitor\ParseImportedFqnNodeVisitor;
17
use Jerowork\ClassDependenciesParser\PhpParser\NodeVisitor\ParseInlineFqnNodeVisitor;
18
use Jerowork\ClassDependenciesParser\PhpParser\NodeVisitor\ParseClassFqnNodeVisitor;
19
use PhpParser\NodeTraverser;
20
use PhpParser\NodeTraverserInterface;
21
use PhpParser\NodeVisitor\ParentConnectingVisitor;
22
23
final class NodeTraverserFactory
24
{
25 4
    public function createTraverser(ClassDependencies $classDependencies): NodeTraverserInterface
26
    {
27 4
        $traverser = new NodeTraverser();
28
29 4
        $traverser->addVisitor(new ParentConnectingVisitor());
30 4
        $traverser->addVisitor(new ParseClassFqnNodeVisitor($classDependencies));
31 4
        $traverser->addVisitor(new ParseImportedFqnNodeVisitor($classDependencies));
32 4
        $traverser->addVisitor(new ParseInlineFqnNodeVisitor(
33 4
            $classDependencies,
34 4
            [
35 4
                new NamespaceDecliner(),
36 4
                new ImportedFqnDecliner(),
37 4
                new PhpNativeAccessorDecliner(),
38 4
            ],
39 4
            [
40 4
                new FullyQualifiedNameProcessor(),
41 4
                new RootLevelFunctionProcessor(),
42 4
                new InlineFqnIsImportedProcessor(),
43 4
                new InlineFqnIsImportedAsAliasProcessor(),
44 4
                new InlineFqnWithinSameNamespaceProcessor(),
45 4
            ],
46 4
        ));
47
48 4
        return $traverser;
49
    }
50
}
51