Klocwork 2025.4 の新機能

2025 年 12 月発行

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

Klocwork と Validate の機能強化

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

従来よりも明瞭で明確なドキュメント

ドキュメントで、フォントと配色が更新されると共に、コードの強調表示やページレベルのナビゲーションなど、スタイルがアップグレードされて、容易に閲覧できるようになりました。

複数バージョンの解析ツールとの下位互換性の実現

新しいプロジェクトレベルのロックとバージョン非依存のアーキテクチャを利用して、古いプロジェクトとの下位互換性を維持しながら、最新の Validate サーバーにアップグレードできるようになりました。

プロジェクトを Klocwork バージョン 2022.4 以降にロックし、従来のツールバージョンを使用してビルドを実行し、新しい統合 kwanalysis 実行可能ファイルを活用してワークフローを簡素化することができます。オプション機能には、複数のバージョンをホストするための解析ツールストアや、事前にインストールされたツールを必要とせずに迅速にオンボーディングするためのラッパースクリプトが含まれます。

以前の Validate バージョンへのプロジェクトのロックの詳細については、「以前の解析ツールとの下位互換性の構成」を参照してください。

マルチバージョン管理のための解析ツールストアのセットアップ

オプションの解析ツールストアによって、複数のバージョンのビルドツールと CI ツールを一元管理して、アクセスと管理を向上させることができます。

ツールストアは、シンプルなセットアップの場合は組み込みモードで実行し、大規模なマルチ Validate 環境の場合はスタンドアロン モードで実行することができます。解析中のツールの自動ダウンロード、手動によるアップロード/一覧表示/削除操作、および CI パイプラインの永続キャッシュをサポートしています。この機能により、マルチバージョンワークフローが簡素化され、オンボーディングが迅速化され、分散環境全体で一貫したツールの可用性が確保されます。

解析ツールストアのセットアップと使用の詳細については、「解析ツールストアの使用」を参照してください。

新しいラッパースクリプトによるゼロインストール解析の実現

ラッパースクリプトを使用して、一時的な環境やコンテナ化環境での解析用にポータブルなゼロインストールオンボーディングを実現できるようになりました。

ラッパーは、自動的に資格情報を検証し、不足しているツールを解析ツールストアからダウンロードして、シームレスな実行に必要な環境変数を設定します。複数の認証方法をサポートし、インタラクティブワークフローと CI/CD ワークフローの両方で機能します。

詳細については、「ラッパースクリプトの作成と使用」を参照してください。

Klocwork Desktop での Kotlin、Python、JavaScript の解析

Klocwork Desktop で Kotlin、Python、JavaScript プロジェクトの解析がサポートされるようになりました。Java 用の既存のワークフローと同じように、Klocwork デスクトップ GUI で言語固有のビルド仕様を生成し、解析を実行し、指摘を直接確認することができます。

詳細については、「Klocwork Desktop for Kotlin/Python/JavaScript をお使いになる前に」を参照してください。

C、C++、および C# の機能強化

モダン解析エンジンを使用して、Green Hills コンパイラでネイティブにコンパイルされたコードを解析できるようになりました。

Java の機能強化

このリリースでは Java 言語仕様バージョン 17 までがサポートされます。

プラグインと拡張機能

このリリースには、以下の改善が含まれています。

VS Code で AI を活用したコード修正を有効にする

VS Code で Klocwork または QAC によって特定された欠陥について AI レメディエーションを使用できるようになりました。

GitHub Copilot Chat を統合することにより、IDE 内で、直接、修正を生成して、提案された修正を適用することができます。この機能は、一括修正、自然言語拡張機能、変更を適用または元に戻すための対話型ワークフローをサポートしています。

詳細については、「Visual Studio Code の AI レメディエーションの構成」を参照してください。

VS Code で継続的解析を最適化する

システムリソースを節約し、結果の精度を向上させるため、VS Code 拡張機能で、入力中に自動的に間隔をあけて解析を実行するのではなく、ファイルの保存時にのみ継続的解析を実行するようになりました。

結果を改善するには、継続的解析を使用するときに自動保存機能をオフにします。

