解析ツールストアの使用

解析ツールストアは、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

複数の解析ツールバージョンを管理するには、kwtoolstoreservice を kwtoolstore と組み合わせて使用します。

解析ツールストアのセットアップ

ツールストアは、組み込みモードまたはスタンドアロンモードのいずれかで設定できます。

組み込みモード: ツールストアは Validate サーバープロセス内でホストされます。シンプルなセットアップで使用する場合、ほとんどのお客様にツールストアのホスティング方法として推奨されます。

組み込みモード: ツールストアは Validate サーバープロセス内でホストされます。シンプルなセットアップで使用する場合、ほとんどのお客様にツールストアのホスティング方法として推奨されます。

組み込みツールストアをセットアップする

埋め込みツール ストアを設定するには:

  1. <project_root>/config/admin.conf に次の行を追加します。

    hosting.analysis.tool.store=true                        
  2. 検証サーバーを起動します:

    kwservice start  

独立したツールストアをセットアップする

複数のValidateサーバーを使用してスタンドアロンのツールストアをセットアップするには、次の手順に従います。Validateサーバーが1台しかない場合は、手順4に進んでください。

  1. Validate によって生成されたキーストア ファイルを次の場所に移動します。

    <projects_root>/store/toolstore.keystore
  2. ファイルをコピーして名前を変更します。このファイルを外部ツールストアディレクトリに移動し、一意の名前を付けます。例:
    <tool_store>/store/external/validate1.keystore
  3. 各サーバーでこのプロセスを繰り返します。各サーバーのtoolstore.keystoreファイルを外部フォルダにコピーし、ファイル名を変更して重複しないようにします。ファイル名は.keystoreで終わる必要がありますが、プレフィックスは任意の一意の識別子(validate2.keystore、validate3.keystoreなど)にすることができます。

  4. <project_root>/config/admin.conf に次の行を追加します。

    hosting.analysis.tool.store=false
    tool.store.url=<TOOL_STORE_BASE_URL>
  5. ツールストア サービスを初期化します。

    kwtoolstoreservice setup <tool_store_directory>
  6. <tool_store_directory>/config/toolstore.properties を設定してください。以下はSSLを有効にした設定例です。SSLの設定方法の詳細については、セキュアサーバー接続の使用をご覧ください。

    server.port=8088       // optional, changes default port for the store //
    management.port=8089   // optional, changes default management port for the store //
    
    # example for enabling SSL
    server.ssl.enabled=true
    server.ssl.key-store=keystore.p12
    server.ssl.key-store-password=<your passwword>
    server.ssl.key-store-type=PKCS12
    server.ssl.key-alias=myserver
    
  7. サービスを開始します。

    kwtoolstoreservice start

保存場所の設定

デフォルトで、ツールストアからダウンロードされた Klocwork ツールはローカルでプラットフォーム固有のディレクトリに保存されます。

  • Linux: ~/.klocwork/tools

  • Windows: %LOCALAPPDATA%/klocwork/tools

これらの場所は、ビルトイン解析ツールがインストールされている場所や、現在 Klocwork インストールが保存されているものと思われる場所とは異なります。

ツールストアのデフォルトの場所をオーバーライドしたい場合は、いずれかのプラットフォームで環境変数 $KW_TOOLS_DIR を設定してください。

コンテナ化された CI 環境では、$KW_TOOLS_DIR を永続ボリュームとしてマウントするのが最善策です。そうすることで、一時的なランナーを使用する場合にダウンロードが繰り返されなくなり、ビルドが迅速化します。

解析ツールのアップロードとダウンロード

以下のすべてのツールには、複数のバージョンの解析ツールをダウンロードする機能があります。

  • kwanalysis

  • kwanalysisw

  • kwtoolstore download

また、kwtoolstore コマンドを使用して、アップロード、リスト、削除も実行します。 upload サブコマンドと delete サブコマンドを実行できるのはプロジェクトルート管理者のみであることに注意してください。

kwtoolstore upload --url <VALIDATE_URL> kwbuildtools.23.2.0.66.linux64.zip
kwtoolstore delete --url <VALIDATE_URL> <artifact_name>
kwtoolstore list --url <VALIDATE_URL>
kwtoolstore download --url <VALIDATE_URL> <artifact_name> <target-directory> <dir>

詳細情報、サブコマンド、およびオプションについては、「kwtoolstore」を参照してください。

解析ツールの推測と自動ダウンロード

Klocwork は、ワークフローに基づいて、使用するツールバージョンを自動的に判別します。

  • 接続されているプロジェクトについては、kwbuildproject や kwciagent の実行時などに、サーバーが必要なツールバージョンを提供し、異なるバージョンのツールをブロックします。

  • kwanalysis を実行すると、まずはローカルキャッシュでツールがチェックされます。

  • ツールが不足しており、ツールストアが構成されている場合は、ツールが自動的にダウンロードされます。

  • --tool-version を使用して手動でバージョンを指定する場合は、その設定が自動推測よりも優先されます。

解析ツールストアの使用に関するベストプラクティス

ここでは、ご使用の環境を効率的かつ予測可能な状態に維持するためのベストプラクティスをいくつか紹介します。

  • --tool-version は、ステージング環境 (本番環境ではない) で管理されている複数のバージョンの比較を実行する場合を除き、強制しないようにしてください。

  • 以下のものをツールストアにシードしてください。

    • 現在のメジャーバージョン (すべてのマイナーリリースを含む)

    • 既存のプロジェクトを解析するために使用する任意のバージョン

  • CI パイプラインでの再現性のため、また、分散マシン (デベロッパーマシンなど) へのインストールのため、ラッパースクリプトを使用してください。

  • コンテナ化された CI パイプラインでは、冗長なダウンロードを緩和できるように永続性を確保するため、$KW_TOOLS_DIR を設定することをお勧めします。