Klocwork 2026.3 の新機能

2026 年 9 月発行

Klocwork 2026.3 の主な特長は、以下のとおりです。Klocwork をアップグレードする場合は、アップグレードと使用方法に影響を与える可能性がある項目を制限事項で参照してください。

新機能と機能強化

このリリースには、次の機能強化が含まれています。

Web API からのプロジェクトインポートをキャンセルする

管理者は、Web APIを使用して、キューに入っている、または実行中のプロジェクトインポートをキャンセルできるようになりました。`import_project` アクションは対象のプロジェクトIDを返すようになり、`import_status` は「キャンセル中(cancelling)」および「キャンセル済み(cancelled)」という新しい状態を報告するため、操作の状況を追跡可能です。

詳細については、Web API を使用してプロジェクトをインポートするを参照してください。

kwbazel の機能強化を使用する

Kwbazel には、以下の実験的な機能強化が含まれています。

  • --aspect_build を使用すると、デフォルトの aquery ベースのワークフローに代わる方法として、aspect を用いて Bazel ビルドのビルドスペックを生成できます。

  • rules_foreign_cc を通じて make、CMake、または gmake にコンパイルを委譲する Bazel プロジェクトでは、--aspect_build を使用できます。Bazel 7.1 以降が必要です。

  • すでにビルドが完了している場合、--skip_build を使用すると、暗黙的な bazel build ステップをスキップでき、CI/CD パイプラインの時間を短縮できます。

  • 新しい --remote_executor および --remote_cache 引数により、Bazel ビルドをリモートで実行できます。--debug および --show_progress オプションによりデバッグを強化できます。

  • Klocwork は、Bazel 7、Bazel 8、および Bazel 9 で MODULE.bazel (bzlmod) ベースの Bazel プロジェクトをサポートするようになりました。WORKSPACE ベースの Bazel プロジェクトは、Bazel 6 および Bazel 7 で引き続きサポートされます。

ビルド中の LDAP 接続回復を改善する

Klocwork では、接続が切断された場合に LDAP リクエストを再試行するようになりました。最初のリクエストで失敗とするのではなく、新しい接続を確立してビルドを続行できます。これにより、通常の運用中に LDAP 接続が切断される可能性がある環境においても、ビルドの継続性が向上します。

kwxsync --module でプロジェクトをより高速に同期する

kwxsync --module を実行すると、クロスプロジェクト同期操作の対象を、ソースプロジェクト内の単一モジュールに属する指摘のみに限定できます。処理する指摘数が少なくなるため、同期時間を短縮できます。

詳細については、Kwxsyncを参照してください。

パフォーマンス

今回のリリースでは、以下について性能を改善しました。

  • kwant
  • kwcheck
  • kwciagent
  • kwgcheck
  • kwgradle
  • kwgradlew
  • kwmaven
  • kwmavenw

Visual Studio Code を Perforce SA MCP サーバーに接続する

スタンドアロンおよび PAG バンドル型のデプロイメント環境において、Visual Studio Code を Perforce SA MCP サーバーに接続する機能が追加されました。ドキュメントには、以下の内容が記載されています。

  • リモート接続の設定
  • アプリケーショントークンによる認証
  • 構成プロパティ
  • 前提条件とトラブルシューティング
  • ローカル MCP 構成からの移行

詳細については、Perforce SA MCP サーバーのセットアップおよび Perforce SA MCP サーバーを構成するを参照してください。

静的解析の改善

Perforce SCA MCP サーバーで kwanalysis を使用する

Klocworkの解析を実行するためにAIアシスタントのコンテキストを離れる必要はなくなり、`kw_start_analysis`、`kw_analysis_status`、`kw_watch_analysis`といったツールを使用することで、MCP対応のAIアシスタントから直接、解析の開始、追跡、およびステータスの確認を行えるようになりました。

詳細については、Perforce SA MCP サーバーツールを参照してください。

VS Code 拡張機能で kwanalysis を使用する

VS Code 用の Perforce 静的解析拡張機能が、バージョンに依存しないローカル解析ワークフロー向けに kwanalysis をサポートするようになりました。拡張機能のローカル解析を構成または実行する場合は、kwcheck ではなく kwanalysis を使用します。

VS Code 拡張機能の構成については、Visual Studio Code 向け Perforce Static Analysis 拡張機能をお使いになる前にを参照してください。

JavaScript 解析でアップグレードされた ESLint を使用する

JavaScript 解析に使用されるバンドル版 ESLint が 8.57.1 にアップグレードされました。

