開発者向け機能
では、具体的な機能を見ていきます。従来、開発者向けとしてはVisual Studio 2005 Team Edition for Software Developers(以下、VSTD)という製品が提供されていました。VSTS2008では同じ位置づけの製品として(名前から推測するに、開発者向けというより開発フェーズ向けと言った方がいいかもしれませんが)Visual Studio Team System 2008 Development Edition(以下、VSTS-DE)が提供されています。VSTS-DEに用意されている主要機能は以下の3つです。
- 単体テスト
- 静的コード分析
- 動的コード分析
この主要3機能というくくりはVSTDのときと変わりありません。これらのそれぞれに機能の強化や新機能の追加を行ったものがVSTS-DEになります。このため、VSTDのときに覚えたことやノウハウが無駄になることはありません。本稿では、変更・追加された点に焦点を絞りますので既存の機能については以下の記事をご覧ください。
- 単体テストからパフォーマンス分析まで、VSTDでシステム開発を自動化しよう
- システム品質向上のワザ -VSTDの単体テスト機能を極める-
- コード分析による品質向上のキモ - VSTDにおけるFxCopツール活用 -
- パフォーマンスプロファイラでアプリケーションのボトルネックを検出しよう
単体テスト機能
単体テスト機能は、Visual Studio 2008からはProfessional Editionでも利用可能になり、より利用者のすそ野が広がっています。このことも大きな変更点ではありますが、ここでは、単体テスト機能そのものの強化ポイントを確認します。ざっと列挙すると次のようなポイントがあります。
- より効率的なテストの実行
- ソースコードなしでのテストコードの生成
- テストクラスの継承
- データバインディングの簡易化
例えば、VSTDでは、パブリック以外のメソッド・プロパティなどのテストコードを生成すると、テストプロジェクト内に「VSCodeGenAccessors.cs」(Visual Basicでは「VSCodeGenAccessors.vb」)というファイルが作成されていました(プライベートアクセッサと呼ばれます)。中身には、リフレクションを利用してプライベートコードを呼び出すためのコードが生成されていましたが、VSTS2008ではこの代わりにクラスごとに「.accessor」というファイルが生成されます。
この変更により、プライベートアクセッサの中身を自分で編集できなくなった不便さはありますが、パフォーマンスの改善が図られているようです。
また、単体テストは通常、これから自分が作成するソースコードがある前提で作成するものですが、既存のソースコードがないアセンブリからでも単体テストが作成できるようになっています。単体テストの作成時に(次の図4に示す画面)、アセンブリの追加を選択して単体テストを作成したいアセンブリを選択すると、ソースコードから構築されるのと同じツリー構造を表示させることができます。なお、ソースから構築されるツリーのルートにはプロジェクトのアイコンが表示され、これによって見た目の区別が行われています。
データバインディングに関しては、VSTDのときから利用できましたが、今回からはウィザード形式でデータソース(データベースやCSVファイルなど)を選択して設定できるようになり、より簡単にデータドリブンテストが実施できるようになっています。設定は、テストビューウィンドウなどでテストケースを選択した際に表示されるプロパティウィンドウで行うことができます。
静的コード分析機能
VSTDでは静的コード分析はマネージコード部分に限ればFxCopという解析ツールが用意されているだけでした。VSTS-DEでは、FxCopのルールの強化に加え、コードメトリクス分析機能が追加されています。
FxCopでは、規則(検証内容の集合)のセットに変更はありませんが、規則に含まれる規約(実際に検証を行うための定義情報)は、WPFなど最新のテクノロジーへの対応や、より細かい設定ができるようになどの変更が行われ、200種類以上の追加が行われています。一般的に「規則が大幅に追加されました」という場合には、「それぞれの規則に含まれる規約が大幅に追加されました」というのが正しい表現になりますので注意してください。
また、次の図6に示すコード分析の設定画面に、「生成されたコードから結果を表示しない」というチェックボックスが追加されているのも新しい点です。このオプションにより、Visual Studioが生成したソースコードを分析対象から外すことができるようになったため、従来よりもより重要な警告を発見しやすくなっています。
コードメトリクスは、ソースコードをクラス単位、メソッド単位で解析し、その構造の内容を数値で示すための機能です。VSTS-DEのコードメトリクス機能では以下の5つの指標を得ることができます。
- コード行
- クラス結合
- 継承の深さ
- サイクロマティック複雑度
- 保守容易性インデックス
少し補足をすると、サイクロマティック複雑度とは、メソッド内の実行経路数を示すための尺度で、条件分岐の数と複雑度を元に計算される数値です。VSTS-DE以外の品質検査系ツールにおいてもコードメトリクス機能がある場合には上記の上4つの情報を得る機能は大抵揃えているのではないかと思います。保守容易性インデックスはMicrosoftが自社内の調査において独自に設定したもので、さまざまな情報から決定される数値となっています。その他のデータは数値が低いほど成績が良いのに対し、保守容易性インデックスは数値が高いほど成績が良いという判断になりますので注意してください。次の図7はコードメトリクス分析を行い、上記5つのデータが表示されている画面です。
動的コード分析機能
動的コード分析機能はVSTDまでと同様にパフォーマンスプロファイラ機能が用意されています。大きな括りとしての変化はありませんが、パフォーマンスプロファイラは以下にあげるような機能強化が図られています。
- 64ビットサポート
- ホットパス分析
- WCFプロファイリングサポート
- レポート解析、分析効率の改善
- パフォーマンスカウンタサポートの強化
従来は、パフォーマンスプロファイリングは32ビットOS上で実行される32ビットアプリケーションのみをサポートしていましたが、VSTS-DEからは64ビットOS上で実行される32/64ビットアプリケーションをサポートするようになりました。ホットパス分析のホットパスとは、パフォーマンスの影響が最も大きい処理順(トレース)を示すもので、これによりボトルネックなどパフォーマンスの影響となっている部分をより視覚的に確認することができます。また、分析対象としてWCFを利用しているアプリケーションも対象とすることができるようになっています。分析を行う際には、Windowsのパフォーマンスカウンタの収集などを指定して、レポート分析に役立てることもできます。
パフォーマンスプロファイリング実行後は、従来よりも効率的にレポートの分析が行われ、結果も見やすくなっています。また、過去のレポートと比較できるようになり、以前の分析結果に基づく変更がパフォーマンスにどのように影響を及ぼしているかを簡単に確認できるようになっています。