Auto CCTs

製品付属のStatic CCT と異なり、この方法で生成されたCCTは使用されたコンパイラオプション特有の設定を持ちます。

例えば、特定のC++標準規格をサポートする適切な設定はビルドシステムで使用されている--stdフラグに応じてCCT内に配置されます。

これにより、より正確な解析結果を出すことができますし、標準のCCTを手動で更新するよりも時間を短縮できます。生成されたCCTはユーザデータ領域に格納され、generated_cct_C.cct または、generated_cct_CPP.cct という名前が付けられプロジェクトフォルダにもコピーされます。

他のプロジェクトに対する新たなCCTを生成すると、ユーザデータ領域に格納されている前のプロジェクトのために作成されたCCTのテンポラリコピーが上書きされます。

すべての同期のタイプはCCTを生成することができますが、すべてが同じレベルのものを生成できるわけではなく、他にくらべて限りのあるものもあります。これは多くの要素に左右されます。通常、INJECTMONITOR が最も完成したCCTを提供します。

JSON および、BUILD_LOG 同期方法には以下の制限事項があります。

  1. 同期が子プロセスの検査(これはコンパイラが他のコンパイラのフロントエンドでしかない場合、不可欠)ができない場合、CCTの生成は失敗します。
  2. この方法の使用中に実行中のプロセスから環境に関する情報をコピーすることができないため、コンパイラを起動する必要があります。CCTの生成に失敗した場合、GUIにエラーが表示されます。CLI はリターンコード26を返します。

CCTの生成にはコンパイラの情報を取得するために必ずコンパイラを呼出す必要があります。これは JSON および、BUILD_LOG 同期メソッドを使用したときにも適用されます。

CCT の生成が有効になっている同期を実行するときにコンパイラの呼出しができない場合、同期は失敗します。


INJECT (またはMONITOR)を使用した同期の例

INJECTを実行スクリプトまたは、コマンドのパラメータとして使用することにより、ビルドプロセスが開始されます。ビルドが実行されるとプロセスがモニタされ、ソースファイルおよび従属情報が抽出され、指定されたPerforce QACプロジェクトに追加されます。

qacli sync -P . --type INJECT --generate-cct make

これにより、現在のディレクトリでLinux / UNIX 「make」コマンドが実行され、現在のディレクトリ内のすべてのビルドファイルと依存関係がPerforce QACプロジェクトに同期されます。

コンパイラがサポートされていない場合でも、同期処理は検知したファイルを追加しますが障害がレポートされ、コマンドはゼロでなエラーコードを返します。このコンパイラのサポートを以降のリリースで必要とする場合、ログレベルをTRACE にセットし、コンパイラの詳細と共にログファイルの結果を東陽テクニカに送付してください。

Auto CCTをサポートするコンパイラを表示するには、以下のコマンドを使用します。

qacli help -a 

使用するコンパイラはAuto CCTの生成に対応しているけれども、実行ファイル名が求められる形式でない場合、QAC_QAINJECT_PROG 環境変数により既存のフィルタに実行ファイルをマッピングすることが可能です。

例えば、GNU コンパイラの実行ファイル名が gcc100 である場合、実行ファイルは環境変数を gcc100=qa_gnu と設定することにより既存のGNUフィルタにマッピングすることができます。さらに、各設定間にカンマを加えることで複数のマッピングを指定することが可能です。例:

gcc100=qa_gnu,gcc101=qa_gnu