はじめに
Visual Studio 2005 Team System(以下、VSTS)には製品の品質を向上させる上で有効なテスト自動化の機能が付属しています。それらの機能の概要は『単体テストからパフォーマンス分析まで、VSTDでシステム開発を自動化しよう』で述べましたが、具体的な操作や実際に使用する上での注意点、さらにVSTSの連携機能を活かした使い方までは触れていませんでした。そこで今回はテスト自動化の機能のうち、Visual Studio 2005 Team Edition for Software Developersに用意されているマネージコードの分析機能について、操作方法と効果的な使い方を紹介します。
対象読者
- .NET Frameworkを利用した開発プロジェクトに携わっている人
- Visual Studio 2005 Team Systemに興味がある人
- コード分析およびFxCopに興味がある人
必要な環境と準備
- Visual Studio 2005 Team Edition for Software Developersがインストールされていること
使用の前に
VSTDのマネージコード分析機能を使う場合に、混乱しやすいキーワードがいくつかあるので先にそれを説明しておきます。本稿では、ここで説明した意図で言葉を使い分けますので、分かりにくくなった場合にはここに戻って内容を確認しながら読み進めてください。
名前 | 説明 |
規約 | コード分析で使用する1つ1つの決まりでIDを持っている。例えばIDがCA1804の規約の内容は「使用しないローカル変数を使用しない」である。 |
規則 | 規約をまとめるためのカテゴリ。グローバリゼーション規則やセキュリティ規則などの11種類がある。 |
ルール | 適用する規約の集合。プロジェクトによって適用する規約は異なると考えられるため、ルールとしてまとめて管理するのが望ましい。 |
とりあえずコード分析を行ってみよう
VSTSのマネージコード分析はビルド時に実行され、ソースコードに規約違反がないかをチェックし、違反が見つかった場合はビルドエラー、もしくは警告を出します。マネージコード分析は、実際にはアセンブリに対して分析を行っているため、セキュリティといった実行時の問題に関しても分析を行うことができます。では、とりあえず使ってみましょう。
まず足し算や引き算のような簡単なクラスライブラリを作成してみましょう。
using System; using System.Collections.Generic; using System.Text; namespace CodeZineSampleFxCop { public class Calculater { public Calculater() { } public int Addition(int i, int j) { return i + j; } } }
ソースはこの程度のものでかまいません。引数や変数もi
やj
といった適当なものにしてしまいましょう。次に、ソリューションエクスプローラからプロジェクトファイルをダブルクリックし、プロパティ画面を開きます。図1のようにコード分析のタブを開き、「コード分析の有効化」にチェックを付けてください。規則はいろいろ選択することができますが、とりあえずすべて選択しておきましょう。右側に「警告」という表示が見えますが、この部分を選択して警告をエラーに設定しなおしましょう。
設定ができたところでビルドを行ってみましょう。図3のように多数のエラーがエラー一覧ウィンドウに表示されると思います。
エラー一覧ウィンドウにはエラー内容の説明、エラーが起こったファイル名やプロジェクト名、エラーが起こった行などが表示されます。ファイルや行数が特定されているエラーに関しては、個々のエラーおよび警告の修正を行う際にエラー一覧ウィンドウから修正対象を選択してダブルクリックするだけで修正箇所に移動することができます。ただし、他のエラーを修正するなどして、コード分析時とファイル内容に差異ができている場合には修正箇所付近(正確にはもともと修正されるべきエラーがあった行)に移動されます。具体的に修正例を1つ上げますと警告の5番目には、
CA1014:Microsoft.Design:CLSCompliantAttributeを伴って設定され、その値がtrueでなければなりません
と表示されています。この場合、「デザイン規則」の一つに違反している事を表しています。CA1014はアセンブリがCLS(Common Language Specification)に準拠していない場合に警告もしくはエラーが表示されます。解決方法ですが、「AssemblyInfo.cs」ファイルに[assembly: CLSCompliant(true)]
というコードを追加し、プロジェクトを再ビルドすることで警告を解除できます。