以前の解析ツールとの下位互換性の構成

Klocwork 2025.4 以降では、プロジェクトを以前の解析ツールバージョンにロックできるようになりました。そうすることで、古いプロジェクトとの下位互換性を維持しながら最新の Validate サーバーにアップグレードできるようになります。

プロジェクトレベルのロックの主要概念

  • プロジェクトを特定のバージョンの Klocwork 解析ツール (2022.4 以降) にロックすることができます。これは、ストリームファミリ全体に適用され、ベースプロジェクトで設定する必要があります。

  • 明示的にロックされていない場合、プロジェクトでは現在のバージョンの Validate が使用されます。

  • 下位互換性を確保しながら解析を実行するため、kwbuildproject、kwcheck、および kwciagent の代わりに統合ツール (kwanalysis) を使用することができます。

  • バージョン管理されているツールをホストするため、オプションの解析ツールストア (kwtoolstore および kwtoolstoreservice) を組み込みモードまたはスタンドアロンモードで使用することができます。

  • ブートストラップ環境用のラッパースクリプト (kwanalysis ラッパー) を生成することもできます。

プロジェクトをロックするメリット

プロジェクトをロックすることにより、以下のことが可能になります。

  • 特定の解析ツールバージョンに対してビルドを実行する

  • 複数の解析バージョンの集中管理を利用する

  • 従来のワークフローを壊すことなく、最新の Klocwork リリースにアップグレードする

  • 自動的なツールの取得とバージョンの推測を利用して、CI とデベロッパーセットアップを簡素化する

  • ラッパースクリプトを使用すると、事前にインストールされたツールを必要とせずに (Java とラッパーのみ必要) オンボーディングが可能であるため、デベロッパーワークステーションからビルドサーバー、CI パイプライン、完全に一時的なマシンまで、あらゆる環境に最適です。このアプローチにより、管理者レベルのインストールが不要になり、便利に解析の準備をして実行できるようになります。

サポートされている Klocwork バージョンへのプロジェクトのロック

コマンド kwadmin analysis-tool-version または kwadmin lock-project を使用して、サポートされている任意の Klocwork バージョン (リリース 2022.4 以降) にプロジェクトをロックすることができます。ロックは、個々のストリームではなくプロジェクトレベルで適用されます。

選択肢 1:kwadmin analysis-tool-version を使用する

kwadmin analysis-tool-version --tool-version <version> --tool-location <tool_location> <project_name>

例:

kwadmin analysis-tool-version --tool-version 23.4 --tool-location /space/klocwork/23.4/buildtools MyProject

選択肢 2:kwadmin lock-project-version を使用する

kwadmin lock-project-version を使用するには、kwadmin がプロジェクトのロック先の正確なバージョンである必要があります。
kwadmin lock-project-version <project_name>

例:

kwadmin lock-project-version MyProject

ロック後は、以下のようになります。

  • Validate でプロジェクト名の横に バージョンタグ (たとえば、25.2) が表示されるようになる

  • ロック解除されたプロジェクトについては、バージョンタグがグレー表示され、デフォルトで最新の解析ツールが使用される

サブコマンド analysis-tool-version および lock-project-version の詳細については、kwadmin のドキュメントを参照してください。

プロジェクトが以前のバージョンの Klocwork にロックされているかどうかの確認

ここでは、プロジェクトが以前の解析ツールバージョンにロックされているかどうか確認する方法をいくつか紹介します。

  • Validate ポータル:プロジェクト名の横にあるバージョンタグを確認する

  • コマンドライン:

    • kwadmin list-projects -f

    • kwcheck list-projects -f または kwciagent list-projects -f

  • Klocwork Web API:プロジェクトメタデータに対するバージョン情報のクエリを実行する

以前の解析ツールでのビルドの実行

実行可能ファイル kwanalysis は、レガシー実行可能ファイル (kwbuildproject、kwcheck、kwciagent) を 1 つのインターフェイスに統合します。以下は、kwanalysis を使用してビルドを実行するためのマッピングです。

レガシーツール 新しい同等物
kwbuildproject <options> kwanalysis buildproject <options>
kwcheck <options> kwanalysis check <options>
kwciagent <options> kwanalysis ciagent <options>

kwanalysis <subcommand> --tool-version <version> --tool-location <tool_location> <options>
kwanalysis check --tool-version 23.4 --tool-location /space/klocwork/23.4/buildtools MyProject
kwanalysis buildproject --tool-version 23.4 --tool-location /space/klocwork/23.4/buildtools MyProject --tables-directory C:\Klocwork\My_tables
--url http://myserver:8080/myproject C:\Klocwork\kwinject.out

kwanalysis サブコマンドとオプションの詳細については、「kwanalysis」を参照してください。

(オプション) 解析ツールストアのセットアップと使用

解析ツールストアは、以下を対象とするオプションの配布ポイントです。

  • ビルドツール:kwbuildtools.<version>.linux64.zip または kwbuildtools.<version>.win64.zip

  • レガシー CI エージェントツール:kwciagent.<version>.linux64.zip または kwciagent.<version>.win64.zip (事前統合)

    注記:

    • 2024.2 以降では、kwciagent パッケージは kwbuildtools に統合されたため、別途ロードする必要がなくなりました。バージョン 2024.1 以前では、これらのプロジェクトでデスクトップツール (kwciagent または kwcheck) を使用する場合は kwciagent ツールパッケージをツールストアにロードする必要があります。

    • kwanalysis は、kwciagent 2024.1 以前を使用して、どちらのタイプ (CI エージェントまたはチェック) も実行することができます。

  • 認証ツール:kwauthtools.<version>.linux64.zip または kwauthtools.<version>.win64.zip

