LoginSignup
9
9

More than 5 years have passed since last update.

metric_fu を利用して Ruby のボットフレームワーク Ruboty と Lita の循環的複雑度を比較する

Last updated at Posted at 2015-05-15

概要

metric_fu を利用して Ruby のボットフレームワーク Ruboty と Lita の循環複雑度を比較します

metric_fu について

metric_fu は Ruby の様々な静的解析ツールをまとめて提供してくれる gem です。
今回は、循環複雑度のみを参考にするため、 Saikuro の結果のみを確認します。

インストール

$ gem install metric_fu
$ gem install ruboty
$ gem install lita
  • metric_fu の実行

対象プロジェクトのルートフォルダで、 metric_fu を実行するだけです。
レポートは、デフォルトで %プロジェクトルート%/tmp/metric_fu/output/index.html に出力されます

$ cd /path/to/ruboty
$ metric_fu
******* STARTING METRIC cane
******* ENDING METRIC cane
******* STARTING METRIC churn
******* ENDING METRIC churn
******* STARTING METRIC flay
******* ENDING METRIC flay
******* STARTING METRIC flog
******* ENDING METRIC flog
******* STARTING METRIC saikuro
******* ENDING METRIC saikuro
******* STARTING METRIC reek
******* ENDING METRIC reek
******* STARTING METRIC roodi
******* ENDING METRIC roodi
******* STARTING METRIC stats
******* ENDING METRIC stats
******* STARTING METRIC hotspots
******* ENDING METRIC hotspots
******* SAVING REPORTS

前提

Name Version
metric_fu 4.11.4
ruboty 1.2.2
lita 4.3.2

循環複雑度

循環複雑度については下記参照。
Hatena - TbpgrBlog - \バグだー!/ システムに巣食うバグさんからみた快適さ、循環複雑度( Cyclomatic Complexity ) とは? \バグだー!/

循環複雑度とバグ混入率

循環的複雑度 複雑さ バグ混入率
10以下 シンプルなプログラム。リスクがほとんどない 25%
40以上 ほどほどの複雑さのコード。ややリスクがある 50%
50以上 かなり複雑なコード。リスクがある 70%
75以上 いかなる変更も誤修正を生む 98%

Ruboty

メソッドの循環複雑度です。

なんと、 Max で 4 しかない非常に良い構造であることが分かります。
メソッドの行数も、ほとんどは 2 行から 4 行程度で、
もっとも行数が多いメソッドですら、 11 行です。

ruboty.png

Lita

メソッドの循環複雑度です。

Max で 9 と、 ruboty よりは複雑ですが、それでも「非常に良い構造」の範囲内です。
もっとも行数が多いメソッドは 30 行です。
しかし、一般的なスパゲッティコードなどと比べれば、かなり簡潔な処理でしょう。

lita.png

総括

Ruby の bot フレームワークはどちらも複雑度が低く、簡潔なメソッド群で構成されている、
ということが分かりました。

中でも、 Ruboty の複雑度の低さ、行数の少なさは群を抜いています。
なんだかライブラリの利用者として安心感がありますね。

GitHub Repositories

外部資料

9
9
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
9
9