Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
58
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

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

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

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はこんなサービスを使っているのか。。

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
58
Help us understand the problem. What are the problem?