解析ツールストアの使用

解析ツールストアは、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. Validate サーバーを起動します。

    kwservice start                        

スタンドアロンツールストアのセットアップ

複数の Validate サーバーを使用する場合にスタンドアロンツールストアをセットアップするには、以下のようにします。Validate サーバーが 1 台のみの場合は、ステップ 3 をスキップしてください。

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

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

    kwtoolstoreservice setup <tool_store_directory>
  3. Validate サーバーごとにキーストアファイルをコピーします。

    1. Validate によって生成されたキーストアファイルを <projects_root>/store/toolstore.keystore で見つけます。

    2. ファイルをコピーして名前を変更し、一意の名前を付けます。コピーを外部ツールストアディレクトリに移動します。たとえば、以下の場所に移動します。

      <tool_store>/store/external/server1.keystore

    3. このプロセスを Validate サーバーごとに繰り返します。各サーバーの toolstore.keystore ファイルを外部フォルダーにコピーして、ファイルが互いに上書きされないように名前を変更します。それぞれのファイル名は .keystore で終わる必要がありますが、接頭部は任意の一意の識別子またはサーバーの <domain>.<port> (たとえば、server2.keystorelocalhost.8088.keystore など) にする必要があります。

  4. <tool_store_directory>/config/toolstore.properties を構成します。以下に、SSL を有効にした構成の例を示します。SSL のセットアップの詳細については、「セキュアサーバー接続を使用する」を参照してください。

    server.port=8088       // optional, changes default port for the store. should match the port in your <TOOL_STORE_BASE_URL> //
    management.server.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
    
  5. サービスを開始します。

    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 を設定することをお勧めします。