このセクションでは解析のスコープを設定する方法について説明します。

テスト コンフィギュレーションのスコープの変更

デフォルトでは、C/C++test はテスト コンフィギュレーションを実行したときに選択されていたリソースを解析しますが、テスト コンフィギュレーションの [スコープ] タブにあるスコープ オプションを使用して、より狭いスコープを指定することもできます。「[スコープ] タブ - テスト対象のコードを定義する」を参照してください。

プロジェクト レベルでのスコープの変更

GUI でリソースを除外するか (「テストから除外するリソースの指定」を参照)、コマンド ラインでの解析実行時に -resource-exclude-include オプションを使用して (「コマンドライン インターフェイスからのテスト」を参照)、プロジェクト レベルでスコープを指定できます。

ソース管理システムのデータに基づいてファイル フィルターを定義する

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

ファイル フィルターを定義するには、次の方法があります。

ファイル フィルターを設定する前に、サポート対象のソース管理システムへの接続が適切に設定されていることを確認します。

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

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

詳細設定でファイル フィルターを設定する

フィルターを設定するには、次の操作を行います。

  1. 詳細設定ファイルを作成し、C/C++test 詳細スコープ設定を含めます。利用可能な設定の一覧については「Advanced Scope Settings」を参照してください。詳細設定ファイルの内容は、次のようになります。

    // ローカルで変更されたファイルだけに解析スコープを制限します
    // (ヘッダー ファイルを含む)。
    scope.scontol.files.filter.mode=local
    cpptest.scope.adjuster.cu.enabled=true
    // メインの開発ストリームと異なる現在の作業ブランチのファイル
    // (ヘッダー ファイルを含む) だけに解析スコープを制限します。
    scope.scontol.files.filter.mode=branch
    cpptest.scope.adjuster.cu.enabled=true
    // ブランチ "feature_372" と異なる現在の作業ブランチのファイル
    // (ヘッダー ファイルを含む) だけに解析スコープを制限します。
    scope.scontrol.ref.branch=feature_372
    cpptest.scope.adjuster.cu.enabled=true
  2. 詳細設定ファイルへのパスを指定します。「詳細設定ファイルの設定」を参照してください。

設定ファイルの詳細スコープ設定はすべてのテスト コンフィギュレーションに適用され、テスト コンフィギュレーションで指定されたスコープを上書きします。

詳細スコープ設定

設定説明
scope.scontrol.files.filter.mode=localローカルで変更されたファイルだけをチェックします。
scope.scontrol.files.filter.mode=branch参照ブランチのファイルと異なっている現在の作業ブランチのファイルだけをチェックします。デフォルトでは、参照ブランチは "master"、"trunk" などのメインの統合ストリームです。scope.scontrol.ref.branch を使用してカスタム ブランチを指定できます。
scope.scontrol.ref.branch=[branch or revision]変更されたファイルを検出および解析するために現在の作業ブランチと比較するブランチまたはリビジョンの名前または ID を指定します。scope.scontrol.files.filter.mode オプションに branch が設定されている場合に適用されます。
cpptest.scope.adjuster.cu.enabled=true

変更されたファイルと同じコンパイル ユニットに所属するすべてのファイルをチェックします。ソース ファイルとヘッダー ファイルの両方に適用されます。

C/C++test は、ヘッダー ファイルを直接解析できません。このオプションを使用すると、ヘッダー ファイルをインクルードするソース ファイルが変更されていない場合でも、変更されたヘッダーファイルが解析されるよう保証できます。

  • No labels