関連するバンドル版 JavaScript 解析コンポーネントの更新とあわせて、リリース 2026.2 と比較して JavaScript 指摘数に差異が生じる場合があります。 これらの差異は、解析動作の変更を反映したものです。指摘が通知されずに失われたことを示すものではありません。

kwgradle と kwgradlew で Gradle 9 を使用する

Klocwork は現在、Kwgradle および kwgradlew で Gradle バージョン 3 から 9 までをサポートしています。Gradle 9 プロジェクトの場合は、Gradle デーモンの JVM として Java 17 以降を使用してください。

サポートされている Gradle および Java のバージョンについては、サポートされる Java ビルドツールを参照してください。

条件付き Read/Write ナレッジベースサポートで解析精度を向上する

Klocwork は、条件付き Read/Write (R/W) ナレッジベースエントリをサポートするようになりました。これにより、アナライザーは関数の副作用をより正確にモデル化できます。この機能はデータフロー精度を向上し、一部の UNINIT 関連ケースなどで特定の偽陰性の削減に役立ちます。この機能を有効にするには、KW_RW_CONDITIONAL 環境変数を 1 に設定します。この機能は追加解析を実行するため、有効にすると解析時間が増加する可能性があります。プロジェクトによっては、増加が大きくなる場合があります。

追加の場所から Java を解決する

Klocworkは、ValidateサーバーおよびJavaを必要とするKlocworkツールと共に、Java 17 JREを`_jvm`フォルダに同梱しています。

Klocworkツール、Validateサーバー、およびビルドの実行に使用されるJava JREのバージョンや環境変数については、「Java Virtual Machineの要件」を参照してください。

Klocwork ツールで Java 17 以降が必要になりました

以前はバンドルされた Java 8 ランタイムで実行されていた以下のツールは、Java 17 以降を必要とするようになりました。古い Java バージョンが使用されている場合、ツールは停止してエラーを表示します。

  • kwbuildproject
  • kwcheck
  • kwciagent
  • kwgcheck
  • kwant
  • kwmaven
  • kwmavenw
  • kwgradle
  • kwgradlew
  • kwadmin
  • kwxsync

今回のリリースでも、Klocworkは独自のJava 17ランタイムを同梱しており、これはKW_JAVAよりも優先して使用されます。このランタイムは将来のリリースで削除される予定ですので、今のうちにKW_JAVAをJava 17以降のJava実行ファイルに設定しておくことを推奨します。

プロジェクトを Java 17 に移行する必要はありません。JAVA_HOME には、プロジェクトのビルドに使用する Java のバージョンを設定してください。

詳細については、「Java 仮想マシンの要件」を参照してください。

コーディング基準

このリリースでは、以下の分類基準に関する規則と推奨事項について機能が強化されています。

  • 新しく導入されたカテゴリのチェッカーマッピングと LLM/AI 関連の弱点カテゴリのカバレッジを含む、OWASP Top 10 LLM 2026 C/C++、C#、Java 分類基準が追加されました。

  • MITRE の 2025 年版リストを反映した、CWE Top 25 2025 C/C++、C#、Java 分類基準が追加されました。

  • 残りの CERT C/C++ L2 規則のカバレッジが追加されました。

  • CWE 4.20 リリースに合わせて CWE ALL Java 分類基準が更新され、CWE ガイドラインのカバレッジが更新されました。

チェッカー

新しいチェッカー

チェッカー 説明

CERT.CONC.COND_MULTIPLE_MUTEX

この CERT チェッカーは、異なるミューテックスを持つ同じ POSIX 条件変数に対する待機を検出します。これは未定義の動作につながる可能性があります。

CERT.CONC.LOCK.NO_RELEASE_ON_EXCEPTION

この CERT チェッカーは、例外によって終了するパスを含め、すべての実行パスでロック解除されることが保証されていない、手動でロックされたミューテックスを検出します。

CERT.CTR.MUTABLE_PREDICATE

この CERT チェッカーは、標準ライブラリの操作が述語をコピーする際に状態変化が予期せぬ結果を引き起こす可能性のある、可変述語関数オブジェクトおよびラムダ述語を検出します。

CERT.CTR.PTR_ARITH_POLYMORPHIC

この CERT チェッカーは、配列添字を含むポインター演算が多態オブジェクトに対して使用されている場合を検出します。

CERT.DCL.ODR.CLASS_REDEFINITION

この CERT チェッカーは、翻訳単位をまたぐクラスまたは構造体の再定義 (one-definition-rule 違反) を検出します。

