PHP コードスタイルのチェック、整形を行うサービスである Style CI を紹介します。
このエントリは、Laravelリファレンス Advent Calendar 2015 の22日目です。
Laravel 公式が利用しているサービス
Style CI は、Alt Three が運営している GitHub にホストしている PHP コードのコードスタイルをチェックするサービスです。
GitHub へコードを push すると、コードチェックが行われ、適合しないコードがあればエラーになります。メールによるエラー通知も飛んできます。
Style CI のサイトに行くと修正が必要が箇所のコードが提示されます。
shin1x1/phpkansai-20151216-demo - StyleCI
チェックできるフォーマットは、インデントやブレース位置、文字エンコーディングなどの基本的なものから、short array syntax の強制(long array syntax の強制もあり)や short echo tag への置換など数多くのルールがあります。
これらを1つづつ設定していっても良いですし、preset と呼ばれる複数のルールをグループ化したものを指定することもできます。preset には以下のようなものがあります。
これらの設定は、 Style CI サイトでの設定もしくはリポジトリのルートディレクトリに .style.yml
という設定ファイルを置くことで指定できます。
Style CI の特徴
Pull Request で修正コードの自動送信
Style CI では、PHP コードのチェックを行うのですが、設定を有効にすれば修正済みコードを自動で PR で投げてくれます。
https://github.com/shin1x1/phpkansai-20151216-demo/pull/11
開発者はコードを見て、問題無ければマージするだけでコードの整形が完了します。
さらに、この PR を自動で取り込む機能もあります。(デフォルトは disable )
CI でコードフォーマットを怒られて手元でちまちま修正するより、ただマージするだけの方が楽なのでこれは嬉しい機能です。
Scrutinizer との比較
同種のサービスとして有名なのが Scrutinizer です。こちらは、コードフォーマットだけでなく、コードの静的解析なども行うので全く同種として扱うことはできないのですが、動作速度としては Style CI の方が遥かに速いです。
シンプルにコードフォーマットのチェックだけ行うなら、Style CI を試す価値が十分あります。
Laravel 公式で利用しているサービス
Laravel フレームワークのリポジトリ( https://github.com/laravel/framework )にて、コードフォーマットチェックとして Style CI が利用されています。
https://github.com/laravel/framework/pull/11397
私自身も Laravel のリポジトリを探っている中でこのサービスを知りました。Style CI を運営している Alt Three には、Laravel コミッターである Graham Campbell さんが参加しているのでその流れかもしれませんね。
サイトが OSS
Style CI は、Laravel 5.1 で開発されており、そのコードは GitHub で公開されています。
https://github.com/StyleCI/StyleCI
もちろんサービスとして公開しているものとの差分はある(このリポジトリのコードがそのままサービスとなっているわけではない)でしょうけど、多少なりとも内部が分かっているのは安心感があります。また、場合によってはこのコードを自分達のプロジェクト用にホスティングして使うということもできるかもしれません。
Laravel 5.1 を使った実用的な Web アプリケーションとして実装を見てみるのも良いですね。
さいごに
PHP コードチェックサービスの Style CI を紹介しました。
PhpStorm を使っていれば、commit 前に 「Reformat code」 や 「Optimize imports」 をかけることができるので、敢えてこうした CI サービスを利用する必要は無いかもしれません。ただ、チーム開発などでエディタが異なる場合や IDE の設定漏れなどで定めたコードフォーマットに適合しないコードが push される場合もあるでしょう。
こうした場合に保険的に Style CI を導入しておけば、開発者が修正せずとも自動で整形したコードを取り込むことができます。コードフォーマットに特化したサービスのため動作が軽快で、Travis の CI よりも先に終了するので、試しに導入しても邪魔にならないというのも良いですね。
public なリポジトリであれば、無料で利用できるので試しに使ってみてはどうでしょう。
Laravel については「Laravelリファレンス」を参考にしてください :D
Laravel リファレンス[Ver.5.1 LTS 対応] Web職人好みの新世代PHPフレームワーク
- 作者: 新原雅司,竹澤有貴,川瀬裕久,大村創太郎,松尾大
- 出版社/メーカー: インプレス
- 発売日: 2016/01/08
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る