kwanalysis の実行時に呼び出すことができる複数のバージョンの解析ツールの保存場所です。

解析ツールストアのセットアップと使用については、「解析ツールストアの使用 」を参照してください。

(オプション) ラッパースクリプトの使用

ポータブル環境ブートストラップファイルを生成するラッパースクリプトを作成して、ローカルに事前にインストールされているツールを必要とせずに Java 解析が実行されるようにすることができます。

ラッパースクリプトは実行時に以下のことを行います。

  • 認証資格情報を検証し、必要なツールをチェックする

  • 不足しているビルドツールがある場合は、ツールストアからダウンロードする

  • 以下のような、重要な環境変数を設定する

    • PATH:最新の kwanalysis ビルドツールが含まれるように更新されます。

    • KW_PROJECT_NAME:解析対象のプロジェクトの名前。

    • KW_BUILDTOOLS_LOCATION:最新の kwanalysis ビルドツールが配置されているディレクトリ。

    • デフォルトの検証 URL:解析中に Validate サーバーに接続するために使用されます。

詳細については、「解析ラッパースクリプトの作成と使用」を参照してください。

ロックされているプロジェクトの移行

ロックされているプロジェクトを最新の Validate インストール環境に移行する場合は、以下の推奨事項を考慮に入れてください。

シナリオ 推奨事項

レガシーコマンドを使用して既存のスクリプトを終了する

スクリプト内のバイナリ名を kwbuildproject から kwanalysis buildproject に更新します。
複数のプロジェクトにわたるマルチバージョンビルドが必要 各プロジェクトについて専用のラッパースクリプトを使用して、対応するプロパティファイルをバージョン管理にコミットします。
エアギャップ環境 必要なツールを $KW_TOOLS_DIR ディレクトリに事前にシードして、外部ツールストアに対するアクセスを無効にします。詳細については、「解析ツールストアの使用 」を参照してください。
マルチ Validate フェデレーション スタンドアロンツールストアを構成し、すべての Validate インスタンスが含まれるように validate.urls リストを設定します。 詳細については、「解析ツールストアの使用 」を参照してください。
カスタムチェッカー 複数の環境にわたって一貫性を確保するため、パイプラインテンプレートで kwanalysis sync または kwanalysis --sync-checkers を強制します。

エンドツーエンドの例

この例では、ラッパースクリプトを使用して完全な解析を実行し、ビルドデータを挿入し、解析を実行し、結果をサーバーにロードする方法を示します。

プロジェクトのロックとラッパースクリプトのセットアップ

これらのステップはプロジェクトごとに 1 回、すべてオプションで実行します。

  1. プロジェクトをロックします。

    kwadmin analysis-tool-version --tool-version 25.2 --tool-location /opt/klocwork/25.2/buildtools MyProject
  2. ラッパースクリプトを生成します。

    kwanalysis wrapper --project MyProject
  3. 生成されたラッパーファイルをチェックインします。これらのファイルについては、「解析ラッパースクリプトの作成と使用」で説明しています。
    • Linux: source kwanalysisw.sh --application-token myAppToken123

    • PowerShell: 。.\kwanalysisw.ps1 --application-token myAppToken123

プロジェクトの解析

標準的な解析の実行には、このフローを使用します。

  1. プロジェクトをソース制御からチェックアウトします。

  2. ラッパースクリプトをソーシングします。

  3. build specification (ビルドスペック) を作成します。

    kwinject -w -o kwinject.out bash build.sh
  4. 解析を実行します。

    kwanalysis buildproject --project MyProject -f -o kw_tables kwinject.out

    解析中にカスタムチェッカーを同期する必要がある場合は、--sync-checkers を追加します。

  5. 結果を Validate にロードします。

    kwadmin load MyProject kw_tables
    

CI プロジェクトの解析

CI/CD 統合には、このフローを使用します。

  1. プロジェクトをソース制御からチェックアウトします。

  2. ラッパースクリプトをソーシングします。

  3. build specification (ビルドスペック) を作成します。

    kwinject -w -o kwinject.out bash build.sh
  4. CI エージェントのカスタムチェッカーを同期します (オプション)。

    kwanalysis deploy sync --tool-location /opt/klocwork/25.2/buildtools
  5. CI エージェント解析を実行します。

    kwanalysis ciagent --project MyProject --ci-build build_456

トラブルシューティング

プロジェクトのロックおよび以前の解析ツールとの下位互換性に関する問題を解決するには、以下の表を参照してください。

症状 考えられる原因 解決策
ビルド/CI ビルドのロードが拒否される ツールバージョンの不一致 (プロジェクトがロックされています) 正しいバージョンで実行するか、またはプロジェクトのロックを解除してから新しい該当のバージョンにロックする
ツールが自動的にダウンロードされない ツールストアの構成ミスまたは tool.store.ur の欠落 admin.conf または toolstore.properties および Validate ログを確認する
ラッパースクリプトによって環境変数が設定されない スクリプトがソーシングを介して実行されない サブシェルの実行ではなく、source またはドット呼び出しを使用する「解析ラッパースクリプトの作成と使用」を参照してください。
カスタムチェッカーの欠落 同期がトリガーされない --sync-checkers を追加するか、または kwanalysis sync を実行する
アーティファクトをツールストアにアップロードしようとするとパーミッションが拒否される ユーザーがプロジェクトルート管理者ではない 役割を調整するか、またはエスカレーションする
間違ったキャッシュディレクトリが使用される 意図せずに $KW_TOOLS_DIR が設定される 変数をエコーする (不要な場合は設定を解除する)