qacli project files

Perforce QAC プロジェクトからソースファイルを追加または、削除します。 ファイル/フォルダ特有のコンポーネントオプションを操作します。

使用方法

project files  {-A <filelist>|-R <filelist>|-a|-r|-s|-e|-u|-x|-l} -P <directory> [-z <command>] [-p <priority>] [-C <cct-name>] [-Z] [-f] [-o <option-name>] [-v <option-value>] [-O <options-file>] [-F <filelist>] [-c <component key>] [--] [-h]

詳しい説明

ユーザのプロジェクトからソースファイルをPerforce QAC プロジェクトに追加します。 以降、追加されたファイルは解析されレポートされます。

ファイルまたは、フォルダベースの特定の解析オプションを指定することができます。その場合、コンポーネント全体に設定されていたオプションはオーバーライドされます。 

ユーザがどのファイルを優先して解析するかを指定することを可能にします。

オプション

オプション名、短縮形 デフォルト 説明
--add, -a   ファイルおよび(任意で)すべてのInclude/DefinePerforce QAC プロジェクトに明示的に追加します。
--add-list, -A   ファイルリストおよび(任意で)すべてのInclude/DefinePerforce QAC プロジェクトに明示的に追加します。
--analysis-priority, -p 0 プロジェクトにファイルを追加するときに、解析の優先度を設定します(32ビット int)。--addまたは --add-listとのみ併用できます。
--cct, -C   複数のCCTをもつプロジェクトでこのオプションを設定すると、ファイルに使用するCCTを明示的に指定することが可能になります。指定がない場合または、ブランクである場合、プロジェクトのデフォルトのCCTが使用されます。
--clear, -x   指定されたファイル/フォルダのすべてのファイル/フォルダレベルのオプションを削除します。
--compile-command, -z   コンパイララッピングモードでqacliを起動する際に使用するコマンドを指定します。 このコマンドは、qacliが抽出したデータを Perforce QAC プロジェクトに追加した後にファイルをコンパイルするために使用します。
--component, -c   コンポーネントの操作上のコツは <name>-<version>フォーマットで指定することです。バージョンが含まれていない場合、最新のコンポーネントバージョンを使用します。
--files, -F   このコマンドで使用するファイル/フォルダのリストを含むファイルへのパスを指定します。--set, --unset, --clear, --set-once, --list に適用します。
--folder, -f   特定のコンパイル従属関係を持つ任意のフォルダと共にPerforce QAC にフォルダを追加します。 フォルダの詳細は '--' オプションの後に記述する必要があります。
--help, -h   使用方法の情報を表示し、終了します。
--ignore-rest, --   このフラグ以降のラベルの付いた引数をすべて無視します。
--list, -l   指定されたファイル/フォルダに明示的に設定されたオプションの値を一覧表示します。
--optimize, -Z   プロジェクトの設定が保存される前に、プロジェクトのフォルダおよび、ファイルの依存関係を最適化します。
--option, -o   操作するオプションの名前。サポートされる操作:set、set-once、 unset
--options-file, -O   コンポネントオプションを含む有効なファイルへのパスを指定します。1行につき1オプション。'*'で始まる行は無視されます。
--qaf-project, -P . Perforce QAC プロジェクトへの有効なパスを指定します。
--remove, -r   ファイルおよび、関連するすべてのInclude/DefinePerforce QAC プロジェクトから明示的に削除します。
--remove-list, -R   ファイルリストおよび、関連するすべてのInclude/DefinePerforce QACプロジェクトから明示的に削除します。
--set, -s   所定の値 (--value)でコンポーネントオプション(--option)を設定します。
--set-once, -e   所定の値 (--value)でオプション(--option)を設定します- オプションがすでに設定されていない場合。複数指定オプションと使用すべきです。非複数指定オプションと使用すると、動作は --set とまったく同じになります。
--unset, -u   所定のオプションから値 (--value) を削除します。
--value, -v   オプションの値。

特定の優先順位とCCTをもつファイルを追加する