コーディング標準の対象範囲の拡大

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

  • MISRA C:2023 および C:2025
  • CERT C/C++
  • CWE C/C++ および C#

チェッカーの改善

このリリースには、モダン解析エンジンでのみ機能する新しい C/C チェッカーセットが含まれています。モダン専用チェッカーはドキュメントではっきりと確認できます。

モダン専用チェッカーを有効にした状態でクラシックエンジンを使用して解析を実行すると、解析が停止して、問題の原因であるチェッカーが通知されます。続行するには、それらのチェッカーをプロジェクトに対して無効にしてください。

新しいチェッカー

このリリースでは、以下のチェッカーが追加されました:

チェッカー 説明
CERT.MATH.DOMAIN.CHECK この CERT チェッカーは、標準ライブラリ数学関数に渡される 1 つまたは複数の引数が有効なドメイン外にある場合にフラグを立てます。
CERT.MATH.RANGE.CHECK この CERT チェッカーは、数学関数でドメインエラーと範囲エラーを防止または検出します。

CERT.SIG.SIG_HANDLER.SHARED_OBJ

CERT.SIG.SIG_HANDLER.SHARED_OBJ.HEAP

CERT.SIG.SIG_HANDLER.SHARED_OBJ.MIGHT

これらのモダン専用 CERT チェッカーは、シグナルハンドラー内における、静的記憶域期間が設定されているデータの読み取りと書き込みをチェックします。
MISRA.CONV.TEMP_ARRAY_TO_PTR.2023

この MISRA チェッカーは、コードで一時的にのみ存在する配列へのポインターを取得してから一時オブジェクトが存在しなくなった後にそのポインターを使用する場合にフラグを立てます。

MISRA.FUNC.IDENTIFIER_USAGE.CHECK.2023 この MISRA チェッカーは、先行する & または括弧で囲まれたパラメーターリストのいずれかと共に関数識別子が使用されていない場合にフラグを立てます。
MISRA.FUNC.TYPE.TYPE_QUALIFIED この MISRA チェッカーは、関数型が型修飾されていない場合にフラグを立てます。
MISRA.INIT.DESIGNATOR_LIST.2023 この MISRA チェッカーは、連鎖指定子を使用する初期化子に指定子のない初期化子が含まれている場合にフラグを立てます。
MISRA.LANG.OBSOLESCENT.ATOMIC_VAR_INIT.2023 この MISRA チェッカーは、廃止されたものとみなされる C 言語機能の使用 (具体的には、マクロ ATOMIC_VAR_INIT) を検出します。
MISRA.LANG.OBSOLESCENT.BOOL_MACROS.2023 この MISRA チェッカーは、廃止されたものとみなされる C 言語機能の使用 (具体的には、マクロ `bool`、`true`、および `false` を定義解除し、それから、おそらく再定義する機能) を検出します。
MISRA.LANG.OBSOLESCENT.EMPTY_PARENTHESES.2023 この MISRA チェッカーは、廃止されたものとみなされる C 言語機能の使用 (具体的には、空の括弧を含む関数宣言子の使用) を検出します。
MISRA.LANG.OBSOLESCENT.GETS_FUNCTION.2023 この MISRA チェッカーは、廃止されたものとみなされる C 言語機能の使用 (具体的には、gets 関数) を検出します。
MISRA.LANG.OBSOLESCENT.KR_FUNCTION_PARAMETERS.2023 この MISRA チェッカーは、廃止されたものとみなされる C 言語機能の使用 (具体的には、個別のパラメーター識別子と宣言リストを含む関数定義の使用) を検出します。
MISRA.LANG.OBSOLESCENT.REALLOC_ZERO_SIZE.2023 この MISRA チェッカーは、廃止されたものとみなされる C 言語機能の使用 (具体的には、サイズ引数がゼロの realloc の呼び出し) を検出します。
MISRA.LANG.OBSOLESCENT.STORAGE_CLASS_POSITION.2023 この MISRA チェッカーは、廃止されたものとみなされる C 言語機能の使用 (具体的には、宣言内で宣言指定子の先頭以外の場所へのストレージクラス指定子の配置) を検出します。
MISRA.MACRO.INTEGER_CONSTANT.SMALL_VARIANT.2023 この MISRA チェッカーは、マクロ名が最小幅の整数定数マクロのリストに含まれており、そのサイズがプラットフォームにおける int のサイズより小さい場合にフラグを立てます。
MISRA.NORET.2023

