for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace Povils\PHPMND;
use PhpParser\NodeTraverser;
use PhpParser\ParserFactory;
use Povils\PHPMND\Console\Option;
use Povils\PHPMND\Extension\DefaultExtension;
use Povils\PHPMND\Extension\Extension;
use Povils\PHPMND\Visitor\DetectorVisitor;
use Povils\PHPMND\Visitor\ParentConnectorVisitor;
use Symfony\Component\Finder\SplFileInfo;
/**
* Class Detector
*
* @package Povils\PHPMND
*/
class Detector
{
* @param Option $option
public function __construct(Option $option)
$this->option = $option;
option
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;
}
* @param SplFileInfo $file
* @return FileReport
public function detect(SplFileInfo $file)
$parser = (new ParserFactory)->create(ParserFactory::PREFER_PHP7);
$traverser = new NodeTraverser();
$fileReport = new FileReport($file);
$traverser->addVisitor(new ParentConnectorVisitor());
$traverser->addVisitor(new DetectorVisitor($fileReport, $this->option));
$stmts = $parser->parse($file->getContents());
$traverser->traverse($stmts);
return $fileReport;
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code:
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: