Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 6 |
CRAP | |
0.00% |
0 / 43 |
| TypeHintConfig | |
0.00% |
0 / 1 |
|
0.00% |
0 / 6 |
56 | |
0.00% |
0 / 43 |
| configure() | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 8 |
|||
| execute(InputInterface $input, OutputInterface $output) | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 9 |
|||
| getConfig($dir) | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
| initialize(InputInterface $input, OutputInterface $output) | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 8 |
|||
| getPhpFinder($directory, $ignoreDir) | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 8 |
|||
| writeConfig(GraphLogger $logger) | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 6 |
|||
| <?php | |
| /* | |
| * Mondrian | |
| */ | |
| namespace Trismegiste\Mondrian\Command; | |
| use Symfony\Component\Console\Command\Command; | |
| use Symfony\Component\Console\Input\InputInterface; | |
| use Symfony\Component\Console\Output\OutputInterface; | |
| use Symfony\Component\Console\Input\InputArgument; | |
| use Symfony\Component\Console\Input\InputOption; | |
| use Trismegiste\Mondrian\Builder\Linking; | |
| use Trismegiste\Mondrian\Builder\Statement\Builder; | |
| use Trismegiste\Mondrian\Transform\GraphBuilder; | |
| use Symfony\Component\Finder\Finder; | |
| use Trismegiste\Mondrian\Graph\Digraph; | |
| use Trismegiste\Mondrian\Config\Helper; | |
| use Trismegiste\Mondrian\Transform\Logger\GraphLogger; | |
| use Symfony\Component\Yaml\Yaml; | |
| /** | |
| * TypeHintConfig generates a default type-hint config files | |
| * | |
| * Overwrites any previous existing | |
| */ | |
| class TypeHintConfig extends Command | |
| { | |
| const HEADER_CONFIG = "# Mondrian - static code analysis configuration\n# More info at https://github.com/Trismegiste/Mondrian\n"; | |
| protected $fineTuning; | |
| protected $phpfinder; | |
| protected $newConfigFile; | |
| protected $dryRunning = false; | |
| protected function configure() | |
| { | |
| $this | |
| ->setName('typehint:config') | |
| ->setDescription('Regenerates and overwrites any existing typehint config at the root of the package') | |
| ->addArgument('dir', InputArgument::REQUIRED, 'The directory to explore') | |
| ->addOption('ignore', 'i', InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Directories to ignore', array('Tests', 'vendor')) | |
| ->addOption('dry', null, InputOption::VALUE_NONE, 'Dry run (no write)'); | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| protected function execute(InputInterface $input, OutputInterface $output) | |
| { | |
| $graph = new Digraph(); | |
| $logger = new GraphLogger(); | |
| $compil = new Linking(new Builder(), new GraphBuilder($this->fineTuning, $graph, $logger)); | |
| $output->writeln(sprintf("Parsing %d files...", $this->phpfinder->count())); | |
| $compil->run($this->phpfinder->getIterator()); | |
| $this->writeConfig($logger); | |
| $output->writeln("Default config {$this->newConfigFile} created"); | |
| } | |
| /** | |
| * get the graph section of the configuration for this package | |
| * | |
| * @param string $dir the root dir of the package | |
| * | |
| * @return array | |
| */ | |
| protected function getConfig($dir) | |
| { | |
| $helper = new Helper(); | |
| return $helper->getGraphConfig($dir); | |
| } | |
| /** | |
| * Inject parameters of the command | |
| */ | |
| protected function initialize(InputInterface $input, OutputInterface $output) | |
| { | |
| $directory = $input->getArgument('dir'); | |
| $ignoreDir = $input->getOption('ignore'); | |
| $this->fineTuning = $this->getConfig($directory); | |
| $this->phpfinder = $this->getPhpFinder($directory, $ignoreDir); | |
| $this->newConfigFile = $directory . '/.mondrian.yml'; | |
| $this->dryRunning = $input->getOption('dry'); | |
| } | |
| protected function getPhpFinder($directory, $ignoreDir) | |
| { | |
| $scan = new Finder(); | |
| $scan->files() | |
| ->in($directory) | |
| ->name('*.php') | |
| ->exclude($ignoreDir); | |
| return $scan; | |
| } | |
| /** | |
| * Dump the config | |
| * | |
| * @param \Trismegiste\Mondrian\Transform\Logger\GraphLogger $logger | |
| */ | |
| protected function writeConfig(GraphLogger $logger) | |
| { | |
| if (!$this->dryRunning) { | |
| file_put_contents($this->newConfigFile, self::HEADER_CONFIG); | |
| file_put_contents($this->newConfigFile, Yaml::dump($logger->getDigest(), 5), FILE_APPEND); | |
| } | |
| } | |
| } |