CERT.ERR.UNCAUGHT_STATIC_INIT

この CERT チェッカーは、構築、破棄、または初期化の際に、キャッチ可能なスコープの外で例外をスローする可能性のある静的オブジェクトおよびスレッドローカルオブジェクトを検出します。

CERT.EXCEPTION.SAFETY.ASSIGN_ORDER

この CERT チェッカーは、例外発生時にオブジェクトを安全でない状態に陥らせる可能性のある代入順序を検出します。

CERT.EXPR.MOVED_FROM.RANGE

この CERT チェッカーは、std::remove、std::remove_if、std::unique などの erase-remove アルゴリズムによって残されたムーブ元範囲内のコンテナー要素へのアクセスを検出します。

CERT.EXPR.MOVED_FROM.USE

この CERT チェッカーは、オブジェクトがムーブされた後、再初期化される前に、そのオブジェクトが使用されていることを検出します。

CERT.EXPR.TEMP_OBJ.MOD

この CERT チェッカーは、一時的な存続期間を持つオブジェクトへの書き込みを検出します。これは未定義の動作につながる可能性があります。このチェッカーは、モダンエンジンにのみ適用されます。

CERT.FIO.NO_POSITIONING

この CERT チェッカーは、位置指定の関数呼び出しをせずに、同じ C++ ファイルストリームから入力と出力が交互に行われることを検出します。これは未定義の動作につながる可能性があります。

CERT.FIO.RESET

Klocwork は、fgets() または fgetws() が失敗した後、文字列をリセットせずに使用するコードに対して、CERT.FIO.RESET チェッカーを追加します。

CERT.STR_ACCESS.INVALID

この CERT チェッカーは、basic_string の要素へのアクセスに無効な参照、ポインター、反復子が使用されていることを検出します。

CXX.EMPTY.CATCH

このチェッカーは、例外の処理、ログ記録、伝播を行わず、例外を暗黙に抑制してしまう空の例外ハンドラーを検出します。

ITER.RANGE.INVALID

このチェッカーは、C++ STL アルゴリズムに渡される無効な反復子範囲を検出します。これには、逆順の開始順序と終了順序や、別々のコンテナーからの反復子などが含まれます。

JAVA.SV.LLM.APIKEY.HC

このチェッカーは、機密情報の開示を防ぐため、LLM クライアント構成内のハードコードされた API キーを検出します。

JAVA.SV.LLM.CLIENT.NOTIMEOUT

このチェッカーは、タイムアウトが設定されていない LLM クライアント呼び出しを検出します。こうした呼び出しは、想定よりも長い時間リソースを消費する可能性があります。

JAVA.SV.LLM.INPUT.UNBOUNDED

このチェッカーは、LLM に渡される無制限の入力を検出します。こうした入力は、トークン使用量やその他のリソース消費量を増加させる可能性があります。

JAVA.SV.LLM.MODEL.DESERIAL

このチェッカーは、LLM 出力の安全でない逆シリアル化を検出します。

JAVA.SV.LLM.PROMPT.INJECTION

このチェッカーは、信頼されていないデータ (HTTP/サーブレット、ストリーム、DOM、SOAP、ソケット、Struts、AWT/Swing ソース) が LLM プロンプトに到達する場合を検出します。

JAVA.SV.LLM.PROMPT.SECRET

このチェッカーは、LLM プロンプトテキストに埋め込まれている、ハードコードされたシークレット値を検出します。

JAVA.SV.LLM.SAFETY.DISABLED

このチェッカーは、プロバイダーの安全フィルタリングを無効化する LLM クライアント構成を検出します。

JAVA.SV.LLM.TOOL.PRIV

このチェッカーは、認可チェックを強制しない特権的または破壊的な LLM ツールアクションを検出します。

JAVA.SV.LLM.VECTOR.NOFILTER

このチェッカーは、テナントスコープのフィルタリングが適用されていないベクトルクエリまたは検索クエリを検出します。こうしたクエリは、あるユーザーのデータを別のユーザーに公開する可能性があります。

NUM.OVERFLOW.DF.UNBOUNDED

このチェッカーは、制約のない値によってのみ違反する境界に達する可能性のある数値オーバーフローまたはラップアラウンドを報告します。これにより、NUM.OVERFLOW.DF で引き続き報告される具体的な値のケースとは別に、信頼できないソースによるオーバーフローをトリアージしたり調整したりできます。

変更されたチェッカー

チェッカー 説明

SV.EXEC

