Visual Studio 2005 Team Developer Editionは,ソース・コードの静的分析ツールやカバレッジ,プロファイラの機能を備える。
静的分析ツールとは,開発者が記述したコードに対して,そのコードを実行せずに調べることで,より実行性能が高くなる命令をアドバイスしたり,セキュリティ上問題のあるコーディングに対して警告を出したりするものだ。Team Developerに実装される分析ツールは,「PREfast」と「FxCop」の2つである。
一方,カバレッジとは,ソース・コード上で実行した部分を調べるツールである。条件分岐の条件設定を間違えると想定したルーチンを通過しなくなるが,そのようなバグを発見するのに役立つ。正しくテスト・コードを実行していることの確認にも使える。
そしてプロファイラとは,そのプログラムを実行したときに,どのメソッドがどこから何回呼び出され,実行にどれくらいの時間がかかったかを調べる機能で,実行性能上のボトルネックなどを見つけるツールである。
C/C++コードに対するバグを指摘するPREfast
PREfastは,C/C++言語向けのツールで,バッファ・オーバーフロー*,初期化していないメモリーへのアクセス,nullポインタの逆参照*,メモリー・リーク,リソース・リークといったバグを指摘する。
PREfastは,標準では無効になっている。PREfastを有効にするには,プロジェクトのプロパティ設定画面の[Configuration Properties]-[Code Analysis]-[General]にある,[Enable Code Analysis for C/C++]オプションを[Yes]にする。コマンド・ライン・オプションとしては,「/prefast」を指定することになる。
PREfastが有効な状態でコンパイルすると,PREfastの警告が[Error List Options]画面に表示される。図7[拡大表示]は,サンプルとして作ったファイル表示ソフトに対してPREfastを実行した結果である。ここでは「バッファ・オーバーフローの恐れがあるコード」を指摘された。
.NETのデザイン規則に沿っていることを調べるFxCop
一方のFxCopは.NETプログラム向けのツールで,コンパイル後の実行ファイル(マネージ・コード*)が対象である。.NETのデザイン・ルールに対する違反を指摘したり,より実行性能の出るコーディング方法をアドバイスしたりする。
FxCopも標準では無効になっている。FxCopを有効にするには,プロジェクトのプロパティ設定画面の[Code Analysis]で,[Enable Code Analysis]チェック・ボックスをチェックする。標準で,ルールが9つのカテゴリに分類されている。この中から適用するルールを自由に選べる(図8[拡大表示])。独自のルールを追加することも可能だ。
図9[拡大表示]は,サンプルとして作ったプログラムにFxCopを実行した結果である。「最低限の実行権限を設定すべきだが,設定されていない」といったセキュリティ上のアドバイスや,「文字列を""(空文字列)と比較するのに,==演算子の代わりに,NullOrEmptyメソッドを使え」といった実行性能に関するアドバイスを出す。
性能のボトルネックを調べるプロファイリング・ツール
プロファイリング機能を使うには,[Tools]―[Performance Tools]―[Performance Wizard]メニューをクリックして起動するウィザードを使う。ウィザードで設定するのは,プロファイリングの対象プロジェクトと,その方法の2項目だけである。プロファイリング方法は,アプリケーション全体の実行速度を調べる[Sampling](デフォルト)と,特定のモジュールだけを調べる[Instrumentation]――の2種類から選択する。
実際にプロファイラを動かすには,[Performance Tools]ツールバーにある[Launch]ボタンをクリックする。すると,アプリーケーションが起動するので,適当に操作する。アプリケーションを閉じると解析が始まり,結果が画面に表示される(図10[拡大表示])。
プロファイリング機能の対象となるのは,EXE,DLL,ASP.NETアプリケーションである。C#やVisual Basicなどで開発した.NET対応アプリケーションと,C++で開発したWin32アプリケーションのどちらもプロファイリング可能である。
なおプロファイラは,あくまでも測定ツールであり,デバッグ・ツールではない。実行性能上のボトルネックを見つけ出したり,それを基にコードを修正/改善したりするのは,あくまでも開発者の仕事である。