Completed
Pull Request — master (#8)
by Povilas
03:23 queued 01:26
created

Detector::addExtension()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 1
1
<?php
2
3
namespace Povils\PHPMND;
4
5
use PhpParser\NodeTraverser;
6
use PhpParser\ParserFactory;
7
use Povils\PHPMND\Console\Option;
8
use Povils\PHPMND\Extension\DefaultExtension;
9
use Povils\PHPMND\Extension\Extension;
10
use Povils\PHPMND\Visitor\DetectorVisitor;
11
use Povils\PHPMND\Visitor\ParentConnectorVisitor;
12
use Symfony\Component\Finder\SplFileInfo;
13
14
/**
15
 * Class Detector
16
 *
17
 * @package Povils\PHPMND
18
 */
19
class Detector
20
{
21
    /**
22
     * @param Option $option
23
     */
24
    public function __construct(Option $option)
25
    {
26
        $this->option = $option;
0 ignored issues
show
Bug introduced by
The property option does not exist. Did you maybe forget to declare it?

In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code:

class MyClass { }

$x = new MyClass();
$x->foo = true;

Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion:

class MyClass {
    public $foo;
}

$x = new MyClass();
$x->foo = true;
Loading history...
27
    }
28
29
    /**
30
     * @param SplFileInfo $file
31
     *
32
     * @return FileReport
33
     */
34
    public function detect(SplFileInfo $file)
35
    {
36
        $parser = (new ParserFactory)->create(ParserFactory::PREFER_PHP7);
37
        $traverser = new NodeTraverser();
38
39
        $fileReport = new FileReport($file);
40
41
        $traverser->addVisitor(new ParentConnectorVisitor());
42
        $traverser->addVisitor(new DetectorVisitor($fileReport, $this->option));
43
44
        $stmts = $parser->parse($file->getContents());
45
        $traverser->traverse($stmts);
46
47
        return $fileReport;
48
    }
49
}
50