このチェッカーは、LLM レスポンステキストがオペレーティングシステムコマンドとして実行される場合に、そのテキストを信頼されていないソースとして扱うようになりました。

SV.PATH

このチェッカーは、LLM レスポンステキストがファイル名およびパス名の作成に使用される場合に、そのテキストを信頼されていないソースとして扱うようになりました。

SV.SQL

このチェッカーは、LLM レスポンステキストが SQL ステートメントに連結される場合に、そのテキストを信頼されていないソースとして扱うようになりました。

SV.XSS.REF

このチェッカーは、LLM レスポンステキストが反映 HTTP 出力に書き込まれる場合に、そのテキストを信頼されていないソースとして扱うようになりました。

Taxonomies

インストールの一部として、Klocwork チェッカーを MISRA、CWE、OWASP、DISA STIG などのコーディング標準にマップするカスタム分類基準ファイルがいくつか提供されています。

分類基準 改善

cpp_core_guidelines_community.tconf および cpp_core_guidelines_community_ja.tconf

C++ Core Guidelines 向けの新しい分類基準が追加されました。

autosar_cpp_18_10_strict.tconf および autosar_cpp_18_10_strict_ja.tconf

次の規則に対するチェッカーマッピングが追加または変更されました。

  • M18-0-3
  • M18-2-1

cert_c_all.tconf および cert_c_all_ja.tconf

cert_c_rules.tconf および cert_c_rules_ja.tconf

次の規則に対するチェッカーマッピングが追加または変更されました。

  • EXP35-C
  • FIO40-C
  • POS53-C

cert_cpp_rules.tconf および cert_cpp_rules_ja.tconf

次の規則に対するチェッカーマッピングが追加または変更されました。

  • CON51-CPP
  • CTR58-CPP
  • DCL60-CPP
  • ERR56-CPP
  • ERR58-CPP
  • EXP63-CPP
  • FIO40-C
  • FIO50-CPP
  • POS53-C
cpp_core_guidelines_community.tconf および cpp_core_guidelines_community_ja.tconf

次の規則に対するチェッカーマッピングが追加または変更されました。

  • R.12
  • R.22
  • R.23
  • ES.60
  • ES.84
  • ES.107
  • SL.io.2

cwe_all_cs.tconf および cwe_all_cs_ja.tconf

cwe_all_cxx.tconf および cwe_all_cxx_ja.tconf

cwe_all_java.tconf および cwe_all_java_ja.tconf

分類基準が大幅に再編成されました。

CWE 4.20のリリースに合わせて「CWE All Java」タクソノミを更新し、CWEガイドラインの網羅状況も最新のものに反映しました。

cwe_2025_top_25_cs.tconfおよびcwe_2025_top_25_cs_ja.tconf

cwe_2025_top_25_cxx.tconfおよびcwe_2025_top_25_cxx_ja.tconf

cwe_2025_top_25_java.tconfおよびcwe_2025_top_25_java_ja.tconf

MITREの2025年版リストを反映し、C/C++、C#、Java向けのCWE Top 25 2025分類を追加しました。

disa_stig_v5_cs.tconf および disa_stig_v5_cs_ja.tconf

次の規則に対するチェッカーマッピングが追加または変更されました。

  • V-222396 [APSC-DV-001980]
  • V-222566 [APSC-DV-001980]
disa_stig_v5_cxx.tconf および disa_stig_v5_cxx_ja.tconf

次の規則に対するチェッカーマッピングが追加または変更されました。

  • V-222648 [APSC-DV-003170]
disa_stig_v5_java.tconf および disa_stig_v5_java_ja.tconf

次の規則に対するチェッカーマッピングが追加または変更されました。

  • V-222604 [APSC-DV-002510]
disa_stig_v5_cs.tconf および disa_stig_v5_cs_ja.tconf

次の規則に対するチェッカーマッピングが追加または変更されました。

  • V-265634 [APSC-DV-002010]
hkmc_c.tconf および hkmc_c_ja.tconf

次のカテゴリに対するチェッカーマッピングが追加または変更されました。

  • C-FIO-005
hkmc_cpp.tconf および hkmc_cpp_ja.tconf

次の規則に対するチェッカーマッピングが追加または変更されました。

  • P-CON-002
  • P-CTR-004
  • P-DCL-011
  • P-ERR-007
  • P-ERR-009
  • P-EXP-011
  • P-STR-003
kw_quality_std_cxx.tconf および kw_quality_std_cxx_ja.tconf

次のカテゴリに対するチェッカーマッピングが追加または変更されました。

  • Suspicious Code Practices
