ソースコードのメトリクス(品質測定)を行うツール
前回は、ccccってツールを試したんですが、id:akiramei さんの8/21のネタで、SourceMonitorが紹介されており、もう少し調べてみる事に。
Source Monitor
- SourceMonitor
http://www.campwoodsw.com/sourcemonitor.html
id:akiramei さん。…元は どっとねっとメモさんが紹介されていたツールです。
ウィザード形式で、解析するフォルダを指定できるのは便利ですね。
2 posted by (C)wacky
選択できるプログラム言語は、以下の通りです。
3 posted by (C)wacky
一通りの有名な言語を選択できるのは、嬉しいですね。
読み込ませると、以下のようなメトリクス収集をしてくれます。
6 posted by (C)wacky
7 posted by (C)wacky
グラフ表示してくれるのは、かなり嬉しいかも。
コードの複雑度の判定基準は、"Complexity"のようです。このパラメータが"McCabeのサイクロマチック数"で合っているのかな?と思って、色々チェックしてみたんですが、「合って」いる模様です。
↓ここで、SourceMonitorについての各種コメントがあります。
- Mike Swanson's Blog : Code Review and Complexity
http://blogs.msdn.com/mswanson/articles/154460.aspx - Cyclomatic Code Complexity Analysis for Microsoft .NET Applications - The Code Project - .NET
http://www.codeproject.com/dotnet/Cyclomatic_Complexity.asp?df=100&forumid=218002&exp=0&select=1413776
ちょっと気になるのは、自分のコードを読み込ませると、何の問題も無かったんですが、先日発表された IronLisp のコードを読み込ませると、「解析できないよ」エラーが時折発生しました。
う〜ん、コードの書き方によっては、解析に失敗するのかな?
DevCodeMetrics
- DevCodeMetrics
http://devcodemetrics.sourceforge.net/index.htm
::memoletさんで紹介されていた LOCツール です。
コンソール版、Web版、Windowsフォームでグラフ表示版と、ナイス(死語)なUIを持っていたので、「おぉっ!」と思ったんですが、よくよく見ると、".c"が解析対象です。
1 posted by (C)wacky
ただ、どんなメトリクス収集をしているか、図入りで説明しているページがあって、参考になりました。
- About DevCodeMetrics
http://devcodemetrics.sourceforge.net/Metrics.htm
これを見ると、コード行数を計測するのに、 LOC 以外に、 eLOC(有効コード行数) って指標もあるんですね。へぇ。
Visual Studio 2008
現在開発中のVS2008ですが、こちらのBlogを見ると、メトリクス収集をしてくれるので期待大。
- Software Cafe : Team System によるコード分析とコードメトリクス
http://blogs.msdn.com/tomohn/archive/2007/07/28/Team-System-Code-Analisys-Metrics.aspx
さて、次は、コードメトリクスです。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メトリクス集計だろうが、やっちゃいけないよ=情報に意味が無くなるから。って事ですね。