方法: レイヤー図と照らし合わせて .NET コードを検証する
このトピックの内容は、次の製品に該当します。
Visual Studio Ultimate |
Visual Studio Premium |
Visual Studio Professional |
Visual Studio Express |
---|---|---|---|
レイヤー図と照らし合わせてコードを検証すると、アーキテクチャ制約を適用してコードの開発を進めることができます。 このタスクを実行すると、コード内の依存関係が図上の依存関係と比較されます。 レイヤー検証は、次のタスクを実行するうえでも役立ちます。
既存のコードと目的の設計との間の違いを確認する。
意図していたように整理されていない、または不用な依存関係があるコードを見つける。
提案された変更によって影響を受ける可能性がある依存関係を見つける。
たとえば、レイヤー図を編集して予測されるアーキテクチャの変更を表示した後、コードを検証して、影響を受ける依存関係を確認できます。 詳細については、「方法: 成果物からレイヤー図を生成する」および「レイヤー図: ガイドライン」を参照してください。
コードを別の設計にリファクターまたは移行する。
コードを別のアーキテクチャに移動したときに作業が必要なコード、または依存関係を見つけます。
コードを検証する前に、Visual Studio ソリューションに、レイヤー図のあるモデリング プロジェクトを少なくとも 1 つ含める必要があります。 レイヤー図は、システムのアーキテクチャを示し、名前空間、プロジェクト、およびその他の成果物を、論理グループ、抽象グループ、またはレイヤーに整理します。 これらのレイヤーは、システムの主要コンポーネント、またはこれらの成果物によって実行される主要タスクを示します。 これらのレイヤーを定義し、レイヤーと成果物をリンクし、これらの成果物間で目的の依存関係を示す必要があります。
注意
一部のタイプの成果物は、レイヤーにリンクすることはできますが、レイヤー図と照らし合わせた検証はサポートしていません。 成果物が検証をサポートしているかどうかを確認するには、レイヤー エクスプローラーを開き、成果物リンクの "検証をサポート" プロパティを調べます。 詳細については、「検証をサポートしていない成果物」を参照してください。
レイヤー図の生成方法の詳細については、次のトピックを参照してください。
C または C++ コードを検証するには、Microsoft Visual Studio 2010 Visualization and Modeling Feature Pack をダウンロードしてインストールします。
詳細については、「方法: レイヤー図と照らし合わせて C コードおよび C++ コードを検証する」を参照してください。
このトピックの内容
検証用のアセンブリおよびプロジェクトを手動で追加する
コードを任意のタイミングで手動検証する
ローカル ビルド時にコードを自動的に検証する
Team Foundation ビルド時にコードを自動的に検証する
レイヤー検証に関する問題をトラブルシューティングする
詳細については、次のトピックを参照してください。
検証時に分析されたアセンブリおよびプロジェクトへの参照は、モデリング プロジェクト内のレイヤー参照フォルダーに格納されます。 項目をレイヤー図にドラッグすると、対応するアセンブリまたはプロジェクトへの参照がこのフォルダーに自動的に追加されます。 また、検証用のアセンブリおよびプロジェクトを、ドラッグせずに、手動でレイヤー図に追加することもできます。
検証用のアセンブリおよびプロジェクトを手動で追加するには
ソリューション エクスプローラーで、モデリング プロジェクトまたは [レイヤー参照] フォルダーを右クリックします。次に、[参照の追加] をクリックします。
[参照の追加] ダイアログ ボックスで、アセンブリまたはプロジェクトを選択し、[OK] をクリックします。
コードを任意のタイミングで手動検証する
開かれているレイヤー図からコードを検証するには
図の画面を右クリックし、[アーキテクチャの検証] をクリックします。
注意
既定では、図を検証プロセスに含めるには、レイヤー図 (layerdiagram) ファイルの "ビルド アクション" プロパティが [検証] に設定されている必要があります。
発生したエラーは、[エラー一覧] ウィンドウに表示されます。 検証エラーの詳細については、「レイヤー検証エラーについて」を参照してください。
各エラーのソースを表示するには、[エラー一覧] ウィンドウでエラーをダブルクリックします。
注意
Visual Studio では、エラーのソースの代わりに依存関係グラフが表示されることがあります。 これは、レイヤー図で指定されていないアセンブリ上にコードの依存関係があるか、レイヤー図で指定された依存関係がコードにない場合に起こります。 依存関係グラフまたはコードを確認し、依存関係が必要であるかどうかを検証してください。 依存関係グラフの詳細については、「方法: グラフ ドキュメントを参照および操作する」を参照してください。
エラーを管理する方法については、「検証エラーの管理」を参照してください。
コマンド プロンプトからコードを検証するには
Visual Studio のコマンド プロンプトを開きます。
コマンド プロンプトを開くには、[スタート] ボタンをクリックし、[すべてのプログラム] をポイントします。次に、[Microsoft Visual Studio 2010] をポイントし、[Visual Studio ツール] をポイントし、[Visual Studio コマンド プロンプト (2010)] をクリックします。
次のいずれかを選択します。
ソリューションの特定のモデリング プロジェクトに対してコードを検証するには、次のカスタム プロパティを使用して MSBuild を実行します。
msbuild <FilePath+ModelProjectFileName>.modelproj /p:ValidateArchitecture=true
または
モデリング プロジェクト (.modelproj) ファイルとレイヤー図が入っているフォルダーを参照し、次のカスタム プロパティを使用して MSBuild を実行します。
msbuild /p:ValidateArchitecture=true
ソリューションのすべてのモデリング プロジェクトに対してコードを検証するには、次のカスタム プロパティを使用して MSBuild を実行します。
msbuild <FilePath+SolutionName>.sln /p:ValidateArchitecture=true
または
レイヤー図が入っているモデリング プロジェクトを必ず含むソリューション フォルダーを参照し、次のカスタム プロパティを使用して MSBuild を実行します。
msbuild /p:ValidateArchitecture=true
発生したすべてのエラーが表示されます。 MSBuild の詳細については、「MSBuild」および「MSBuild タスク」を参照してください。
検証エラーの詳細については、「レイヤー検証エラーについて」を参照してください。
検証エラーの管理
開発プロセスの実行中は、検証時に報告される一部の競合を抑制できます。 たとえば、既に解決したエラーや特定のシナリオに関連しないエラーを抑制できます。 エラーを抑制した場合は、Team Foundation で作業項目をログに記録することをお勧めします。
検証エラーの作業項目を作成するには
- [エラー一覧] ウィンドウで、エラーを右クリックし、[作業項目の作成] をポイントし、作成する作業項目の種類をクリックします。
[エラー一覧] ウィンドウで検証エラーを管理するには、次の操作を行います。
目的 |
手順 |
---|---|
検証中に選択したエラーを抑制する |
エラーを 1 つ以上選択して右クリックし、[検証エラーの管理] をポイントし、[エラーの抑制] をクリックします。 抑制されたエラーは、取り消し線付きで表示されます。 次回検証を実行したとき、これらのエラーは表示されません。 抑制されたエラーは、対応するレイヤー図ファイルの .suppressions ファイルで追跡されます。 |
選択したエラーの抑制を停止する |
抑制されたエラーを 1 つまたは複数選択して右クリックし、[検証エラーの管理] をポイントし、[エラーの抑制の停止] をクリックします。 次回検証を実行したとき、抑制されたエラーのうち選択したものが表示されます。 |
[エラー一覧] ウィンドウに、抑制されたすべてのエラーを再び表示する |
[エラー一覧] ウィンドウ内の任意の場所を右クリックし、[検証エラーの管理] をポイントし、[抑制されたエラーの表示] をクリックします。 |
[エラー一覧] ウィンドウで抑制されたエラーをすべて非表示にする |
[エラー一覧] ウィンドウ内の任意の場所を右クリックし、[検証エラーの管理] をポイントし、[抑制されたエラーの表示] をクリックします。 |
ローカル ビルド時にコードを自動的に検証する
ローカル ビルドを実行するたびにコードを自動的に検証する場合は、この方法を使用します。
ローカル ビルドからコードを自動的に検証するには
- テキスト エディターを使用してモデリング プロジェクト (.modelproj) ファイルを開き、次のプロパティを追加します。
<ValidateArchitecture>true</ValidateArchitecture>
または
ソリューション エクスプローラーで、1 つ以上のレイヤー図が含まれているモデリング プロジェクトを右クリックし、[プロパティ] をクリックします。
プロパティ ウィンドウで、モデリング プロジェクトの "アーキテクチャの検証" プロパティが [True] に設定されていることを確認します。
これには、検証プロセス内のモデリング プロジェクトが含まれます。
ソリューション エクスプローラーで、検証プロセスに使用するレイヤー図 (.layerdiagram) ファイルをクリックします。
[プロパティ] ウィンドウで、図の "ビルド アクション" プロパティが [検証] に設定されていることを確認します。
これには、検証プロセス内のレイヤー図が含まれます。
検証エラーの詳細については、「レイヤー検証エラーについて」を参照してください。 エラーを管理する方法については、「検証エラーの管理」を参照してください。
Team Foundation ビルド時にコードを自動的に検証する
目的の設計との競合の原因となるコードの変更を防止するには、Team Foundation ビルドおよびゲート チェックインで実行されるビルドにレイヤー検証を組み込みます (カスタムの MSBuild タスクを作成すると指定できます)。 検証エラーを収集するには、ビルド レポートを使用します。
Team Foundation ビルドの詳細については、次のトピックを参照してください。
ゲート チェックイン ビルドを作成する方法の詳細については、「ゲート チェックイン ビルドの定義と変更内容の検証」を参照してください。
Team Foundation ビルドの実行中にコードを検証するには
チーム エクスプローラーで、ビルド定義をダブルクリックし、[プロセス] をクリックします。
[ビルド プロセス パラメーター] の [コンパイル] を展開し、[MSBuild 引数] パラメーターに次のように入力します。
/p:ValidateArchitecture=true
詳細については、「既定のテンプレートを使用してビルドを定義する」を参照してください。
検証をサポートしていない成果物
レイヤー図と照らし合わせた検証をサポートしていない成果物には、C++ プロジェクト、Web サイト、Office ドキュメント、およびプレーンテキスト ファイルがあります。 そうした成果物をレイヤーにリンクさせることはできますが、検証プロセスではそれらは無視されます。 別々のレイヤー間に依存関係が表示されない場合、これらのレイヤーにリンクされているプロジェクトやアセンブリへの参照には、検証エラーは表示されません。 このような参照は、コードがこれらの参照を使用している場合を除き、依存関係と見なされません。
成果物で検証をサポートしているかどうかを確認するには
レイヤー図で 1 つ以上のレイヤーを選択し、選択したレイヤーを右クリックし、[リンクの表示] をクリックします。
レイヤー エクスプローラーで、[検証をサポート] 列を確認します。
成果物のリンクの値が false の場合、その成果物では検証をサポートしていません。
レイヤー検証に関する問題をトラブルシューティングする
レイヤー検証に関する問題とその解決方法について、次の表で説明します。 これらの問題は、コードと設計の間の競合によって発生するエラーとは異なります。 これらのエラーの詳細については、「レイヤー検証エラーについて」を参照してください。
懸案事項 |
原因 |
解決策 |
---|---|---|
検証エラーが予期したとおりに発生しない。 |
検証はソリューション エクスプローラーの他のレイヤー図からコピーされたレイヤー図および同じモデリング プロジェクトのレイヤー図には機能しません。 この方法でコピーされたレイヤー図には、コピー元のレイヤー図と同じ参照が含まれます。 |
|