2012/01/07

SourceMonitorが相対パス指定できるようになっていた

SourceMonitorというツールがある。
静的解析ツールではなく、メトリクス評価というのかしらんが、構造的な評価をしてくれる。
splintのC++版があればいいのだけど見当たらないし、フリーの静的解析ツールもないので、まずは構造的な評価を行うだけにしている。
というと何か難しそうなのだが、とりあえずSourceMonitorにかけてみるとよいだろう。
sourcemonitor
これは、RC-S620/Sとのやりとりをするクラスにかけてみた例だ。
私が見てるのは、Max Complexityくらい。
この関数が複雑になってますよ、という指標になる。
複雑になっているところはバグが潜みやすいので、見直してみるといいかもしれん。
コメント比率なんかも出るので、ソースファイル管理者であればいちいちソースを全部見なくても、「お前、コメントが少ないぞー」と担当者に指摘することができそうだ。
プロジェクトであれば、指摘する閾値を決めておくとよいだろう。
そうせんと「どこまで改善すればいいんだ」という目安がなくて、作業者がなえてしまう。

そんなSourceMonitorだが、以前はソースファイルの位置が絶対パス指定だけだった。
これが非常にやっかいで、せっかくSourceMonitorプロジェクトを作ったとしても同じパスに置かないと使えないため、複数作業者で共有しにくかったのだ。
久しぶりにサイトを見てみると、v3.2になっていた。
そして、SourceMonitorプロジェクトファイルからの相対パスが指定できるようになっていた。
これはありがたい。
ダウンロードするなら、v3.2.4.222がよい。
標準だとv.3.2.3.218なのだが、optionで表示フォントを設定しても記憶してくれないのだ。

もう1つほしい機能があるのだが、それはなかった。
何かというと、プリプロセス処理だ。
SourceMonitorは解析するに当たってプリプロセスを見てくれない。
#if-#elseなんかがある場合は、#if~#elseまでしか見ないのだ。
詳細は、ヘルプファイルで確認してほしい。
The metrics in C++ source files can be ambiguous when conditional compilation is used to define different versions of a substructure. Therefore, SourceMonitor ignores all conditional #else clauses and counts metrics only in the code that lies between the #if... and #else preprocessor directives.
なので、#ifを多用している場合はSourceMonitorにかける前に、プリプロセス展開したソースファイルを出力するようなmakeなりなんなりを用意しておき、そのファイルに対してSourceMonitorをかけた方がよいだろう。
gccだと、-Eでよかったような。
統合環境でビルドするようなものでも、プリプロセス展開するようなオプションがあると思うので探してみるとよいかな。
プリプロセス展開する専用ツールもあったと思うが、ほどよいのが見つからなかった。興味がある方は探してみるとよいでしょう。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。

注: コメントを投稿できるのは、このブログのメンバーだけです。