Help us understand the problem. What is going on with this article?

PHP向け静的解析SaaSの主観的比較 (Scrutinizer, SensioLabsInsight, CodeClimate)

More than 3 years have passed since last update.

静的解析というのは、自動テストを実行せず、コードを解析してソースコードの複雑さやバグの起こりやすさを検出してくれるサービス。テストがなくても即座に導入できる手軽さがあり、テストとは違う面でソースコードの品質を高めるのに役立ってくれる。

CI(Continuous Integration)の一種ではあるが、特にContinuous Inspectionと呼ばれることもある。「全自動コードレビュー」と言う方が近いだろうか。
Travis-CIで各種OSSを組み合わせて似たような処理を実行させることもできるが、設定が面倒くさいし、レポートをどうするか考える必要もある。特化型SaaSの方はこの辺をよく考えてくれている。

PHPに対応したInspection系のSaaSといえば、Scrutinizer、CodeClimate、SensioLabsInsightの3つが有名なので、簡単に機能面を比較してみた。

PushやPullRequestをフックして自動的に解析を行ってくれるのは3つとも同じ。

いずれも、publicリポジトリであれば無料で解析してくれる。(無料版だけでこれを書いている)

Scrutinizer

https://scrutinizer-ci.com/

スクリーンショット 2016-02-14 10.36.10.png

CodeClimateがPHP対応していなかった時期にPHP特化型として始まったやつ。おそらく一番有名。
スコアは10段階評価(最大10)。
有料版は月額€49から。 https://scrutinizer-ci.com/pricing

良い所

  • かなり詳しい解析を行ってくれる
  • テストを実行する機能があるので、CIサーバーとしても使えなくはない
  • 各種OSSも乗っかっていることが多いので、点数の比較ができる
  • 簡単なパッチを作ってPull Requestを投げてくれる機能がある

悪い所

  • 解析速度が遅い
  • CI機能はTravis-CIなどより遅く、ショボい。実行コンテナ数はUnlimitedプランでやっと2に増える。オマケだと思ったほうがいいね
    • カバレッジレポートはTravisから送ることもできるよ
  • 無料版だと解析結果を1ヶ月しか保持してくれない。毎月何か更新しているPJなら問題はないんだけど。
  • スマホでdashboardを見ると著しく表示崩れする

SensioLabsInsight

https://insight.sensiolabs.com/

スクリーンショット 2016-02-14 10.50.35.png

Symfonyで有名なSensioLabsが運営している解析サービス。Symfony関連のOSSは必ずと言っていいほど導入している。
点数はメダル方式で、最大は★4のプラチナメダル。
有料版はprivate repo5つで月額€39から。 https://insight.sensiolabs.com/pricing

良い所

  • PHPに特化しており、特に各種フレームワークのベストプラクティスも指摘してくれる。これが大変良い
    • 今のところSymfony(3,2,1), Laravel, Drupal, その他のPHPプロジェクトなどに対応
  • どこを直せばよいコードになるのか、指示がすごく具体的。順番に直していけば必ずスコアが上がるようになっている。
  • 修正にかかる時間の目安が出るのも面白い

悪い所

  • PHP以外は一切対応していない
    • JSも含まれるリポジトリだと物足りないかも
  • 解析の種類が若干Scrutinizerと異なるので、OSSならば両方導入してみてもいいのではないか。

CodeClimate

https://codeclimate.com/
スクリーンショット 2016-02-14 11.47.40.png

RubyやJavaScriptで有名な解析サービス。途中でPHP対応が発表された。
点数はGPAで最大が4。
有料プランはホスティングにかかる費用のようだ。大部分は無料で実行できるみたい。OSS化されている機能が多い。
https://codeclimate.com/pricing

良い所

  • ちょっと思いつかない
  • しいて言うならば、PHP以外の言語用のインスペクションが充実しているので、JavaScript度が高ければいいかもしれない

悪い所

  • PHP用の解析オプションがPHPMD一択
  • しかも設定デフォルト
    • PHPMDのデフォルト設定は非常にうざい指摘ばかりなことで有名
    • 調教用のxmlを書けばいいんだけど、俺はそれがしたくないからSaaSを使ってるんだよ!!
    • みんな自分用に設定を書くから、GPAがあてにならない
  • この程度の内容ならTravis-CIでもできるぞ…

RubyやJSだと標準的なのだろうけど、CodeClimateのPHP対応はすごく微妙なので選択肢に入るレベルにないと思う。なんでLaravelはこんなサービスを使っているのか。。

Hiraku
PHP, Go界隈をうろうろしています。最近はgRPCと戦ってる。 特に明示していなければ、記事中のソースコード片は `CC-0 1.0` とします。出典表示無しで自由にコピペして頂いて構いません。 ただ、記事自体をコピペされるのは嫌なので、ソースコード部分以外の文章は通常通り全ての著作権を私が保持するものとします。 引用を超える範囲のコピペは止めて下さい。
http://blog.tojiru.net/
mercari
フリマアプリ「メルカリ」を、グローバルで開発しています。
https://tech.mercari.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした