LoginSignup
57
57

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-02-14

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

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

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

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

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

Scrutinizer

スクリーンショット 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

スクリーンショット 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はこんなサービスを使っているのか。。

57
57
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
57
57