はじめに
PHP のプロジェクトでコーディング規約として PHP-CS-Fixer を使って、コード整形しているプロジェクトは多いのではないでしょうか?
しかし、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 送ってください!