この MISRA チェッカーは、 _Noreturn 関数指定子で宣言された関数がその呼び出し元に返される場合にフラグを立てます。

MISRA.PTR.VAR_MOD_ARRAY.CHECK.2023 この MISRA チェッカーは、可変修飾配列型へのポインターがオブジェクトまたはパラメーターの宣言で使用されている場合にフラグを立てます。
MISRA.PTR.VAR_MOD_ARRAY.2023 この MISRA チェッカーは、可変修飾配列型へのポインターの使用を検出します。

MISRA.STDLIB.RAND_FUNC.2023

MISRA.STDLIB.RAND_MACRO.2023

これらの MISRA チェッカーは、<stdlib.h> の乱数ジェネレーター関数が使用されている場合にフラグを立てます。

MISRA.THREAD.OBJECT.CONDITION.2023

MISRA.THREAD.OBJECT.MUTEX.2023

MISRA.THREAD.OBJECT.MUTEX.ARG.2023

これらの MISRA チェッカーは、スレッド同期オブジェクトがアクセスされる前に初期化されていない場合にフラグを立てます。
MISRA.THREAD.STORAGE.CREATION.2023 この MISRA チェッカーは、スレッド固有のストレージポインターがアクセスされる前に作成されていない場合にフラグを立てます。
MISRA.STDLIB.TGMATH.MACRO.ESSENTIAL_TYPE.2023 この MISRA チェッカーは、<tgmath.h> で定義された型汎用マクロに渡されるオペランド引数が、本質的に符号付きの型、本質的に符号なしの型、または本質的に浮動小数点型 (本質的に実数浮動小数点型と本質的に複素数浮動小数点型のいずれか) ではない場合にフラグを立てます。
MISRA.STDLIB.TGMATH.MACRO.2023 この MISRA チェッカーは、<tgmath.h> で定義された複引数マクロに渡されるいずれかのオペランド引数が同じ標準型でない場合にフラグを立てます。
MISRA.STDLIB.THREAD.BAD_ACCESS.2023 この MISRA チェッカーは、スレッド関連オブジェクトが不適切にアクセスされた場合にフラグを立てます。
MISRA.THREAD.STORAGE.CREATION.2023 この MISRA チェッカーは、スレッド固有のストレージポインターが作成される前にアクセスされる場合にフラグを立てます。
MISRA.UNUSED_OBJECT_DEFINITIONS.2023 この MISRA チェッカーは、使用されないオブジェクト定義がプロジェクトに含まれている場合にフラグを立てます。

変更されたチェッカー

このリリースでは、以下のチェッカーに変更が加えられました。

チェッカー 説明
JD.VNU 誤検知の検出が少なくなる
MISRA.MEMB.NON_STATIC 誤検知の検出が少なくなる

有効または無効なチェッカー

このリリースでチェッカー構成ファイルのデフォルトの enabled フィールドに追加されたチェッカーはありません。

分類基準の改善

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

分類基準 改善

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

以下の規則でチェッカーマッピングを追加または修正しました。

  • FLP32-C (L1)
  • SIG31-C (L1)
cwe_all_cxx.tconf および cwe_all_cxx_ja.tconf

以下の規則のカテゴリの説明を更新しました。

  • CWE-251
  • CWE-896
cwe_all_cs.tconf および cwe_all_cs_ja.tconf

規則 CWE-896 のカテゴリの説明を更新しました。

disa_stig_v6_cs.tconf および disa_stig_v6_cs_ja.tconf

disa_stig_v6_cxx.tconf および disa_stig_v6_cxx_ja.tconf

disa_stig_v6_java.tconf および disa_stig_v6_java_ja.tconf

規則 V-222589 [APSC-DV-002350](CAT 2) を規則 V-222589 [APSC-DV-002350](CAT 1) に更新しました。

