プロジェクト間の同期ステータス変更とコメント
プロジェクト間同期ツール、kwxsync を実行すると、指摘ステータス変更およびコメントを、同じソースコードを共有する他のプロジェクトにコピーできます。これは、デベロッパーが、検出された指摘を 1 回だけ更新すればよいことを意味します。
前提条件
アクセス制御メソッド が設定されると (Basic、LDAP または NIS)、クロスプロジェクトの同期 (すなわち 'xsync') を行うユーザーは以下を行う必要があります。
- 各サーバーは、'クロスプロジェクトの同期' パーミッションを持つユーザーが必要になります。初期設定では、プロジェクト ルート管理者とプロジェクト管理者は、このパーミッションが与えられています。これは、プロジェクトのルート レベルのパーミッションです (したがって、それはプロジェクト レベルで割り当てることはできません)。
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
パラメータの値で指定される同一のサーバーとポートであると想定されます。
方法の詳細については、プロジェクト間の同期ステータス変更とコメントを参照してください。
ソフトウェア開発プロセスで kwxsync
がどのように役に立つかを示す例を挙げます。
- ソフトウェアモジュールは、ソースコードリポジトリのメイントランクにあります。このソースコードモジュール ProjectMain の Klocwork プロジェクトを呼び出します。
- バグが修正されるようこのソースコードモジュールの分岐を作成します。デベロッパーはメイントランクでの作業を継続します。
- 上に示すように、分岐の Klocwork プロジェクトを作成します。このプロジェクト ProjectBranch を呼び出します。
- ProjectBranch で Klocwork ビルド解析を実行します。
- デベロッパーは ProjectBranch で報告された指摘を調査します。一部の指摘のステータスを変更し、コメントを追加します。
- ProjectMain で Klocwork ビルド解析を実行します。この時点では、デベロッパーが ProjectBranch で実行している更新作業はどれも ProjectMain ビルド解析に表示されません。
kwxsync によるこの問題の解決方法
kwxsync を実行して、分岐からメイントランクへデベロッパーの変更をコピーすることができます。たとえば、次のようになります。
kwxsync ProjectBranch ProjectMain
kwxsync は最近のステータス変更とコメントを ProjectBranch から ProjectMain へ、そして、ProjectMain から ProjectBranch へ適用します。更新はすべて統合され、2 つのプロジェクトの同じ指摘は履歴も同じになります。
kwxsync の複数のプロジェクトを指定して、kwxsync を継続的に実行できるため、ソースコードを共有するすべてのプロジェクトを最新に保つことができます。kwxsync を継続して実行するには、それをループに呼び出します (バッチファイルのループなど)。--last-sync オプションを指定して kwxsync を継続して実行すると、パフォーマンスが向上します。
使用法、オプション、例については、kwxsync を参照してください。
プロジェクト間同期動作の詳しい例
指摘ステータスとコメントがどのように同期するかを確実に理解するには、次の例を検討してください。
ProjectMain とProjectBranch の 2 つのプロジェクトがあります。それぞれには、IssueMain、IssueBranch と呼ばれる同一のコード指摘が含まれています。デベロッパーは、これらの指摘を次のように引用しました。
Time | IssueMain | IssueBranch |
---|---|---|
@time1 | Fix -- "This is a problem" | |
@time2 | Ignore -- "This can be ignored" | |
@time3 | Not a problem -- "This is not a real problem" |
コマンド kwxsync ProjectMain ProjectBranch
を実行すると、IssueMain とIssueBranch の履歴全体をマージし、更新時間を確保します。その結果、IssueMain とIssueBranch の新規の更新履歴は、次のようになります (情報を一部省略)。
Time | IssueMain | IssueBranch |
---|---|---|
@time1 | Fix -- "This is a problem" | From ProjectMain: Fix -- "This is a problem" |
@time2 | From ProjectBranch: Ignore -- "This can be ignored" | Ignore -- "This can be ignored" |
@time3 | Not a problem -- "This is not a real problem" | From ProjectMain: Not a problem -- "This is not a real problem" |
dry run 同期の実行
変更前にプレビューする場合は、dry run を実行します。--dryオプションを使用しても、実際には kwxsync は指摘ステータス更新とコメントの同期をとりません。その代わり、これらの変更のリストをコンソールに出力します。
変更を HTML レポートに出力する場合は、--output オプションおよび --dry オプションを使用します。kwxsync は各プロジェクトの HTML レポートを作成し、プロジェクト名を出力ファイル名に含めます。たとえば、このコマンドを実行すると、次のようになります。
kwxsync --dry --output report.html Project1 Project2 Project3
kwxsync は次の3つのファイルを作成します: report_Project1.html、report_Project2.html、report_Project3.html。
同期レポートの生成
同期レポートを生成するには、--report <file>オプションを kwxsync コマンドラインに追加します。同期時に、または dry run の一部として同期レポートを作成できます。
例: 同期中のレポート作成
kwxsync --report report.txt Project1 Project2 Project3
例: "dry run" 中のレポート作成
kwxsync --dry --report report.txt Project1 Project2 Project3
同期レポートの形式
同期レポートは次の形式になります。
<unique_issue_id>;<project_name>;<project_issue_id>
kwxsync はそれぞれの検出された指摘に固有の ID を割り当てます。この検出された指摘は複数のプロジェクトに存在します。
それぞれの検出された指摘にもプロジェクト特有の ID があり、これが KKlocwork ポータルを使用したコードの管理で見る ID です。
サンプルの同期レポート
このサンプルは、zlib、zlib_br、zlib_trend の 3 つのプロジェクトの同期レポートを示しています。
14;zlib;1 4;zlib;2 8;zlib;3 5;zlib;5 6;zlib;6 7;zlib;4 1;zlib_trend;7 10;zlib_trend;1 11;zlib_trend;9 4;zlib_trend;2 8;zlib_trend;3 5;zlib_trend;5 6;zlib_trend;6 7;zlib_trend;4 2;zlib_trend;8 1;zlib_br;7 11;zlib_br;9 4;zlib_br;2 8;zlib_br;3 5;zlib_br;5 6;zlib_br;6 7;zlib_br;4 2;zlib_br;8
このデータを固有の指摘 ID でグループ化すると、すべてのプロジェクトで検出された固有の指摘のリストを取得できます。