SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Visual Studio 2005 Team Systemを使ってみよう

単体テストからパフォーマンス分析まで、VSTDでシステム開発を自動化しよう

Visual Studio 2005 Team Systemを使ってみよう - 第3回


  • X ポスト
  • このエントリーをはてなブックマークに追加

コード分析機能

 コード分析にはマネージコードのアセンブリを解析して分析を行うFxCopと、C++のアンマネージコードのコード分析を行うPREFastの2種類があります。PREFastはコードを実行せず、実行をシミュレートすることでnullポインタの逆参照、初期化されていないメモリへのアクセスなどの潜在的なソースコードの問題点を発見します。PREFastで見つかった問題点は警告としてVisual Studioのエラー一覧ウィンドウに表示され、該当コードを参照することができます。FxCopはソースコードそのものではなく、アセンブリに対して分析を行います。VSTDでのFxCopによる分析のタイミングはビルドを行ったタイミングになり、規約違反が認められた場合に警告またはエラーをVisual Studioのエラー一覧ウィンドウに表示します(図6)。規約違反をエラーとして表示するように設定すれば、コンパイルエラーとして規約違反をはじくことができるので、どうしても守らせたい規約がある場合には大きな威力を発揮することができます。

図6 Fxcop実行画面
図6 Fxcop実行画面

 規則の詳細を知りたい場合、エラー一覧の知りたい項目を選択して[F1]を押す、もしくは右クリックして[エラーヘルプの表示]を選択すれば日本語のヘルプを見れます。また規約違反を起こした箇所については、エラーや警告の一つを選択してダブルクリックすると指摘されたソースコードに移動するので、迅速に対応することができます。

 FxCopでチェックできる規約についてはデザインやセキュリティ等、マイクロソフトのデザインガイドラインに則ったもので200種類近くが提供されており、セキュリティ規則やデザイン規則といった11種類の規則に分類されています(図7)。

図7 FxCop規約選択画面
図7 FxCop規約選択画面

 どの規約を適用するか、違反時に警告かエラーのどちらを返すようにするかはプロジェクト単位でVSの画面上から設定できます。設定方法ですが、規約の選択はソリューションエクスプローラからプロジェクトファイルを選択し、コード分析のタグを開いて必要な規約を選択することでできます(図7)。また違反時の処理については[状態]をクリックすれば警告またはエラーを選択することができます。

 FxCopには多くの規約が提供されていますが、あまり使用しないと思われる規約も含まれています。例えば「グローバリゼーション規約」は多国間で使用されるアプリケーションに必要な規約がまとめられており、すべてのアプリケーションには必要ないと考えられます。このように実プロジェクトにおいてすべての規約を適用する事はまずないと思われますので、必要な項目のみを設定してください。また開発の途中から使用すると混乱や作業時間の増加といった事態を招きかねないので、開発初期から活用していくことをお勧めします。

パフォーマンス分析機能

 アプリケーションのパフォーマンスを分析する機能としてコードプロファイラがあります。コードプロファイラを使用することでアプリケーションパフォーマンスを調べ、実行に時間がかかっている処理を発見し、問題のコードへ容易にアクセスすることができます。パフォーマンスの測定方法は一定間隔で実行されているプログラムを抽出する「サンプリング」と、コードの中に測定用のコードを記載してパフォーマンスを測定する「インスツルメンテーション」の2通りが提供されています。サンプリングではコードに手を加えなくてもよい反面、実行されたメソッドを見落とす可能性があります。インスツルメンテーションでは意図通りの結果を得ることができますが、作業量が大幅に増えてしまうなど、それぞれに長所と短所があります。パフォーマンス分析機能の結果はパフォーマンスレポートとして表示されますが、レポートには概要ビュー、関数ビュー 、呼び出し元/呼び出し先ビュー 、呼び出しツリービュー 、割り当てビュー、オブジェクトの有効期間ビューの6つのビューが用意されています。

図8 パフォーマンスレポート
図8 パフォーマンスレポート
  • 概要ビュー
    一番呼び出された関数の呼び出し数、個別作業が一番多い関数の作業時間、時間が一番かかった関数の作業時間などを表示
     
  • 関数ビュー
    プロファイリング中に呼び出された関数の一覧表示
     
  • 呼び出し元/呼び出し先ビュー
    呼び出された関数と、その前後で呼び出されたすべての関数を表示
     
  • 呼び出しツリービュー
    特定の呼び出しトレースを掘り下げて表示
     
  • 割り当てビュー
    関数名、インスタンスの数、割り当てられたバイト数の合計、合計バイト数の割合などを表示
     
  • オブジェクトの有効期間ビュー
    インスタンスの合計数と、各型のインスタンスが存続した時間を示すジェネレーションバケットを表示
     

 まずは概要ビューを見てあたりをつけ詳細を確認する、というのが一般的なビューの見方です。呼び出し元/呼び出し先ビューなど他のビューを表示する項目を追加するなどカスタマイズが可能なので、使い勝手のいいようにカスタマイズするのもいいかもしれません。

まとめ

 VSTDに付属している機能の内、単体テスト機能、コード分析機能、パフォーマンス分析機能について見てきました。いずれの機能もソフトウェアの品質の向上に役立つ機能で、今まで煩雑だった作業がある程度自動化されています。ただどの機能もやみくもに使っていては作業量がいたずらに増えてしまうだけですので、事前に使用方法を検討する必要があります。使いこなすことができれば品質向上の強力なツールとして利用できると考えていますので、本稿が使い方を想像するきっかけになることを願います。

 次回は、Visual Studio Team Edition for Software Testersについて、このツールに備わっている各種テスト機能をご紹介いたします。

参考資料

  1. Visual Studio 2005 Team System ホームページ
  2. MSDN Library - Visual Studio Team Systemドキュメント

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Visual Studio 2005 Team Systemを使ってみよう連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト りばてぃ/FUJIKO/ナオキ(リバティ, フジコ, ナオキ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/1630 2008/08/26 14:07

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング