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 チェッカーは、 |
|
CERT.EXPR.MOVED_FROM.USE |
この CERT チェッカーは、オブジェクトがムーブされた後、再初期化される前に、そのオブジェクトが使用されていることを検出します。 |
|
CERT.EXPR.TEMP_OBJ.MOD |
この CERT チェッカーは、一時的な存続期間を持つオブジェクトへの書き込みを検出します。これは未定義の動作につながる可能性があります。このチェッカーは、モダンエンジンにのみ適用されます。 |
|
CERT.FIO.NO_POSITIONING |
この CERT チェッカーは、位置指定の関数呼び出しをせずに、同じ C++ ファイルストリームから入力と出力が交互に行われることを検出します。これは未定義の動作につながる可能性があります。 |
|
CERT.FIO.RESET |
Klocwork は、 |
|
CERT.STR_ACCESS.INVALID |
この CERT チェッカーは、 |
|
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 |
次の規則に対するチェッカーマッピングが追加または変更されました。
|
|
cert_c_all.tconf および cert_c_all_ja.tconf cert_c_rules.tconf および cert_c_rules_ja.tconf |
次の規則に対するチェッカーマッピングが追加または変更されました。
|
|
cert_cpp_rules.tconf および cert_cpp_rules_ja.tconf |
次の規則に対するチェッカーマッピングが追加または変更されました。
|
| cpp_core_guidelines_community.tconf および cpp_core_guidelines_community_ja.tconf |
次の規則に対するチェッカーマッピングが追加または変更されました。
|
|
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 |
次の規則に対するチェッカーマッピングが追加または変更されました。
|
| disa_stig_v5_cxx.tconf および disa_stig_v5_cxx_ja.tconf |
次の規則に対するチェッカーマッピングが追加または変更されました。
|
| disa_stig_v5_java.tconf および disa_stig_v5_java_ja.tconf |
次の規則に対するチェッカーマッピングが追加または変更されました。
|
| disa_stig_v5_cs.tconf および disa_stig_v5_cs_ja.tconf |
次の規則に対するチェッカーマッピングが追加または変更されました。
|
| hkmc_c.tconf および hkmc_c_ja.tconf |
次のカテゴリに対するチェッカーマッピングが追加または変更されました。
|
| hkmc_cpp.tconf および hkmc_cpp_ja.tconf |
次の規則に対するチェッカーマッピングが追加または変更されました。
|
| kw_quality_std_cxx.tconf および kw_quality_std_cxx_ja.tconf |
次のカテゴリに対するチェッカーマッピングが追加または変更されました。
|
| misra_cpp_2023.tconf および misra_cpp_2023_ja.tconf |
次の規則に対するチェッカーマッピングが追加または変更されました。
|
| pci_3_2_1_cxx.tconf および pci_3_2_1_cxx_ja.tconf |
次の規則に対するチェッカーマッピングが追加または変更されました。
|
| perforce_qac.tconf および perforce_qac_ja.tconf |
次のカテゴリに対するチェッカーマッピングが追加または変更されました。
|
コンパイラ
次のコンパイラのサポートを追加または改善しました。
- IAR iccarm
- TI c7000
- mwcceppc
- QNX
サポートされる C/C++ コンパイラの全リストについては、ビルド統合でサポートされる C/C++ コンパイラを参照してください。
ライセンス
Klocwork は、Reprise License Manager (RLM) をサポートします。
- 2025 ライセンスは、Klocwork2026.1 以降と互換性がありません。製品の最新バージョンを使用するには、license@perforce.com に連絡して新しいライセンスを取得してください。詳細については、サポートされる RLM のバージョンおよび RLM ドングルをサポートするオペレーティングシステムを参照してください。
- RLM コマンドラインユーティリティ
rlmstatは、Validate または 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 プラグインは提供およびサポートされなくなりました。