ふにゃるんv2

もとは、http://d.hatena.ne.jp/Wacky/

ソースコードのメトリクス(品質測定)を行うツール

前回は、ccccってツールを試したんですが、id:akiramei さんの8/21のネタで、SourceMonitorが紹介されており、もう少し調べてみる事に。

Source Monitor

id:akiramei さん。…元は どっとねっとメモさんが紹介されていたツールです。


ウィザード形式で、解析するフォルダを指定できるのは便利ですね。
2
2 posted by (C)wacky


選択できるプログラム言語は、以下の通りです。
3
3 posted by (C)wacky
一通りの有名な言語を選択できるのは、嬉しいですね。


読み込ませると、以下のようなメトリクス収集をしてくれます。
6
6 posted by (C)wacky
7
7 posted by (C)wacky
グラフ表示してくれるのは、かなり嬉しいかも。


コードの複雑度の判定基準は、"Complexity"のようです。このパラメータが"McCabeのサイクロマチック数"で合っているのかな?と思って、色々チェックしてみたんですが、「合って」いる模様です。

↓ここで、SourceMonitorについての各種コメントがあります。


ちょっと気になるのは、自分のコードを読み込ませると、何の問題も無かったんですが、先日発表された IronLisp のコードを読み込ませると、「解析できないよ」エラーが時折発生しました。
う〜ん、コードの書き方によっては、解析に失敗するのかな?

DevCodeMetrics

::memoletさんで紹介されていた LOCツール です。


コンソール版、Web版、Windowsフォームでグラフ表示版と、ナイス(死語)なUIを持っていたので、「おぉっ!」と思ったんですが、よくよく見ると、".c"が解析対象です。
1
1 posted by (C)wacky


ただ、どんなメトリクス収集をしているか、図入りで説明しているページがあって、参考になりました。


これを見ると、コード行数を計測するのに、 LOC 以外に、 eLOC(有効コード行数) って指標もあるんですね。へぇ。

Visual Studio 2008

現在開発中のVS2008ですが、こちらのBlogを見ると、メトリクス収集をしてくれるので期待大。

さて、次は、コードメトリクスです。VSTS 2008 からの新機能となりますが、これも VSTS で実現できます。コードメトリクスでは、コードの保守容易性(Maintainability Index)、循環的複雑度(Cyclomatic Complexity)、継承の深さ(Depth of Inheritance)、クラス結合度(Class Coupling)、コード行(Line Of Code)を示してくれます。またこれらは3段階(緑、黄、赤)で、コードのエレガントさを表してくれます。


そういえば、この間 読んだ、元マイクロソフト所属の方が書かれた書籍で、マイクロソフトでは「LOC」や「複雑度」をメトリクス収集の一つに含んでいると書いてあったような。
マイクロソフトのテスト部隊は世界最強みたいなんで(書籍では、開発1に対してテスト2の割合で人を割り当てていると書かれていたと思います。ありえね〜)、かなり期待したいですね。

まとめ

.NET系では、SourceMonitorでOKかな?という気がします。
後は、今後出る Visual Studio 2008 に期待ですかね。

2007/09/11: 追記

コメントで、id:murasuke さんから指摘頂いていますが、「McCabeのサイクロマチック数」と言っても、計算の仕方に違い(工夫)があるようで、Source Monitorが参考にしているやり方だと、標準?のやり方より、若干複雑度が高めに出るようです。

という訳で、当たり前の話ですが、

  • 昨日はAのツール使ってxxメトリクス集計
  • 今日はBのツール使ってxxメトリクス集計

ってのは、同じxxメトリクス集計だろうが、やっちゃいけないよ=情報に意味が無くなるから。って事ですね。