このセクションの内容

プライマリ スコープの設定

テスト スコープは、dotTEST で解析するファイルのセットを定義します。-solution-project、および -website オプションを使ってプライマリ テスト スコープを指定できます。  また、-resource-include、および -exclude オプションを使ってスコープを絞り込むことができます。ソリューションまたはプロジェクトをプライマリ スコープとして指定する場合は、ソリューションまたはプロジェクトの構成とターゲット ラットフォームを指定します。コマンドは次のようになります。

dottestcli.exe -solution "C:\Devel\FooSolution\FooSolution.sln" -solutionConfig Debug -targetPlatform "Any CPU" -config "builtin://Critical Rules" -report "C:\Report"

-solution: 解析するソリューションへのパスを指定します (同じコマンドラインで複数のソリューションを指定できます)。

-solutionConfig: ソリューション構成を指定します。

-targetPlatform: ターゲット プラットフォームを指定します。

-config: 指定したテスト スコープで実行するテスト コンフィギュレーションを指定します。

IDE から解析を実行する場合、アクティブなエディターで開かれているソース ファイルは、ソリューション エクスプローラーで定義されたリソースより優先され、このファイルだけが解析されます。

resource オプションによるスコープの変更

-resource オプションを使用してプライマリ スコープを絞り込み、次のいずれかを指定できます。

  • ソリューション内のプロジェクトへのパス
  • プロジェクト内のファイルのディレクトリへのパス
  • ファイルへのパス

パスはソリューションに対する相対パスでなければなりません。Ant スタイルのワイルドカードを使用してリソースを指定できます。  ファイル システムに一致する絶対パスを指定したい場合は、「include および オプションを使用したスコープの変更」 を参照してください。

例:

ソリューション内の単一のプロジェクトをテスト 

dottestcli.exe -solution "C:\Devel\FooSolution\FooSolution.sln" -resource "FooSolution/QuxProject" -config "builtin://Demo" -report "C:\Report"

プロジェクト内の単一のディレクトリをテスト  

dottestcli.exe -solution "C:\Devel\FooSolution\FooSolution.sln" -resource "FooSolution/BarProject/QuxDirectory" -config "builtin://Demo"

単一のソース ファイルをテスト

dottestcli.exe -solution "C:\Devel\FooSolution\FooSolution.sln" -resource "FooSolution/BarProject/QuxDirectory/BazFile.cs" -config "builtin://Demo"

ソリューション フォルダー内の単一のプロジェクトをテスト

dottestcli.exe -solution "C:\Devel\FooSolution\FooSolution.sln" -resource "FooSolution/BarSolutionFolder/QuxProject" -config "builtin://Demo" -report "C:\Report"

ソリューションがない場合に単一のソース ファイルをテスト

-project オプションは、ソリューションが提供されていない場合にのみ使用してください。ソリューションの名前が分からないため、ソリューション パスは / で始まります。

dottestcli.exe -project "C:\Devel\FooSolution\FooProject.csproj" -resource "/FooProject/BarDirectory/QuxFile.cs" -config "builtin://Demo" -report "C:\Report"

include および exclude オプションによるスコープの変更

スコープにその他のフィルターを適用するには、-include および -exclude スイッチを使用します。

  • -include スイッチは、ファイル システムのパスに一致するファイルだけをテストするよう指定します。その他のファイルはスキップされます。
  • -exclude スイッチは、ファイル システムのパスに一致するファイルを除き、プライマリ スコープ中の全ファイルをテストするよう指定します。

Ant スタイルのワイルドカードを使用してリソースを指定できます。次のサンプルは、*.Tests ディレクトリの下にあるすべてのファイルを除外する方法を示しています。

dottestcli.exe -solution "C:\Devel\FooSolution\FooSolution.sln" -exclude "C:\Devel\FooSolution\*.Tests\**\*.*" -config "builtin://Demo" -report "C:\Report"

多数のファイルを -include/-exclude で指定する場合、リスト ファイル (*.lst) を作成し、そのリスト ファイルのパスを指定することもできます。*.lstファイルの各アイテムが個別のエントリとして扱われます。  

追加のアセンブリの指定

解析対象プロジェクトの依存関係を解決するのに必要な追加のアセンブリへのパスを指定するには、-reference スイッチを使用します。  ANT スタイルのワイルドカードおよび現在の作業ディレクトリからの相対パスを指定できます。

-reference C:\MySolution\ExternalAssemblies\*.dll -reference C:\MySolution\ExternalAssemblies\*.exe -reference C:\MySolution\ExternalAssemblies\**\*.dll -reference C:\MySolution\ExternalAssemblies\**\*.dll

「Unable to find reference assembly」というメッセージが表示された場合、-reference スイッチを使用してください。

ソース管理データに基づくファイル フィルターの定義

追加のファイル フィルターをセットアップすることで、ローカルで変更されたファイルまたは現在の作業ブランチで変更されたファイルだけに解析範囲を制限できます。これにより、ソース管理システムにコードをチェックインしたり、メインの開発ストリームにコードをマージする前に、最近のコードの変更で入り込んだバグを検出し、修正する作業に集中できるようになります。

デフォルトのスコープを変更すると解析をスピードアップできるいっぽうで、プロジェクトに含まれる他のリソースの情報を必要とするルールのレポートする違反に影響を与える可能性があります。特に、実行パスを解析したり、メトリクスを計算したり、重複コードをチェックしたりするルールは、スコープから除外されたファイルにアクセスできない場合、違反を誤検出したり、違反を検出できない場合があります。

そのため、すべてのルール違反が検出されるよう、定期的に全体スコープでの解析を実行するよう推奨します。シナリオの例としては、デスクトップで dotTEST を実行するときは限定されたスコープで解析し、サーバーでの自動化されたビルド時に全体スコープの解析を行うことが考えられます。

前提条件

ローカルで変更されたファイルの解析

解析のスコープをローカルで変更されたファイルだけに限定するには、.properties 設定ファイルに次のオプションを追加します。

scope.scontrol.files.filter.mode=local

現在の作業ブランチで変更されたファイルの解析

"master" や "trunk" などのメインの統合ストリームと異なっている現在の作業ブランチのファイルだけに解析のスコープを限定するには、.properties 設定ファイルに次のオプションを追加します。

scope.scontrol.files.filter.mode=branch

作業ブランチとメインの統合ストリームではなく別のブランチを比較したい場合、または特定のリビジョンと比較したい場合は、参照として使用するブランチまたはリビジョンの名前または ID を指定する必要があります。次の設定は、カスタムブランチ/リビジョンと異なっている現在の作業ブランチのファイルに解析スコープを限定します。

scope.scontrol.files.filter.mode=branch scope.scontrol.ref.branch=[name/ID of the custom reference branch/revision]

.properties ファイルで設定されたスコープ フィルター設定は、すべてのテスト コンフィギュレーションに影響を与えます。

スコープと作成者の設定」を参照してください。

別の方法として、テスト コンフィギュレーションで追加のスコープ フィルターを定義することもできます。それには、カスタム テスト コンフィギュレーションを作成し、適用するフィルターを指定します。「カスタム テスト コンフィギュレーションの作成」を参照してください。GUI で設定されたスコープ フィルターは、特定のテスト コンフィギュレーションにだけ適用され、.properties ファイルで設定されたスコープ フィルターによって上書きされます。


  • No labels