Klocwork 2026.1 の新機能
2026 年 3 月発行
Klocwork 2026.1 の主な特長は、以下のとおりです。Klocwork をアップグレードする場合は、アップグレードと使用方法に影響を与える可能性がある項目を制限事項で参照してください。
Klocwork と Validate の機能強化
このリリースには、次の機能強化が含まれています。
Perforce SCA MCP サーバーによる修正の迅速化
Perforce SCA MCP サーバーは、VS Code 拡張機能および GitHub Copilot Chat 拡張機能を含めて実装されています。静的解析データ (欠陥情報、修正の指針、チェッカードキュメントなど) を標準化された書式で AI アシスタントに提供して、規則に準拠したコード修正の正確かつ迅速な実装を可能にします。
詳細については、「Visual Studio Code での AI 修復の使用」および「(Undefined variable: PerforceSCAVariables.companySCA) MCP サーバーのセットアップ」を参照してください。
CI ビルドでのカスタム Quality Gate の適用
CI Quality Gate 機能を使用すると、ユーザーが自分で定義した基準に従って CI ビルドが合格か不合格かを自動的に判定できます。
Validate が CI ビルドごとにカスタム指摘クエリを適用して、結果に基づいて合格 (pass) または不合格 (fail) マークを付けます。CI ビルドで専用の Quality Gate ステータスが表示され、kwciagent や qacli などのツールが、合格、不合格、処理エラーのいずれかに対応する特定の終了コードを返します。
詳細については、「CI Quality Gate」を参照してください。
Klocwork での Rust コードの解析
Klocwork で Rust プロジェクトの早期アクセスサポートが提供されるようになり、Klocwork のネイティブ Rust チェッカーと統合 Clippy リンターの両方を使用して Rust コードを解析できるようになりました。
詳細については、「Rust 統合ビルド解析を実行する」を参照してください。
リバースプロキシのベース URL 構成の有効化
base.url プロパティを使用すると、Validate がリバースプロキシの背後に展開されている場合に正しい外部 URL を生成できるようになります。管理者は、Kwservice または validate service を使用して外部向けホスト名を構成し、すべてのリンク (CI ビルドリンク、ホストされるインストーラーダウンロード、API 参照など) が、内部サーバーの場所ではなく、外部からアクセス可能なアドレスをポイントするようにすることができます。‑
詳細については、「リバースプロキシの背後で Validate を使用する」を参照してください。
準拠レポートでの根拠の表示
準拠レポート全体での明確性と一貫性が確保されるようにするため、すべての指摘ステータスと欠陥ステータスの「根拠」フィールドを編集したり、有効にしたりすることができるようになりました。
Web API 検索における SARIF 形式での結果の取得
Web API 検索の結果を SARIF 形式で出力できるようになりました。
呼び出し構造、goto の使用、および再帰のための新しい HIS メトリックの追加
コード構造解析の適用範囲を改善するため、さらなる HIS メトリックが追加されました。詳細については、「関数レベルとメソッドレベルのメトリック」を参照してください。
C、C++、および C# の機能強化
Java の機能強化
このリリースでは Java 言語仕様バージョン 19 までがサポートされています。
プラグインと拡張機能
VS Code 用 MCP サーバーおよび Microsoft Copilot Chat 拡張機能を使用して、AI アシスト機能によってコードの欠陥を修正できるようになりました。
コーディング標準の適用範囲を拡大
今回のリリースでは、以下の分類ルールと推奨事項が強化されています。
-
HISメトリクス(カバー率100%)
-
MISRA C:2023 必須ルール(カバー率100%)および必要ルール
-
MISRA C:2025 必須ルール(カバー率100%)および必要ルール
-
OWASPトップ10:2025年
チェッカーの改善
このリリースには、新規および修正された C/C チェッカーと Rust チェッカーが含まれています。一部のチェッカーはモダンモードの解析エンジンでのみ機能します。モダン専用チェッカーはドキュメントではっきりと確認できます。
新しいチェッカー
このリリースでは、以下のチェッカーが追加されました:
| チェッカー | 説明 |
|---|---|
| MISRA.GENERIC_SELECTION_HAS_SIDE_EFFECT.2023 | この MISRA チェッカーは、マクロから展開されていない汎用選択で制御式に潜在的な副作用が含まれている場合にフラグを立てます。 |
| MISRA.INIT.ATOMIC.2023 | この MISRA チェッカーは、アトミックオブジェクトがアクセスされる前に適切に初期化されているかどうかチェックします。 |
| MISRA.GENERIC.ASSOCIATION_APPROPRIATE_TYPE.2023 | この MISRA チェッカーは、lvalue 変換後に _Generic 関連付けで選択できない型を検出します。 |
| MISRA.GENERIC.ETYPE.2023 | この MISRA チェッカーは、汎用選択の制御式の本質型がその標準型と一致するかどうかチェックします。 |
| MISRA.GENERIC_DEFAULT_POSITION.2023 | この MISRA チェッカーは、デフォルトの関連付けが関連付けリストの先頭と最後のどちらにあるかチェックします。 |
| MISRA.LANG.OBSOLESCENT.UNGETC_STREAM_START.2023 | この MISRA チェッカーは、廃止されたものとみなされる C 言語機能の使用、特に、呼び出し前のファイル位置インジケータがゼロであるバイナリストリームでの ungetc の使用を検出します。 |
| MISRA.NORET.VOID.2023 | この MISRA チェッカーは、_Noreturn によって宣言される関数の戻り値の型が void であるかどうかチェックします。 |
| MISRA.OBJ_ALIGNAS_INCONSISTENT.2012 | この MISRA チェッカーは、オブジェクトのすべての宣言で同じ明示的なアライメントを指定しているかどうかチェックします。 |
| RS-CLIPPY.* |
これらの Clippy ベースの Rust チェッカーは、Rust プロジェクトコントリビューターによって作成される Clippy リントです。 完全なリストについては、「Rust チェッカーリファレンス」を参照してください。 |
| RS.DBZ.CONST.CALL | この Rust チェッカーは、明示的に指定された定数 0 が関数呼び出しに直接渡されるかどうかチェックします。 |
| RS.DBZ.GENERAL | この Rust チェッカーは、値 0‑の変数が後で非ゼロチェックなしで除数として使用されるかどうかチェックします。 |
| RS.DBZ.GENERAL.FLOAT | この Rust チェッカーは、値‑0‑の浮動小数点変数が後で非ゼロチェックなしで除数として使用されるかどうかチェックします。 |
| RS.DBZ.ITERATOR | この Rust チェッカーは、値が 0 になるループ反復子が後で非ゼロチェックなしで除数として使用されるかどうかチェックします。 |
| RS.DBZ.ITERATOR.FLOAT | この Rust‑チェッカーは、値が 0 になる浮動小数点ループ反復子が後で非ゼロチェックなしで除数として使用されるかどうかチェックします。 |
| RS.DBZ.PANIC.UNCONDITIONAL | この Rust チェッカーは、ゼロ除算の場合に、Rust コンパイラが無条件呼び出しをパニック関数に挿入しているかどうかチェックします。 |
| RS.NPD.CHECK.CALL.MIGHT | この Rust チェッカーは、null チェックされたポインターが、その後、null チェックなしでそれを逆参照する可能性のある関数に渡されるかどうかチェックします。 |
| RS.NPD.CHECK.CALL.MUST | この Rust チェッカーは、null チェックされたポインターが、その後、null チェックなしでそれを逆参照する関数に渡されるかどうかチェックします。 |
| RS.NPD.CHECK.MIGHT | この Rust チェッカーは、null チェックされたポインターが、その後、null チェックなしで逆参照される可能性があるか、またはそれを逆参照する可能性のある関数に渡されるかどうかチェックします。 |
| RS.NPD.CHECK.MUST | この Rust チェッカーは、null チェックされたポインターが、その後、null チェックなしで逆参照されるか、またはそれを逆参照する関数に渡されるかどうかチェックします。 |
| RS.NPD.CONST.CALL | この Rust チェッカーは、null‑ポインター定数が null チェックなしでそれを逆参照する関数に渡される可能性があるかどうかチェックします。 |
| RS.NPD.CONST.DEREF | この Rust チェッカーは、null‑ポインター定数が直接逆参照されるか、それとも関数呼び出しを使用して逆参照されるかチェックします。 |
| RS.NPD.FUNC.CALL.MIGHT | この Rust チェッカーは、null を返す可能性がある関数呼び出しによって取得されたポインターが、それを null チェックなしで逆参照する可能性のある関数に渡される可能性があるかどうかチェックします。 |
| RS.NPD.FUNC.CALL.MUST | この Rust チェッカーは、null を返す可能性がある関数呼び出しによって取得されたポインターが、それを null チェックなしで逆参照する可能性のある関数に渡されるかどうかチェックします。 |
| RS.NPD.FUNC.MIGHT | この Rust チェッカーは、null を返す可能性がある関数呼び出しによって取得されたポインターが、その後、null チェックなしで、逆参照される可能性があるか、またはそれを逆参照する可能性のある関数に渡されるかどうかチェックします。 |
| RS.NPD.FUNC.MUST | この Rust チェッカーは、null を返す可能性がある関数呼び出しによって取得されたポインターが、その後、null チェックなしで、逆参照されるか、またはそれを逆参照する関数に渡されるかどうかチェックします。 |
| RS.NPD.GEN.CALL.MIGHT | この Rust チェッカーは、null 定数に設定されるものと思われるポインターが、null チェックなしでそれを逆参照する関数に渡される可能性があるかどうかチェックします。 |
| RS.NPD.GEN.CALL.MUST | この Rust チェッカーは、null 定数に設定されるポインターが、null チェックなしでそれを逆参照する関数に渡されるかどうかチェックします。 |
| RS.NPD.GEN.MIGHT | この Rust チェッカーは、null 定数に設定されるポインターが、その後、null チェックなしで、逆参照される可能性があるか、またはそれを逆参照する可能性のある関数に渡されるかどうかチェックします。 |
| RS.NPD.GEN.MUST | この Rust チェッカーは、null 定数に設定されるポインターが、その後、null チェックなしで、逆参照されるか、またはそれを逆参照する関数に渡されるかどうかチェックします。 |
変更されたチェッカー
このリリースでは、以下のチェッカーに変更が加えられました。
| チェッカー | 説明 |
|---|---|
| ABV.STACK | 誤検知の検出が少なくなる |
| AUTOSAR.TYPE.QUAL.VOLATILE | 正しい AUTOSAR 規則が参照されるように、ドキュメントが更新されました。 |
| MISRA.CAST.INCOMPLETE_PTR_TO_ANY.2012 | 誤検知の検出が少なくなる |
| MISRA.FUNC.RECUR | 誤検知の検出が少なくなる |
| MISRA.LANG.OBSOLESCENT.REALLOC_ZERO_SIZE.2023 | cert_c_all.tconf 分類基準で規則 MEM04-C にチェッカーがマッピングされました。 |
| MISRA.PTR.ARITH | 誤検知の検出が少なくなる |
| MISRA.VAR.MIN.VIS | 誤検知の検出が少なくなる |
| RH.LEAK | 誤検知の検出が少なくなる |
| SV.FMT_STR.PRINT_FORMAT_MISMATCH.BAD | 誤検知の検出が少なくなる |
| UNINIT.CTOR.MUST | 誤検知の検出が少なくなる |
| UNINIT.STACK.MUST | 誤検知の検出が少なくなる |
有効または無効なチェッカー
このリリースでチェッカー構成ファイルのデフォルトの enabled フィールドに追加されたチェッカーはありません。
分類基準の改善
インストールの一部として、Klocwork チェッカーを MISRA、CWE、OWASP、DISA STIG などのコーディング標準にマップするカスタム分類基準ファイルがいくつか提供されています。
| 分類基準 | 改善 |
|---|---|
|
cert_c_all.tconf および cert_c_all_ja.tconf |
以下の規則でチェッカーマッピングを追加または修正しました。
|
| his_metrics_community.tconf |
メトリックマッピングを含む分類基準が以下のカテゴリに追加されました。
|
|
misra_c_2023_c11.tconf および misra_c_2023_c11_ja.tconf misra_c_2025_c11.tconf および misra_c_2025_c11_ja.tconf |
以下の規則でチェッカーマッピングを追加または修正しました。
|
|
misra_c_2023_c99.tconf および misra_c_2023_c99_ja.tconf misra_c_2025_c99.tconf および misra_c_2025_c99_ja.tconf |
規則 1.5 のチェッカーマッピングが追加または変更されました。 |
|
owasp_2017_10_cs.tconf および owasp_2017_10_cs_ja.tconf owasp_2017_10_java.tconf および owasp_2017_10_java_ja.tconf |
分類基準が廃止されました。 |
|
owasp_2021_10_js.tconf and owasp_2021_10_js_ja.tconf |
Klocwork 分類基準の命名基準に従って分類基準の名前が変更されました。 |
|
owasp_2025_10_cs.tconf and owasp_2025_10_cs_ja.tconf owasp_2025_10_cxx.tconf and owasp_2025_10_cxx_ja.tconf |
以下の規則のチェッカーマッピングを含む分類基準が追加されました。
|
|
owasp_2025_10_java.tconf and owasp_2025_10_java_ja.tconf
|
以下の規則のチェッカーマッピングを含む分類基準が追加されました。
|
|
owasp_2025_10_js.tconf and owasp_2025_10_js_ja.tconf
|
規則 A5-2025 のチェッカーマッピングを含む分類基準が追加されました。 |
|
owasp_2025_10_kt.tconf and owasp_2025_10_kt_ja.tconf
|
規則 A10-2025 のチェッカーマッピングを含む分類基準が追加されました。 |
|
owasp_2025_10_py3.tconf and owasp_2025_10_py3_ja.tconf
|
規則 A4-2025 のチェッカーマッピングを含む分類基準が追加されました。 |
| rs.base.tconf and rs.base_ja.tconf |
以下のカテゴリに、チェッカーマッピングを含む分類基準が追加されました。
|
| rs_clippy.tconf and rs_clippy_ja.tconf |
以下のカテゴリに、チェッカーマッピングを含む分類基準が追加されました。
|
サポートされているコンパイラへの改善
次のコンパイラのサポートを追加または改善しました。
-
Clang
-
GCC
-
QNX
サポートされる C/C++ コンパイラの全リストについては、「ビルド統合でサポートされる C/C++ コンパイラ」を参照してください。
ライセンス
Klocwork は、Reprise License Manager (RLM) をサポートします。
- 2024 ライセンスは、Klocwork 2025.1 以降との互換性がありません。製品の最新バージョンを使用するには、license@perforce.com に連絡して新しいライセンスを取得してください。詳細については、サポートされる RLM のバージョンおよび RLM ドングルをサポートするオペレーティングシステムを参照してください。
- Validate または RLM ライセンスサーバーパッケージからインストールできる RLM コマンドラインユーティリティ
rlmstat
システム要件の変更
以下の環境のサポートが追加されました。
-
Amazon Linux 2 (2.0.20260216.0 Update)
-
Android Studio Otter (2025.2.2 Patch 1 まで)、Panda (2025.3.2 まで)
-
CLion 2025.2 (2025.2.6 まで)、2025.3 (2025.3.3 まで)
-
Debian 12.13
-
Eclipse 4.38 (2025-12)
-
Fedora 42 ~ 43
-
Google Chrome 134.x ~ 145.x
-
Gradle 8.14.4
-
Java 18 および 19
-
Maven 3.9.12
-
Microsoft Edge 134.x ~ 145.x
-
Mozilla Firefox 136.x ~ 148.x
-
Oracle Linux 10 ~ 10.1
-
Red Hat Enterprise Linux 10 ~ 10.1
-
Rocky Linux 10 ~ 10.1
-
Ubuntu 24.04 ~ 24.04.4 LTS
-
Visual Studio 2022 (17.14.27 まで)
-
VS Code 1.100.3 ~ 1.110
-
Windows Server 2025
以下の環境のサポートが終了しました。
-
Fedora 41
-
Google Chrome 131.x ~ 133.x
-
Microsoft Edge 131.x ~ 133.x
-
Mozilla Firefox 133.x ~ 135.x
サポート対象のバージョンの完全なリストについては、「システム要件」を参照してください。
2026.1 におけるハイブリッド解析エンジンの削除
リリース 2026.1 以降では、ハイブリッド解析エンジンが Visual Studio 用の Klocwork プラグインから削除されました。
2025.4 における Visual Studio 2015 プラグインのサポート終了のお知らせ
Microsoft による Visual Studio 2015 の延長サポート終了に伴い、リリース 2025.4 からは、Visual Studio 2015 について、Visual Studio 用の Klocwork Desktop プラグインがサポートされなくなります。
2025.2 における準拠レポートの準拠ライセンスの廃止
リリース 2025.2 以降では、(サマリーではなく) 完全な準拠レポートを作成する際に準拠ライセンスが必要なくなりました。 準拠レポートの詳細については、「準拠レポートの作成」を参照してください。
2025.2 における kwmatch ユーティリティの廃止
リリース 2025.2 以降では、kwmatch ユーティリティが削除されました。以前のバージョンからアップグレードする場合は、プロジェクト分岐の管理にはストリームを使用し、指摘のプロジェクト間同期には kwxsync を使用することをお勧めします。
以前に特定のプロジェクトで kwmatch を使用してデータベースを作成し、それらのプロジェクトを 2025.2 以降に移行した場合、該当のデータベースは使用されなくなるため、削除することができます。
2025.2 における dbvalidate クリーンアップユーティリティの廃止
リリース 2025.2 以降では、dbvalidate クリーンアップユーティリティを直接実行できなくなりました。重複した指摘やコメントを削除するための一部の dbvalidate コマンドは、Klocwork サポートから特に指示があった場合は、引き続き使用することができます。
2025.1 におけるストリーム用の別個ライセンスの廃止
リリース 2025.1 以降では、ストリーム用の個別のライセンスは不要になりました。