プロジェクトの設定


前述の「設定データの抽出」の項ではユーザのプロジェクトからファイル、Includes および、 Defines を抽出しPerforce QACプロジェクトに入力する方法について説明をしました。

基本的なプロジェクトに対しては、この説明で十分と思われます。 その他のもっと複雑なプロジェクトについては、ユーザは各コンポーネントに特定のオプションを設定する必要があることも考えられます。オプションのリストはコンポーネント特有になっており使用可能なオプションを判断するため関連するコンポーネントマニュアルを参照する必要があります。

コンポーネントオプションは以下の異なるレベルで設定することができます。

  • コンポーネントレベル:

    このレベルで設定されるオプションはコンポーネント/プロジェクトに対しグローバルな設定になります。プロジェクト全体または、かなりの部分に適用されるオプションはこのレベルで設定されるべきです。

    GUIではオプションは[プロジェクトプロパティ] > [解析] タブから設定することができます。

    CLIでのコンポーネントレベルの詳しいオプション設定の方法については、コンポーネントマニュアルの 
    qacli pprops」の項を参照してください。

  • ディレクトリレベル:

    このレベルで設定されるオプションはそのディレクトリ(および、サブディレクトリ)にあるファイルに特定されます。

    GUIでは、[ファイル]パネルでディレクトリを選択し、[解析オプション]サブパネルを使用してオプションを追加します。

    CLIでのディレクトリレベルの詳しいオプション設定の方法については、コンポーネントマニュアルの 「qacli project files」の項を参照してください。

  • ファイルレベル:

    このレベルで設定されるオプションはそのファイルに特定されます。

    GUIでは、[ファイル]パネルでファイルを選択し、[解析オプション]サブパネルを使用してオプションを追加します。

    CLIでのファイルレベルの詳しいオプション設定の方法については、コンポーネントマニュアルの 
    qacli project files」の項を参照してください。


解析オプションのサブパネルよりファイルおよび、フォルダにサードパーティであることを印すことができるようになりました(qacli についてはコンポーネントマニュアルのqacli project filesの項を参照してください)。また、[ファイル]パネル内において、プロジェクトをネビゲートするときに分かりやすいようサードパーティのファイル/フォルダに独特のアイコンをつけました。

フォルダ内でサードパーティのファイルと印されているファイルを非サードパーティのファイルとして扱うことは可能ですが、サポートはされません。サードパーティのフォルダ内のファイルはすべてサードパーティとして扱うべきです。

アイコンのついたファイルはスキャンされますが、クロスモジュール解析の結果のみが表示されます(データフローが有効になっている場合、最小限の設定が使用されます)。

この機能のユースケースの例としては、使用しているプロジェクトにベンダーからのコードが含まれており、そのコードを変更することはできないがグローバル変数の矛盾などクロスモジュールの問題があるかどうかを知りたいときなどがあげられます。


オプション(コンポーネント、ディレクトリ、ファイルの順で)はまとめられ、.via  ファイルに配置されます。コンポーネントはどのオプションを優先するかをこのファイルを使用して判断します。

オプションには以下の2種類があります。

  • 単一の値:単一の確定値をもつオプション。 例えば、'unsignedchar'

    .via  ファイルの最終の値が優先されるので、ファイルレベルの単一の値のオプションがディレクトリレベルの同様のオプションに優先します(ディレクトリレベルのオプションはコンポーネントレベルの同様のオプションに優先する)。

     
  • 累積的な値:複数の値をもつことができるオプション。 例えば、'forceinclude'

    累積的に増えることが可能なため、.via ファイルの最初の値が優先されます。もし、この機能が望ましくない場合、この振る舞いの回避の仕方については Perforce QAC for C/C++ または、関連するコンポーネントマニュアルのオプション -forgetall,-forget を参照してください。


ファイル/ディレクトリレベルでオプションを設定することはファイルベースで処理をするコンポーネントに対してのみ意味をなします。プロジェクト全体に対し処理を行うコンポーネント(RCMAMTAなど)に対しではファイル/ディレクトリレベルでオプションを設定するべきではありません。

可能な限り、オプションはコンポーネントレベルで設定されるべきです。それから、ディレクトリレベル、そして最後にファイルごとの設定となるべきです。複数のファイルに対し多数のオプションを設定することはメインの設定ファイルが過度に大きくなる原因となり、プロジェクトの処理能力に影響を与えます。