メトリクス集計ツール「SourceMonitor」が突然エラーで動かなくなった!→管理者として実行→直った!(Windows8.1、C++)

SourceMonitor V3.5

メトリクス集計をするなら「SourceMonitor」が一番パワフルで、安定していて、定期的にバージョンアップもされています。

メトリクス集計 SourceMonitor以外にいいのがない... 定期的にメトリクスを取る方法を模索中。

というか、コレしかないと言ってもいい。 VisualStudioでサクッとサポートしてくれたらいいのに...

ぼやきたくなりますが、マネージコード(C#とか)はきっちりサポートされてるんですよね!!

まあでも、SourceMonitorはかなり優秀なツールで、メソッドのネストの深さだとか、複雑度とかを数値化してくれて、リファクタリングでいうところの「イヤな匂い」を見つけるのに重宝しています。

解析ができなくなったら「管理者として実行」する

ところが!

いつのタイミングか(WindowsUpdateか、SourceMonitorのバージョンアップだとおもうけど)不明ですが、SourceMonitorプロジェクトファイルが開かなくなってしまいました。

エラーログを見たら「プロジェクトファイルを作れませんでした。.tmpファイルに書き込めません」とあったので、Windowsでこういうエラーを見かけたらアクセス権限が足りない可能性を一番に疑うことにしていて、ProgramFiles(x86)にインストールされている「SourceMonitor.exe」のプロパティから「管理者として実行」にチェックを入れました。

それ以降は、何事もなかったかのように使えてホッとした。

SourceMonitorで数値化されたコード

こんな具合に一覧されます。

sourcemonitor.png

かならず確認する項目は「Max Complexity(最大複雑度)」と「Max Depth(最大ネスト深度)」です。 これがデカイところは問答無用でリファクタリング対象にして構わないというか、しないと後々バグの温床になったりするので、やろうという感じです。ネストが深いところは、forの中でif使って、elseの先でswitchとかしてるので、早めのreturn、メソッド抽出などを使って対応してます。

複雑度が高い部分は直しにくいし、壊しやすいので、可能であればテストハーネスに入れてから作業します。(だいたいできない)

SourceMonitor++

そのほかの項目「クラスあたりのメソッド数」とか痒いところに手の届くツールなので、コード分析したい気分の時は使ってみてください。いいなと感じたら、メンテナーにカンパするとさらによいですね。

  1. C
  2. C++
  3. C#
  4. Java
  5. VB.NET
  6. Delphi
  7. HTML
  8. VisualBasic

と対応言語も豊富です。以上。

Martin Fowler オーム社 2014-07-26
売り上げランキング : 98527
by ヨメレバ