PhpCsFixerReview.php 1.75 KB
Newer Older
Ketan's avatar
Ketan committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
<?php
/*
 * This file is part of StaticReview
 *
 * Copyright (c) 2014 Samuel Parkinson <@samparkinson_>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 *
 * @see http://github.com/sjparkinson/static-review/blob/master/LICENSE.md
 */
namespace Magento\Tools\StaticReview;

use StaticReview\File\FileInterface;
use StaticReview\Reporter\ReporterInterface;
use StaticReview\Review\AbstractReview;

class PhpCsFixerReview extends AbstractReview
{
    /**
     * @var array
     */
    protected $options;

    /**
     * @param array $options
     */
    public function __construct($options = ['config-file' => '.php_cs'])
    {
        $this->options = $options;
    }

    /**
     * Obtained from .php_cs configuration file.
     *
     * @param  FileInterface $file
     * @return bool
     */
    public function canReview(FileInterface $file)
    {
        return in_array($file->getExtension(), ['php', 'phtml', 'xml', 'yml']);
    }

    /**
     * Checks and fixes PHP files using PHP Coding Standards Fixer.
     *
     * @param ReporterInterface $reporter
     * @param FileInterface $file
     * @return void
     * @SuppressWarnings(PHPMD.UnusedFormalParameter)
     */
    public function review(ReporterInterface $reporter, FileInterface $file)
    {
        $cmd = 'vendor/bin/php-cs-fixer -vvv ';
        foreach ($this->options as $key => $value) {
            $cmd .= ' --' . $key . '=' . escapeshellarg($value);
        }
        $cmd .= ' fix ' . escapeshellarg($file->getRelativePath());

        $process = $this->getProcess($cmd);
        $process->run();

        $process = $this->getProcess('git add ' . escapeshellarg($file->getRelativePath()));
        $process->run();
    }
}