misra_cpp_2023.tconf および misra_cpp_2023_ja.tconf

次の規則に対するチェッカーマッピングが追加または変更されました。

  • 6.2.3
pci_3_2_1_cxx.tconf および pci_3_2_1_cxx_ja.tconf

次の規則に対するチェッカーマッピングが追加または変更されました。

  • 6.5.1
perforce_qac.tconf および perforce_qac_ja.tconf

次のカテゴリに対するチェッカーマッピングが追加または変更されました。

  • Minor - Functions

コンパイラ

次のコンパイラのサポートを追加または改善しました。

  • IAR iccarm
  • TI c7000
  • mwcceppc
  • QNX

サポートされる C/C++ コンパイラの全リストについては、ビルド統合でサポートされる C/C++ コンパイラを参照してください。

ライセンス

Klocwork は、Reprise License Manager (RLM) をサポートします。

システム要件の変更

以下の環境のサポートが追加されました。

  • Amazon Linux 2023

  • Apache Commons Bean Utilities 1.11.0

  • Apache Derby 10.14.2.0

  • Apache log4j 2.26.1

  • Apache Tomcat 10.1.59

  • Bouncy Castle 1.85

  • CLion 2025.2 (2025.2.6.2まで)、2025.3 (2025.3.6.1まで)、2026.1 (2026.1.5まで)

  • Eclipse 4.2 (Juno) ~ 4.40 (2026-06)

  • ESLint 8.57.1

  • glibc 2.27から2.44

  • Google Chrome 140.x ~ 152.x

  • gradle/gradlew 3.x から 9.7.1 へ

  • Guava 32.0.1

  • jackson-databind 2.21.5

  • jakarta.servlet-api 6.0.0

  • JetBrains IntelliJ IDEA 2025.3 (2025.3.6.1まで)

  • Jetty 12.1.10

  • JQuery 3.7.1

  • jsoup 1.23.1

  • Logback 1.5.38

  • Maven Plugin API 3.8.1

  • MCP SDK 1.1.3

  • Microsoft Edge 140.x ~ 151.x

  • Mozilla Firefox 143.x ~ 154.x

  • Node.js 16.20.2

  • OpenJDK JRE 17.0.20_8

  • OpenSSL 3.5.7

  • Oracle Linux 9.8

  • Plexus 4.0.3

  • Spring AI 1.1.8

  • Spring Boot 3.5.16

  • SQLite 3.53.2

  • Visual Studio 2017 (v15.9.82 まで)、2019 (v16.11.59 まで)、2022 (17.14.39 まで)

  • Xerces 2.12.2

以下の環境のサポートが終了しました。

  • AlmaLinux 9 ~ 9.8、10 ~ 10.2

  • Amazon Linux 2

  • Apache Commons Bean Utilities 1.9.4

  • Apache Derby 10.10.1.1

  • Apache log4j 2.25.4

  • Apache Tomcat 10.1.49

  • Debian 11.0 ~ 11.11

  • ESLint 8.20

  • Expat 2.2.9

  • Fedora 42

  • Google Chrome 137.x ~ 139.x

  • Guava 31.1

  • Microsoft Edge 137.x ~ 139.x

  • Mozilla Firefox 140.x ~ 142.x

  • Node.js 16.16.0

  • OpenJDK JRE 1.8.0.372

  • OpenSSL 1.1.1c

  • SQLite 3.8.6

  • Ubuntu 18.04から18.04.6 LTSへ、20.04から20.04.6 LTSへ

  • VS Code 1.101.2 ~ 1.104.2

サポート対象のバージョンの完全なリストについては、システム要件を参照してください。

廃止

  • リリース 2026.3:同梱されている _jvm フォルダは、2026.4 で削除される予定です。アップグレード後も設定が正常に機能するよう、KW_JAVA または JAVA_HOME を設定してください。

  • リリース 2026.3+: Amazon Linux 2 は、2026 年 6 月の同プラットフォームに対する Amazon のサポート終了に伴い、サポート対象外となりました。現在は Amazon Linux 2023 がサポートされています。

  • リリース 2026.2+: Structure101 のサポートは 2024.3 で終了しました。

  • リリース 2026.1+: ハイブリッド解析エンジンは、Visual Studio 用 Klocwork プラグインから削除されました。

  • リリース 2025.4+: Visual Studio 2015 の延長サポート終了に合わせて、Visual Studio 2015 用 Klocwork Static Analysis プラグインは提供およびサポートされなくなりました。