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