validate xsync
validate xsync コマンドは、指定するプロジェクトの間で、変更を加えたユーザーの ID と共に、指摘ステータスの更新とコメントを同期します。更新はすべて統合され、複数プロジェクトの同じ指摘は履歴も同じになります。
これは、ブランチの場合と同様に、プロジェクトがソースコードを共有する場合に有効です。開発者は、検出された指摘をソースファイルごとに 1 回のみ引用する必要があります。その後、validate xsync は、同じソースファイルを含む他のプロジェクトに変更を適用できます。また、--storage オプションを使用して validate xsync を段階的に実行することもできます。詳細は、以下の例を参照してください。
注意: --storage オプションと --last-sync オプションを一緒に使用することはお勧めしません。期待どおりに同期しない結果になる可能性があるためです。
プロジェクトは、さまざまなサーバーだけでなく、さまざまな projects_root ディレクトリに存在することができます。サーバーは、コンピューター名とポート番号の一意の組み合わせとして定義されます。
ストリームでの作業を使用している場合は、欠陥の引用を同期するために、個々のプロジェクトとベースプロジェクトの間で validate xsync を実行できます。これにより、ベースプロジェクトのストリームの欠陥もすべて同期されます。
前提条件
- 各サーバーは、'クロスプロジェクトの同期' パーミッションを持つユーザーが必要になります。初期設定では、プロジェクト ルート管理者とプロジェクト管理者は、このパーミッションが与えられています。これはプロジェクトのルート レベルのパーミッションなので、プロジェクト レベルで割り当てることはできません。
- validate xsync が接続し、アクセス制御メソッドが有効になっているすべてのサーバーに対しては、validate xsync を実行しているマシンで、'machine:port:user:token' の組み合わせ (たとえば、jsmith2.klocwork.com;8080;jsmith;e46db6b8582a) を指定するエントリが、'ltoken' ファイルで必要になります。特定のマシンでこのファイルのエントリーを生成するには、ユーザーは該当するサーバーごとに kwauth を実行し、適切なパーミッション: kwauth のあるアカウントでログインし、ユーザーのホームディレクトリでトークンを格納、更新します。
- 接続するユーザーは、特定の条件下でその役割が検証されます。「クロスプロジェクトの同期の実行」パーミッションのみを含む特別の役割を設定することをお勧めします。
同期を行おうとする際、ユーザーが指定された各マシンでこれを行うためのパーミッションを持っている場合のみ validate xsync が続行されます。ユーザーが適切なパーミッションを持たない場合は、システムは、適切なパーミッションを持たないユーザー名と共に、通過させなかったそれぞれのマシンのリストをログに記録し、validate xsync プロセスが終了します。
適切なアクセス制御メソッドのないマシンに接続し、ltoken ファイルにターゲットマシンのエントリがない場合、validate xsync を実行しているマシンにログインしているユーザーの名前が使用されます。validate xsync コマンドファイルで参照される各プロジェクトには、明示的な URL (http://jsmith:8080/project_A) または黙示的な URL (project_B) があります。プロジェクトに黙示的な URL がある場合、サーバーとポートは --url パラメータの値で指定される同一のサーバーとポートであると想定されます。
方法の詳細については、プロジェクト間の同期ステータス変更とコメントを参照してください。
ステータス優先度ファイルを使用するステータス矛盾の解決
同期化の間で、1 つの欠陥で複数のユーザーが異なるステータスを設定することができます。これは、多くのプロジェクトを同期し、多数のユーザーがいる組織ではより一般的ですが、どの組織でも起こりえます。Validate を使用すると、ステータス優先度ファイルを参照することで、組織は同期中にステータスの競合をうまく解決できるようになります。同期中は通常、システムは各コンポーネントおよびステータス変更のタイムスタンプを使用して、プロジェクト間の共有の経時的履歴を作成します。最新のタイムスタンプをもつステータスが、すべてのプロジェクトに適用されるステータスです。ステータス優先度オプションを使用するとき、最後の同期化から、指摘で複数のステータス設定がある場合、システムは、それぞれのステータスをファイルに指定された優先度と比較し、必要に応じて最高の優先度を指摘に適用します。作動方法:
- システム管理者が、すべての指摘ステータスの数字またはランク付けされたリストを定義する、ステータス優先度ファイルを作成します。これは、競合を解決するためにシステムが使用するファイルです。
- ビルドプロセスまたはシステム管理者は、validate xsync コマンドを実行し、--status-priority file オプションを含めます。このコマンドは、ステータス優先度ファイルの位置を指し示します。
- プロジェクトごとに、システムがステータス履歴を共通履歴にマージします。最後の同期化後に複数のステータスが 1 つの指摘に適用されている場合、システムは各ステータスとそれらのタイムスタンプに基づく関連コメントがあれば、それらのログを記録します。
- システムは、ステータス優先度ファイルで定義されているように、適用されている最後のステータスが最高の優先度があるかどうか検証します。
- 適用されている最後のステータスに最高の優先度がある場合、システムは何も実行しません。適用されている最後のステータスが他のステータスのどれかよりも低い場合は、システムは指摘のステータスを変更して、その指摘に最高の優先度が付きます。システムはもう 1 つエントリを生成して、それをタイムラインに挿入します。システム生成エントリのタイムスタンプは、以前のステータスに 1 秒加えたタイムスタンプです。
- すべてのプロジェクトが同期されるまで、システムは同じ方法でそれ以降のプロジェクトをマージします。
ステータス優先度ファイル内で、最低の優先度の指摘ステータスには最小の番号が付けられ、最高の優先度の指摘ステータスには最大の番号が付けられます。ステータス優先度ファイルは、以下の様な UTF-8 テキストファイルです
- スペースやコメントを含まない
- すべて大文字のステータス名を含み、その後に等号記号があり、数字があり、各行に 1 つのステータスになっている
- 各指摘ステータスに 1 ~ 8 の一意の番号を割り当てる
例えば、以下の構文を含むファイルを作成する場合は、システムは、他のステータスとの矛盾を解決するときに、Fix を最終ステータスとして適用します。
FIX=8 FIX_IN_LATER_RELEASE=7 FIX_IN_NEXT_RELEASE=6 DEFER=5 FILTER=4 IGNORE=3 NOT_A_PROBLEM=2 ANALYZE=1
以下の画像は、validate xsync により "Defer" から "Fix" に更新された指摘のステータス履歴を示します。システムが指摘ステータスを変更するたびに、"<validate xsync>" を含むようにエントリが履歴に追加されるため、システムが同期化中にステータスを変更したことが明らかになります。
使用方法
validate xsync [<options>] <project_name_1>|<project_URL_1> <project_name_2>|<project_URL_2> [...]
ここで、<options> は以下の表に示すいずれかのオプションです。
同期するプロジェクトのスペース区切りリストを指定します。指定したすべてのプロジェクト内の更新がすべて統合され、すべてのプロジェクトの同じ指摘は履歴も同じになります。
プロジェクトは名前または URL で指定することができます。プロジェクト URL は、http(s)://<klocwork_server_host>:<klocwork_server_port>/<project> という形式です。
Klocwork サーバーのセキュア接続が構成されている場合は、https:// を使用します。
例 1: 同一サーバー上でのプロジェクトの同期
validate xsync Project1 Project2 --last-sync "03-04-2015 18:31:00"
この例では、2 つのプロジェクトだけを指定します。プロジェクトは、デフォルトのホストとポート (localhost:8080) 上で実行している Validate サーバーを共有しているため、プロジェクト名のみを指定する必要があります。validate xsync は、Project1 で 2015 年 4 月 3 日午後 6 時 31 分以降に適用された指摘ステータスの更新とコメントをすべて見つけ出し、それらを Project2 にコピーします。また、同じことを Project2 から Project1 に対しても行います。
例 2: 複数サーバー上でのプロジェクトの同期
validate xsync http://server01.acme.com:8080/Project1 http://server01.acme.com:8080/Project2 http://serverxyz.acme.com:8080/Project3
この例では、2 つの Validate サーバー上にある 3 つのプロジェクトを同期します。これらのプロジェクトを指定する最も簡単な方法は、それぞれのホスト、ポート、プロジェクト名を明確に識別するプロジェクト URL を使うことです。validate xsync は 3 つのプロジェクトを同期するため、プロジェクト内のすべての同一の指摘が同じ履歴を共有します。認証が有効な場合に、同期を実行するには、コマンドを実行するユーザーがすべての影響を受けるサーバーで認証されており、'クロスプロジェクトの同期の実行' パーミッションを持っている必要があります。validate xsync コマンドを実行する人は、影響を受けるサーバーごとに、認証データを含むローカルな ltoken ファイルを所有していなければなりません。適切に認証を受けるには、関連の各サーバーkwauthで kwauth を実行し、ユーザーのホームディレクトリにトークンを格納する必要があります。
例 3: プロジェクトを増分的に同期させるための、--storage オプションの使用
validate xsync --storage my_storage_file http://host:8080/zlib http://host:8080/zlib2 http://host2:8082/zlib
この例では、同期情報を永続的に格納し、同時に 3 つのプロジェクトを同期させるファイルが指定されます。このコマンドを初めて実行すると、システムは、すべての指摘ステータスの更新とコメントを、変更を行ったユーザーの ID と合わせて同期させます。このコマンドを、それ以降に実行すると、最新のステータス更新とコメントのみが同期され、かなりの量の時間が節約されます。--storage オプションの使用により、ツールを頻繁に実行させ、それぞれのデベロッパーが更新された指摘のリストを参照することを確実にできます。
例 4: --status-priority オプションを使用して、同期中にステータスの矛盾を解決
validate xsync --status-priority status-priority-file http://host:8080/zlib http://host:8080/zlib2 http://host2:8082/zlib
この例では、ステータスのランク付きリストを参照することで、システムが同期中にステータスの競合を解決できるようにするステータス優先度ファイルを指し示します。
オプション
名前 | 短い名前 | 説明 |
---|---|---|
--copy | -c | 1 つのソースプロジェクトから、1 つまたは複数の出力先プロジェクトへと引用をコピーします。ソースプロジェクトが、コマンドラインに指定される最初のプロジェクトです。1 つまたは複数の出力先プロジェクトは、ソースプロジェクトの右にスペースで区切って指定されます。例: --copy "srcproj" "destproj1" ["destproj2" ...] |
--dry | 「予行演習」を実行します。変更はコンソールに表示されますが、適用はされません。--output オプションも参照してください。方法の詳細については、"dry run" 同期の実行を参照してください。 | |
--full | -f | 完全同期を適用します。デフォルトでは、validate xsync は増分モードで動作します。 |
--help | このヘルプを表示します。 | |
--jobs <int> | -j | 使用するジョブ数を指定します。デフォルトは 5 です |
--last-sync <string> | 最終同期時刻。形式は "dd-MM-yyyy hh:mm:ss"。特定の日時後のステータス更新とコメントをすべてコピーするには、このオプションを使用します。これにより、データベースから抽出する情報量を削減してパフォーマンスを向上させることができます。 | |
--max-retry | validate xsync がサーバーとの接続を再試行する最大回数を指定します。デフォルトは 3 です。 | |
--output <file> | -o | 「予行演習」レポートの出力ファイルを指定します。このオプションを --dry と共に使用すると、validate xsync は、指定されたファイルに加えられるすべての変更のレコードを HTML 形式で出力します。validate xsync は、プロジェクトごとに HTML レポートを作成します。その際、プロジェクト名は出力ファイル名の一部となります。その際、プロジェクト名は出力ファイル名の一部となります。指定されない限り、HTML ファイル拡張子は追加されないことに注意してください。 |
--quiet | -q | コンソールのメッセージを非表示にします。 |
--report <file> | 同期レポートをテキストファイルにエクスポートします。同期レポートの情報については、同期レポートの生成を参照してください。 | |
--statuses <string> | 同期されるステータスのカンマ区切りリストを指定します。--statuses オプションを指定すると、指定ステータスの更新だけが同期されます。たとえば、--statuses "not a problem",ignore を指定した場合、"Defer" などのその他のステータスの更新はいずれも同期されません。使用できるステータスのリストについては、指摘ステータスを参照してください。 プロジェクト間で指摘ステータスを同期すると、現在の指摘ステータスは常に最新のタイムスタンプのステータスになります。特定の指摘に対する以前のすべてのステータス (つまり、最新でないタイムスタンプのステータス) は、指摘更新履歴に追加されます。 |
|
--status-priority <filename> | -sp | システムが指摘ステータス矛盾を解決するために使用するステータス優先度ファイルを指定します。このオプションは、既存のプロパティと組み合わせて使用可能です。 |
--storage | 同期情報を永続的に格納するファイルの場所を指定します。例: validate xsync --storage my_storage http://host:8080/zlib http://host:8080/zlib2 http://host2:8082/zlibこのオプションは、既存のプロパティと組み合わせて使用可能です。 たとえば、10.4 から 11.0 のように Validate の新しいバージョンにアップグレードした後は、古いストレージファイルを使用しないでください。代わりに、製品のアップグレードされたバージョンで使用する新しいストレージファイルを作成します。Validate は、新しいストレージファイルにすべての指摘ステータスの更新とコメントの履歴が変更を行ったユーザーの ID と合わせて含まれるようにデータを適切に移行します。 プロジェクトを他のサーバーに移動する場合はプロジェクトの URL を更新できるので、ストレージ ファイルを再構築する必要はありません。validate xsync ストレージファイルでのプロジェクト URL の名称変更を参照してください。 |
|
--url http(s)://<validate_server_host>:<validate_server_port>/ | Validate サーバーの URL。安全なサーバー接続が構成されている場合は、https:// を使用します。 | |
--version | バージョン情報を表示します。 |
終了コード
validate xsync コマンドを実行すると、システムは終了コードを生成します。リリース 11.0 では、終了コードは変更されました。詳細については、下のテーブルを参照してください。
終了コード | 説明 |
---|---|
0 | 成功。 |
1 | 壊滅的なエラー。たとえば、ジョブ起動時にサーバーが停止しました。 |
2 | 部分的成功。または、1 つまたは複数のプロジェクトの同期に問題がありましたが、他のプロジェクトは継続して更新中です。 |