qacli project files -P . --add --analysis-priority 100 --cct gcc-13 -- -Isrc/ -Ithird/party/lib/include -DMACRO=1 src/foo.c 

このコマンドで記述されているIncludes/Definesをもつファイル foo.c を追加します。

このコマンドにはオプションのフィールド、解析の優先順位(= 100)および、CCT gcc-13(すでにプロジェクトに含まれている必要がある)があります。

ファイルを明示的に追加する

qacli project files -P . --add --analysis-priority 100 -- -Isrc/ -Ithird/party/lib/include -DMACRO=1 src/file.c

同じ名前のファイルがすでにプロジェクトに存在する場合、そのファイルは新しい引数データでアップデートされます。

複数のファイルを明示的に追加する

ファイルをファイルリストに含むことにより複数のファイルを追加することが可能になります(関連する Include/Define と共に)。

qacli project files -P . --add-list my-filelist

フォルダのアップデート

同期または、プロジェクトの最適化に続き、従属性のデータ(インクルードパス、マクロ定義)がプロジェクト内でフォルダと紐づけられます。 従属性のデータを含むフォルダ下にあるファイルは、この従属性を継承します。ゆえに、フォルダを直接変更するメカニズムがあると有用です。 以下の例のようにフォルダをアップデートすることが可能です。

qacli project files -P . --add --folder -- -Ithird/party/lib -DMACRO=1 src/

コンパイルコマンドスイッチとの併用はできません。 コンパイララッピングを参照してください。 引数リスト内で複数のフォルダを指定することが可能です。

フォルダに異なるCCTを使用する

通常ひとつのプロジェクトは各言語につきひとつのCCTを使用しますが、複数のCCTを使用することもできます。複数のCCTを持つプロジェクトの作成を参照してください。

Auto CCT を使用する場合、正しいCCTが正しいファイルに自動的に割り当てられます。あるいは、各ファイルまたは、ディレクトリに使用するCCTを明示的に指定することもできます。

ファイルごとに指定することもできますが、大きなプロジェクトの場合この方法は非常に時間がかかりますし、実用的ではありません。より一般的な方法は、フォルダごとに Default CCTを指定することです。例:

qacli project files -P . --add --folder --cct basic_c_cct -- -Ithird/party/lib 

このディレクトリ内とその下層に続く(CCTと同じ言語の)すべてのファイルはこのCCTを使用します。

ファイルを明示的に削除する

プロジェクト内でファイルが一貫していることを確認するための最も簡単な方法は、「qacli sync」コマンドを使用することです (qacli syncで説明されています)。 「qacli sync」コマンドは、必要に応じてファイルを追加および削除します。 また、必要に応じて特定のファイルを削除することもできます。例えば、

qacli project files -P . --remove -- src/file.c

複数のファイルを明示的に削除する

ファイルをファイルリストに含むことにより複数のファイルを削除することが可能です(関連するInclude/Define は任意)。

qacli project files -P . --remove-list my-filelist

フォルダの削除

ファイルと同様個々のフォルダを削除することも可能です。

qacli project files -P . --remove --folder -- src/

この方法でフォルダを削除すると、そのフォルダのディレクトリに直接格納されているファイルも削除されますが、子/サブフォルダは削除されません。

最適化

多くのファイルが一度にプロジェクトに追加、削除されたときには、プロジェクトの最適化処理をするとよいでしょう。 プロジェクトの最適化の詳細については、 プロジェクトの最適化を参照してください。

qacli project files -P . --optimize --add-list my-filelist

オプションの変更

オプションは一般的にコンポーネントのレべルで設定されています。この設定は異なる値でオプションを指定することでファイルまたは、フォルダ(および、後続するファイル)レベルのオプションとして変更することができます。

CLI ではオプションを直接変更するまたは、変更したいオプションと値のリストを指定することが可能です。

個々のファイル/フォルダを変更することも可能です。または、filelist にファイルリストを指定することもできます。

