にゃははー

はへらー

SourceMonitorを使ってみる

http://www.slideshare.net/MoriharuOhzu/ss-9224836
これ見た。やばいと思った。

SourceMonitorはここ
http://www.campwoodsw.com/sourcemonitor.html

今書いてるコードがBoost.Proto使いまくっててやばい。
これは複雑度を測るしかない!

やってみる


左から チェックポイント,作成日,ファイル数,行数,ステートメント数,分岐の出現率,コメントの出現率,クラスの深さ,関数-クラス比,関数あたりのステートメント量,最大複雑度,最大深さ,平均深さ,平均複雑度,関数数 となってるらしい。

ステートメントとか複雑度ってなんぞやって言う人は最初のスライドを見てください。
あとプロジェクト名とかそこら辺は見なかったことにしてください。

最大複雑度,平均複雑度

最大複雑度12を出してるソースはconfig.hppです。
config.hppは#if-elseで大量に分岐しているので複雑度が上がる理由は容易に想像がつきます。
しかしconfig.hppは別にBoost.Protoを駆使してる部分ではないです。

Boost.Protoを使ってるのはlibnp/analyzeとなってる部分です。
やばいです自分でもたまによくわからなくなるぐらい複雑です。
しかしSourceMonitorさんは複雑度5だと言っています。

まだまだ私のProto力が足りない様です...
ということではなくて、SFINAEで分岐しまくってたとしても複雑度には影響しないというC++的に致命的であると言うことが分かるかと思います。

つまり、SourceMonitorは
C++には使えない
ということです。

ところでSourceMonitorって...

Windows用ですけどwine1.2.2,ubuntu 10.10 i686で動きました。