Scrutinizerが凄い!!
ScrutinizerというサービスがPHPの静的解析出来て凄いというスライドを読んで試しに使ってみたら思いの外すごかった。
公式サイトURL
https://scrutinizer-ci.com/
スライドの記事
http://www.slideshare.net/hinakano/scrutinizer-ciphp
オープンソースのリポジトリ(publicリポジトリ?)なら無料で利用出来るようです。
静的解析が優秀!
Scrutinizerでは初期設定の段階で、php-sim、pdepend、php-analyzerツールが有効になっています。
これらツールの他に設定で、
- PHP Code Sniffer
- PHP Change Tracking Analyzer
- PHP CS Fixer
- PHP Mess Detector
- Security Advisory Checker
といったツールを利用することも可能です。
これは凄い!
使い方は簡単!
Sucrutinizerのサイトにアクセスして、Githubへのアクセスを承認したら、
自分のリポジトリに.scrutinizer.yml
という名前でファイルを作成したら
あとは利用したい機能や設定を.scrutinizer.yml
ファイルに記載するだけです。
また、.scrutinizer.yml
ファイルを作成していなくても初期状態からいくつかの解析状態が登録されており、その内容はブラウザ上から設定することも可能です。
レポートのUIがリッチ!
静的解析を主目的とするサービスだけあって、解析結果のレポートUIが豊富です。
総合解析結果画面
コードの解析結果は10点満点の点数で評価されます。
この画面からビルドプロセス、カバレッジ、コードの評価点数のバッジURLも取得出来ます。
issue画面
問題のあるファイルが一覧で確認出来ます。
ファイルのリンク先はコードの何処にどんな問題があるのかを確認出来ます。
コードの解析結果画面
コードの解析結果を一覧で確認出来ます。
リンク先では対象のソースコードがまるまる確認出来ます。
欲を言えばハイライト表示されていて欲しいところですが;;
Unitテストは自動実行、ビルドも出来てカバレッジも取れる!
Scrutinizerでは、リポジトリにPHPUnit
、phpspec
、code ception
、behat
を利用出来る状態になっていれば、それらを自動で実行してくれます。
もし、PHPUnitの設定の中にカバレッジを取得する設定が入っていればカバレッジも取得してバッジを生成してくれます。
coverollsのようなサービスを別途利用する必要はありません。
もし、独自のビルドプロセスが必要な場合は、.scrutinizer.yml
というファイル、または設定画面上で以下のような記述を加えることでビルドプロセスを加えることが可能です。
build:
# 依存モジュールのインストール
dependencies:
before:
- pecl install ssh-beta
# デプロイ
deployment:
-
branch: master
commands:
- cd deploy && cap deploy
カバレッジについても専用のUIが用意されており、
Coverrollasのようなサービスを別途利用する必要もありません。
欲しいものはほぼScrutinizerのサービス内で揃ってしまいます。
コードの改善案を自動で生成してpull requestしてくれる!
コードの問題がある箇所の修正パッチを自動で生成して、
pull requestとして開発ブランチに取り込む事が出来ます。
利用する時の注意
Scrutinizerは開発が活発なサービスです。
今回記載した内容は直ぐに変更される可能性があります。
(実際、UnitTestの自動実行はつい先日追加されたばかりの機能です。)
機能が劣化していくことはないと思いますが、公式サイトのドキュメントは常にチェックしておいたほうがいいでしょう。