PHP のプロジェクトのコードレビューで fixer を実行してくださいともうコメントしたくない

はじめに

PHP のプロジェクトでコーディング規約として PHP-CS-Fixer を使って、コード整形しているプロジェクトは多いのではないでしょうか?

f:id:enomotodev:20190630231009p:plain

しかし、IDE などを使って PHP-CS-Fixer を自動実行している場合は良いのですが、実行されずに commit して、コードレビューで fixer 実行してくださいと言われたり、CI の中で fixer を実行済みかどうかチェックして無駄に fail させまくったり…。

心当たりのある方も結構多いのではないでしょうか?

それって無駄な時間だなーと思ったので、CI の中で fixer を実行されていなかったら実行して commit してくれる php-cs-fixer-commit という OSS を作ってみました。

対応している Git レポジトリと CI サービスの組み合わせ

  • GitHub + CircleCI
  • GitLab + GitLabCI

現状、この2つの組み合わせしか対応していませんので、どんどん PR ください!

使い方 (GitHub + CircleCI)

GitHub + CircleCI の組み合わせで簡単に使い方を紹介したいと思います。

ますは、こちらを参考に CircleCI の環境変数GitHub のアクセストークンを設定してください。

アクセストークンを設定したら、circle.yml または .circleci/config.yml の設定を次のようにします。

(適宜プロジェクトの設定に合わせて変更してください)

version: 2

jobs:
  fixer:
    docker:
      - image: composer:latest
    steps:
      - checkout
      - run:
          name: composer install
          command: |
            composer install
      - run:
          name: php-cs-fixer-commit
          command: |
            ./vendor/bin/php-cs-fixer-commit <コミットするときのユーザ名> <コミットするときのメールアドレス>

workflows:
  version: 2
  build:
    jobs:
      - fixer

あとは通常通り GitHub に push すると、CircleCI 側で fixer を実行し、差分があった場合は自動的に commit を作成してくれます。

まとめ

最近 fixer のやりとりで時間を無駄にしてるなぁと感じる場面を見ることが何度かあったので OSS として作って公開してみました。

使ってみて不具合などありましたらぜひ気軽に PR 送ってください!