StyleCIを使ってPHPのコーディングスタイルをチェックする (2)

前回に続き、StyleCIの設定と使用方法について解説します。今回は、PHPのスタイル解析の詳細な設定や、Githubへのプッシュがあった際に、自動でスタイル解析を行う方法を解説します。

configurationファイル

PHPのスタイル解析を行いたいリポジトリについて、前回の通りStyleCIの有効化を行った後に、プロジェクトルートに.styleci.ymlを追加します。

# このコマンドは既存のファイルを上書きするので注意
$ echo "risky: false
linting: true" > .styleci.yml

riskyオプション

riskyオプションは、リスクのある設定項目(フィクサー)の有効化を許可するかどうかを設定します。デフォルトではfalseのようです。リスクのある設定項目を有効化すると、コーディングスタイルのチェックを行う際に破壊的な変更(コード実行の際の挙動が変わるなど)が提案されます。例えば以下のようなものがあります。

ereg_to_preg

deprecatedなereg関数をpreg関数に置き換える

lintingオプション

lintingオプションを有効化すると、プロジェクトのPHPコードが実際に実行可能なものかが事前にチェックされ、構文エラーを検出することができます。デフォルトではtrueになります。

その他

スタイル解析の対象とするPHPを指定するFinderオプションがありますが、解説では割愛します。公式ドキュメントを確認して下さい。

Presets

プリセットは、設定項目である複数のフィクサーの組み合わせです。StyleCIでは、現在5つのプリセットが用意されているので、公式ドキュメントを確認し、適したものがあれば選択します。プリセットは、presetオプションとして設定ファイルに追加できます。

# デフォルトのプリセットrecommendedを選択する例
$ echo "preset: recommended" >> .styleci.yml

Fixers

StyleCIにはPHPのコーディングスタイルにに関する多くの設定項目(フィクサー)が用意されており、プリセットに追記できます。公式ドキュメントにある項目から好きなものを選び、enabledオプションまたはdisabledオプションに設定していきます。ただし、前述のとおりリスキーなフィクサーや、複数設定するとコンフリクトを起こすフィクサーなどがあるのでこれらに注意します。

$ echo "enabled:
  - long_array_syntax  # 配列の指定にはarray()を用いる
disabled:
  - short_array_syntax # 配列の短縮構文を許可しない
" >> .styleci.yml

設定ファイル

今回作成した設定ファイルは以下のようになるはずです。

.styleci.yml

risky: false
linting: true
preset: recommended
enabled:
  - long_array_syntax
disabled:
  - short_array_syntax

Gitubへpushする

この状態でGithubへプッシュすると、StyleCIが発火し、自動でスタイル解析が実行されます。ステータスがfailedの場合、修正が提案されますので、前回と同様、必要ならばプルリクエストを作成するなどして、マージしましょう。なお、自動でマージしたり、コミットしたりする設定もできます。

GIthubからマージする
GIthubからマージする

前回と異なり、今回のコミットでは、配列の短縮構文のチェックを無効化したため、PHP5.3で行っているTravis CIのビルドも成功しています。

ステータスバッジ

StyleCIのリポジトリページからステータスバッジStyleCIをクリックすると、埋め込み用のリンクなどが得られますので、必要ならばREADME.mdなどに埋め込みましょう。


今回は、PHPのコーディングスタイルチェックに特化したStyleCIを紹介しました。機能が絞られている分、設定項目が少なく、とっつきやすい印象を持ちました。今後は、このように特定の用途に専門化したCI支援サービスが多く登場してくるのかもしれません。