LoginSignup
3
2

More than 1 year has passed since last update.

laravel PHP-CS-Fixerを導入してみた PSR1 及び PSR2準拠のルール設定

Last updated at Posted at 2021-09-18

目的

  • すでに紹介されているPHP-CS-Fixerの導入方法を見ながら実際にインストールしてみてソース整形を実施してみたのでまとめる

ご注意

情報

情報

  • 特筆しない限り、コマンドは一つ前のコマンドと同じディレクトリで実行するものとする。

方法

※導入方法とどのような自動修正を加える予定なのか表示するところまで記載する。

  1. laravelのアプリ名ディレクトリで下記コマンドを実行してPHP-CS-Fixerを取得する。

    $ composer require --dev friendsofphp/php-cs-fixer -vvv
    
  2. 下記コマンドを実行してPHP-CS-Fixerが導入されたことを確認する。(エラーが出なければOK)

    $ ./vendor/bin/php-cs-Fixer --version
    
  3. 下記コマンドを実行してPHP-CS-Fixerの設定ファイルを作成して開く。

    $ vi .php-cs-fixer.dist.php
    
  4. 開いた設定ファイルに下記の内容を記載した。(PSR-1 及び PSR-2準拠のルールを設定したいため下記のように設定)

    アプリ名ディレクトリ/.php-cs-fixer.dist.php
    <?php declare(strict_types=1);
    
    $finder = PhpCsFixer\Finder::create()
        // チェックするディレクトリの指定
        ->in([
            __DIR__ . '/app',
            __DIR__ . '/config',
            __DIR__ . '/database/factories',
            __DIR__ . '/database/seeders',
            __DIR__ . '/routes',
            __DIR__ . '/tests',
        ]);
    
    $config = new PhpCsFixer\Config();
    
    return $config
        ->setRiskyAllowed(true)
        ->setRules([
            '@PSR1' => true,
            '@PSR2' => true,
        ])
        ->setFinder($finder);
    
  5. 設定ファイル.php-cs-fixer.dist.phpが空だった場合でも、PHP-CS-Fixer標準のフォーマットでソースを修正してくれるようだ。

  6. 早速下記のコマンドを実行してPHP-CS-Fixerがどのような修正を自動で加える予定なのか調べてみる。

    $ ./vendor/bin/php-cs-fixer fix --dry-run --diff 修正してほしいファイルのパス 
    
  7. 下記コマンドを実行することで修正の差分として表示したものを指定されたふぁいる のみ実際に修正する。

    $ ./vendor/bin/php-cs-fixer fix 修正してほしいファイルのパス 
    
  8. 下記コマンドを実行することで指定ディレクトリ(今回だと /app /config /database/factories /database/seeders /routes /tests直下)のすべてのファイルをチェックしてPHP-CS-Fixerがどのような修正を自動で加える予定なのか出力する事ができる。

    $ ./vendor/bin/php-cs-fixer fix --dry-run --diff
    
  9. 下記コマンドを実行することで修正の差分として表示したものを実際に修正する。

    $ ./vendor/bin/php-cs-fixer fix
    

追記

  • もしかするとPSR1とPSR2に準拠させたいなら、PSR2だけを.php-cs-fixer.dist.phpに指定すればいいかも
    • PSR2はPSR1に準拠していることが大前提なのでPSR2をルールに設定したらそもそもPSR1には準拠していることになるっぽい。
  • 後、当該ライブラリのキャッシュファイルがlaravelアプリケーション名ディレクトリに作成されるけど.gitignoreで管理外にしておいたほうがいいかも

参考文献

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2