helix_qac_c_cpp.tconf および helix_qac_c_cpp_ja.tconf

perforce_qac_c_cpp.tconf および perforce_qac_c_cpp_ja.tconf

Perforce ブランドの再編に伴い、分類基準の名称を Perforce QAC に変更しました。

misra_c_2012_with_amd2_c11.tconf および misra_c_2012_with_amd2_c11_ja.tconf

misra_c_2012_with_amd2_c90.tconf および misra_c_2012_with_amd2_c90_ja.tconf

misra_c_2012_with_amd2_c99.tconf および misra_c_2012_with_amd2_c99_ja.tconf

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

misra_c_2023_c11.tconf および misra_c_2023_c11_ja.tconf

以下の規則でチェッカーマッピングを追加または修正しました。

  • 1.5
  • 2.8
  • 7.6
  • 9.6
  • 17.9
  • 17.12
  • 17.13
  • 18.9
  • 18.10
  • 21.22
  • 21.23
  • 21.24
  • 22.2
  • 22.12
  • 22.14
  • 22.20
misra_c_2023_c90.tconf および misra_c_2023_c90_ja.tconf

以下の規則でチェッカーマッピングを追加または修正しました。

  • 2.8
  • 17.12
  • 17.13
  • 18.9
  • 21.24
  • 22.2
misra_c_2023_c99.tconf および misra_c_2023_c99_ja.tconf

以下の規則でチェッカーマッピングを追加または修正しました。

  • 1.5
  • 2.8
  • 7.6
  • 9.6
  • 17.12
  • 17.13
  • 18.9
  • 18.10
  • 21.22
  • 21.23
  • 21.24
  • 22.2
misra_c_2025_c11.tconf および misra_c_2025_c11_ja.tconf

以下の規則でチェッカーマッピングを追加または修正しました。

  • 1.5
  • 2.8
  • 7.6
  • 9.6
  • 17.9
  • 17.12
  • 17.13
  • 18.9
  • 18.10
  • 21.22
  • 21.23
  • 21.24
  • 22.2
  • 22.12
  • 22.14
  • 22.20
misra_c_2025_c90.tconf および misra_c_2025_c90_ja.tconf

以下の規則でチェッカーマッピングを追加または修正しました。

  • 2.8
  • 17.12
  • 17.13
  • 18.9
  • 19.3
  • 21.24
  • 22.2
misra_c_2025_c99.tconf および misra_c_2025_c99_ja.tconf

以下の規則でチェッカーマッピングを追加または修正しました。

  • 1.5
  • 2.8
  • 7.6
  • 9.6
  • 17.12
  • 17.13
  • 18.9
  • 18.10
  • 21.22
  • 21.23
  • 21.24
  • 22.2

サポートされているコンパイラへの改善

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

  • Clang

  • GCC

  • Green Hills コンパイラ

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

ライセンス

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

システム要件の変更

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

  • AlmaLinux 9.7
  • Amazon Linux 2 (2.0.20251121.0 Update)
  • Android Studio Otter ( 2025.2.1 Patch 1 まで)
  • CLion 2025.1 (2025.1.7 まで)、2025.2 (2025.2.5まで )
  • Debian 12.12
  • Eclipse 4.37 (2025-09)
  • Google Chrome 131.x ~ 142.x
  • IntelliJ IDEA 2024.3 (2024.3.7 まで)
  • Java 17
  • Microsoft Edge 131.x ~ 142.x
  • Mozilla Firefox 133.x ~ 145.x
  • Oracle Linux 9.7
  • Red Hat Enterprise Linux 9.7
  • Visual Studio 2017 (15.9.78 まで)、2019 (16.11.53 まで)、および 2022 (17.14.21 まで)
  • VS Code 1.100.3 ~ 1.106.1

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

  • Windows 10 (1809 ~ 21H2)
  • Visual Studio 2015
  • Google Chrome 129.x ~ 130.x
  • Microsoft Edge 129.x ~ 130.x
  • Mozilla Firefox 130.x ~ 132.x
  • VS Code 1.94.2 ~ 1.100.2

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

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 以降では、ストリーム用の個別のライセンスは不要になりました。