可能な限りオプションはコンポーネントレベルで設定されるべきです。それから、ディレクトリレベル、そして最後にファイルごとの設定となるべきです。 複数のファイルに対し多数のオプションを設定することはメインの設定ファイルが過度に大きくなる原因となり、プロジェクトの処理能力に影響を与えます。
以下の例ではファイルに対するオプションの変更について述べていますが、フォルダについても同様の変更が可能です。以下に示すすべてのファイルはファイルシステム階層(filesystem hierarchy)になっています。
以下の多くの例には --set オプションを使用していますが、--unset および、 --set-once  オプションも同様の方法で使用します。
単一ファイルに対する単一オプションの変更および表示

src/test_1.c ファイルに対し定義を1つ追加し、そのファイルのすべてのオプションを表示します。

qacli project files -P . --set --option d --value NAME=Baldrick --component qac -- src/test_1.c
qacli project files -P . --list --component qac -- src/test_1.c
複数のファイルに対する複数のオプションの変更および表示

複数のオプションを変更するにはoptions-list (options.lst) を作成し、それを複数のファイルに適用します。

options.lst:
-d NAME=Baldrick
-d IQ=10
qacli project files -P . --set --options-file options.lst --component qac -- src/test_1.c src/test_2.c
ファイル2つに対し、2つのオプションを変更する試みです。
qacli project files -P . --list --component qac -- src/test_1.c
-d NAME=Baldrick
-d IQ=10
複数のファイルに対するオプションの変更

複数のファイルに対し1つのオプションを変更するためには filelist (files.lst)にファイルのリストを挿入します。

files.lst:
src/test_1.c
src/test_2.c
qacli project files -P . --set --option d --value NAME=Baldrick --component qac --files files.lst
qacli project files -P . --list --component qac --files files.lst
* /home/steve/.config/Perforce/QAC-2022.1/samples/sample_mixsource-2022.1/src/test_1.c
-d NAME=Baldrick
* /home/steve/.config/Perforce/QAC-2022.1/samples/sample_mixsource-2022.1/src/test_2.c
-d NAME=Baldrick
複数のファイルに対する複数のオプションの変更

複数のファイル内の複数のオプションを変更するためにoptions-listfilelist と結合することができます。

qacli project files -P . --set --options-file options.lst --component qac --files files.lst
ファイル2つに対し、2つのオプションを変更する試みです。
qacli project files -P . --list --component qac --files files.lst
* /home/steve/.config/Perforce/QAC-2022.1/samples/sample_mixsource-2022.1/src/test_1.c
-d NAME=Baldrick
-d IQ=10
* /home/steve/.config/Perforce/QAC-2022.1/samples/sample_mixsource-2022.1/src/test_2.c
-d NAME=Baldrick
-d IQ=10
個々のオプションの削除

--unset オプションを使用して個々のオプションおよび値を削除することができます。上記の --set  オプションと同じフォーマットで記述することができます。例:

qacli project files -P . --set --option d --value NAME=Baldrick --component qac -- src/test_1.c
qacli project files -P . --unset --option d --value NAME=Baldrick --component qac -- src/test_1.c
qacli project files -P . --list --component qac -- src/test_1.c
すべてのオプションの削除

すべてのオプションを削除するには--clear オプションを使用します。

qacli project files -P . --set --option d --value NAME=Baldrick --component qac -- src/test_1.c
qacli project files -P . --clear --component qac -- src/test_1.c
qacli project files -P . --list --component qac -- src/test_1.c
filelist を使用することも可能です。
複数のコンポーネントでのオプションの変更

上記の全例ではオプションが適用されるコンポーネントが明示的に指定されています。 options-list (または、 --list option) を使用するときにはコマンドラインからコンポーネントを省くことができます。 options-lists ではファイルの最初のコラムがコンポーネントです。例:

component_options.lst:
qac -d NAME=Baldrick
qac -d IQ=10
namecheck -echo Namecheck
qacli project files -P . --options-file component_options.lst --set -- src/test_1.c
ファイル1つに対し、3つのオプションを変更する試みです。
qacli project files -P .  --list -- src/test_1.c
qac -d NAME=Baldrick
qac -d IQ=10
namecheck -echo Namecheck