Klocwork 2024.4 の新機能

2024 年 12 月発行

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

バージョン 2024.4 の最新のオフライン ドキュメントにアクセスするには:
  1. Perforce コミュニティ ポータルから更新された kw_offline_docs.zip ファイルをダウンロードします。
  2. インストール フォルダー内の現在の kw_offline_docs.zip ファイルを置き換えます: /class/docs/kw_offline_docs.zip。
  3. サーバーを再起動します。

Klocwork と Validate の機能強化

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

最小限のダウンタイムでのプロジェクトとサーバーの情報のバックアップ

ダウンタイムを最小限に抑えるため、サーバーを停止せずに情報を安全にバックアップすることができます。ホットバックアップ「メソッド 1:サポートされているスクリプトを使用する」を参照し、個々のプロジェクトや Validate サーバー構成をバックアップして後で復元する方法を確認してください。

アプリケーショントークン認証のワークフローの改善

自動化された環境でクライアント認証をより効率的かつセキュアに行えるようになりました。この機能強化は、特に Docker コンテナーの展開などのセットアップに役立ちます。

アプリケーショントークンを Docker Secrets などの機密ストレージシステムに保存し、ご使用のシステムの自動対話メソッドを利用して kwauth -t コマンドによってトークンを渡すことで、クライアントをセキュアに認証することができます。

詳細については、「アプリケーショントークンを使用した認証」を参照してください。

Java でモジュールを作成する場合の正規表現のサポートの追加

Java でモジュールを作成する場合にパターンマッチングで Glob と共に正規表現がサポートされるようになりました。正確なパターンマッチングのため、幅広い標準正規表現文字がサポートされています。詳細と例については、「モジュールの作成」を参照してください。

ナビゲーション改善のための分類基準ページの更新

見た目をすっきりさせて、ナビゲーションを簡素化するため、分類基準カテゴリがデフォルトで折りたたまれるようになりました。カテゴリをクリックするか、またはページを検索すると、カテゴリが展開されます。すべてのカテゴリを一度に展開または折りたたむには、上部のメニューボタンを使用します。

複数の指摘をまとめて編集するための確認ステップの追加

一括変更が意図的なものであることを確認できるようにするため、検索画面から複数の指摘をまとめて編集するときに確認ボックスが表示されるようになりました。

CI ビルドログの改善による可視性とトラブルシューティングの向上

ビルドプロセスの包括的なビューを提供するため、CI ビルドログに解析ビルドログとインポートビルドログの両方が含まれるようになり、CI ビルドの進行状況のデバッグと追跡が容易になりました。

C および C++ の機能向上

このリリースでは、

  • Windows と Linux で Bazel ビルドシステムについて C と C++ のフルサポートが追加されました。
  • 既存のコミュニティ MISRA チェッカーが Klocwork でサポートされているチェッカーに置き換えられました。

Java の機能強化

このリリースでは、

  • Windows と Linux の両方で Bazel ビルドシステムについて Java のフルサポートが追加されました。

  • kwciagent の差分解析のサポートが追加されました。

  • Jetty をバージョン 9.4.56 にアップグレードしました。

プラグインと拡張機能

このリリースでは、

  • JetBrains IDE (IDEA、CLion、Android Studio) プラグインがバージョン 2024.2 にアップグレードされました。

  • VS Code プラグインに SAML/OIDC 認証が追加され、Validate サーバーでセキュア認証が可能になり、複数のパスワードを使用しなくて済むようになりました。

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

このリリースには、次のコーディング規約に関する新しい拡張カバレッジが含まれています。

  • CERT C および C++ (L1 規則の 100% カバレッジを含む)

  • CERT Java

  • MISRA C 2012 (改訂 2)(100% カバレッジを含む)

チェッカーの改善

新しいチェッカー

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

チェッカー 説明
ABV.NON_ARRAY このチェッカーは、非配列オブジェクトが配列として使用された場合に欠陥を検出します。
CERT.EXCEPTION.OVER.BOUNDARY この CERT チェッカーは、CERT ERR59-CPP「実行境界を越えて例外をスローしない」のサポートに対応しています。
CERT.FIO.FGETS この CERT チェッカーは、CERT FIO37-C「fgets() または fgetws() が正常に実行された場合に空でない文字列が返されることが想定されていない」のサポートに対応しています。

CERT.MEM.OBJ_LIFETIME_CTOR

CERT.MEM.OBJ_LIFETIME_DTOR

これらの CERT チェッカーは、CERT MEM53-CPP「オブジェクトの有効期間を手動で管理する場合はオブジェクトを明示的に構築および破棄する」のサポートに対応しています。

CERT.MEM.SMART_PTR.OWNED

CERT.MEM.SMART_PTR.OWNED.THIS

これらの CERT チェッカーは、CERT MEM56-CPP「既に所有されているポインター値を無関係なスマートポインターに格納しない」のサポートに対応しています。
ITER.ADVANCE.NONADJACENT この CERT チェッカーは、CERT CTR55-CPP「結果がオーバーフローする場合は、反復子で加法演算子を使用しない」のサポートに対応しています。

ITER.END.OUTPARAM.MIGHT

ITER.END.OUTPARAM.MUST

これらの CERT チェッカーは、CERT CTR52-CPP「ライブラリ関数でオーバーフローが発生しないようにする」のサポートに対応しています。
JAVA.ASSERT.ARG この CERT チェッカーは、CERT MET01-J「メソッド引数の検証には決してアサートを使用しない」のサポートに対応しています。
JAVA.BIGDEC.FLOAT この CERT チェッカーは、CERT NUM10-J「浮動小数点リテラルから BigDecimal オブジェクトを構築しない」のサポートに対応しています。
JAVA.COMPARE.NAN この CERT チェッカーは、CERT NUM07-J「NaN と比較しようとしない」のサポートに対応しています。
JAVA.CTOR.EXCEPT この CERT チェッカーは、CERT OBJ11-J「コンストラクターが例外をスローすることに注意する」のサポートに対応しています。
JAVA.DEBUG.ENTRY この CERT チェッカーは、CERT ENV06-J「本番コードにはデバッグエントリポイントを含めない」のサポートに対応しています。
JAVA.FINAL.STATIC.VAR この CERT チェッカーは、CERT OBJ11-J「コンストラクターが例外をスローすることに注意する」のサポートに対応しています。
JAVA.INF.LOOP.EMPTY この CERT チェッカーは、CERT MSC01-J「空の無限ループを使用しない」のサポートに対応しています。
JAVA.LOOP.CTR.FLOAT この CERT チェッカーは、NUM09-J「浮動小数点変数をループカウンターとして使用しない」のサポートに対応しています。
JAVA.NATIVE.PUBLIC この CERT チェッカーは、CERT JNI00-J「ネイティブメソッドにはラッパーを定義する」のサポートに対応しています。
JAVA.NESTED.EXPOSE この CERT チェッカーは、CERT OBJ08-J「入れ子クラス内から外部クラスの private メンバーを公開しない」のサポートに対応しています。
JAVA.SERIALIZE.INNER この CERT チェッカーは、CERT SER05-J「内部クラスのインスタンスをシリアル化しない」のサポートに対応しています。
JAVA.THREADGROUP この CERT チェッカーは、CERT THI01-J「ThreadGroup メソッドを呼び出さない」のサポートに対応しています。
JAVA.WAIT.IN.LOOP この CERT チェッカーは、CERT THI03-J「wait() メソッドと await() メソッドは必ずループ内で呼び出す」のサポートに対応しています。

MISRA.MACRO.IDENT.DISTINCT.C90.2012

MISRA.MACRO.IDENT.DISTINCT.C99.2012

この MISRA チェッカーは、MISRA C 2012 規則 5.5「識別子はマクロ名と区別されなければならない」のサポートに対応しています。

MISRA.UNUSED_MACRO.2012

これらの MISRA チェッカーは、MISRA 2012 規則 2.5 (推奨)「プロジェクトには未使用のマクロ宣言を含めない」のサポートに対応しています。

変更されたチェッカー

チェッカー 説明
ABV.GENERAL 誤検知と未検知の検出が少なくなる
AUTOSAR.ADD.AUTO.SPECIFIER 誤検知の検出が少なくなる
CERT.OOP.CTOR.INIT_ORDER 誤検知の検出が少なくなる
MISRA.BITS.OPERAND 誤検知の検出が少なくなる
MISRA.CTOR.BASE 誤検知の検出が少なくなる
MLK.MUST 誤検知の検出が少なくなる
NPD.FUNC.MIGHT 誤検知の検出が少なくなる
RH.LEAK 未検知の検出が少なくなる
UNINIT.STACK.MUST 誤検知の検出が少なくなる

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

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

分類基準の改善

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

分類基準 改善

autosar_cpp_18_10.tconf および autosar_cpp_18_10_ja.tconf

autosar_cpp_18_10_strict.tconf および autosar_cpp_18_10_strict_ja.tconf

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

  • A5-2-5
cert_c_all.tconf および cert_c_all_ja.tconf

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

  • ARR30-C
  • FIO37-C
cert_c_rules.tconf および cert_c_rules_ja.tconf

cert_c_rules.tconf 分類基準と cert_c_rules_ja.tconf 分類基準を大幅に再編成しました。

cert_cpp_rules.tconf および cert_cpp_rules_ja.tconf

分類基準の名前が、それぞれ cert_cpp.tconf と cert_cpp_ja.tconf から cert_cpp_rules.tconf と cert_cpp_rules_ja.tconf に変更されました。

分類基準に規則のみが含まれるようにするため、推奨事項が削除されました。

cert_java.tconf および cert_java_ja.tconf

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

  • ENV06-J
  • JNI00-J
  • MET01-J
  • MSC01-J
  • NUM07-J
  • NUM09-J
  • OBJ11-J
  • SER05-J
  • THI01-J
  • THI03-J

cwe_2019_top_25_cxx.tconf および cwe_2019_top_25_cxx_ja.tconf

cwe_2020_top_25_cxx.tconf および cwe_2020_top_25_cxx_ja.tconf

cwe_2021_top_25_cxx.tconf および cwe_2021_top_25_cxx_ja.tconf

cwe_2022_top_25_cxx.tconf および cwe_2022_top_25_cxx_ja.tconf

cwe_2023_top_25_cxx.tconf および cwe_2023_top_25_cxx_ja.tconf

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

  • CWE-119
  • CWE-125
  • CWE-787
cwe_all_cxx.tconf および cwe_all_cxx_ja.tconf

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

  • CWE-119
  • CWE-120
  • CWE-122
  • CWE-125
  • CWE-787
  • CWE-788
  • CWE-805
  • CWE-806

disa_stig_v4_cxx.tconf および disa_stig_v4_cxx_ja.tconf

disa_stig_v5_cxx.tconf および disa_stig_v5_cxx_ja.tconf

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

  • APSC-DV-002590
  • APSC-DV-003170

Helix QAC 分類基準

Helix QAC 分類基準を Helix QAC バージョン 2024.3 に更新しました。
helix_qac_c_cpp.tconf および helix_qac_c_cpp_ja.tconf

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

  • 移植性 - ISO C99 言語機能
  • 移植性 - 言語拡張

hkmc_c.tconf および hkmc_c_ja.tconf

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

  • C-ARR-001
  • C-ARR-008
  • C-ARR-009

hkmc_cpp.tconf および hkmc_cpp_ja.tconf

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

  • P-CTR-001
  • P-CTR-003
  • P-CTR-006
  • P-MEM-004
  • P-MEM-006
iso_iec_ts_17961_c.tconf および iso_iec_ts_17961_c_ja.tconf

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

  • 5.22
kw_quality_std_cxx.tconf および kw_quality_std_cxx_ja.tconf

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

  • バッファオーバーフロー

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

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

  • 指令 4.1
  • 規則 2.5
  • 規則 5.5

misra_c_2023_c11.tconf および misra_c_2023_c11_ja.tconf

misra_c_2023_c90.tconf および misra_c_2023_c90_ja.tconf

misra_c_2023_c99.tconf および misra_c_2023_c99_ja.tconf

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

  • 指令 4.1
  • 規則 1.3
  • 規則 2.5
  • 規則 5.5

pci_3_2_1_cxx.tconf および pci_3_2_1_cxx_ja.tconf

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

  • 6.5.1
  • 6.5.2

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

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

  • Clang

  • GNU

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

ライセンス

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

2023 ライセンスは、Klocwork 2024.1 以降との互換性がありません。製品の最新バージョンを使用するには、Perforce (license@perforce.com) に連絡して新しいライセンスを取得してください。

詳細については、サポートされる RLM のバージョンおよび RLM ドングルをサポートするオペレーティングシステムを参照してください。

システム要件の変更

このリリースでは、次のサポートが追加されました:

  • Amazon Linux 2 (2.0.20241014.0 Update)
  • Android Studio Jellyfish (2023.3.1 Patch 1 まで)、 Ladybug (2024.2.1 Patch 1 まで)
  • CLion 2024.2 (2024.2.3 まで)
  • Debian 12.0 ~ 12.7
  • Google Chrome 119.x ~ 131.x

  • IntelliJ IDEA 2024.2 (2024.2.4 まで)
  • Microsoft Edge 119.x ~ 131.x

  • Mozilla Firefox 120.x ~ 132.x

  • Ubuntu 24.04 ~ 24.04.1 LTS
  • Visual Studio 2017 (バージョン 15.9.68 まで)、2019 (バージョン 16.11.42 まで)、 2022 (バージョン 17.12.1 まで)
  • VS Code 1.85.2 ~ 1.95.3
  • Windows 11 (バージョン 24H2)

このリリースでは、次のサポートを終了しました:

  • Debian 10.0 ~ 10.13

  • Google Chrome 117.x ~ 118.x

  • Microsoft Edge 117.x ~ 118.x

  • Mozilla Firefox 118.x ~ 119.x

  • SUSE Enterprise 12 SP4 ~ 12 SP5、15 SP1 ~ SP4

  • VS Code 1.85.1 ~ 1.84.2

  • Windows Server 2012 ~ R2

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

Klocwork 2024.3 以降の NIS アクセス制御のサポート終了

Klocwork 2024.3 以降では、NIS アクセス制御のサポートが終了します。Klocwork 2024.2 では、一部の機能が影響を受ける可能性があります。

以前のバージョンから Klocwork 2024.2 に移行する場合は、別の認証方法に切り替える必要があります。アップグレード後も引き続きサインインできるように、移行前に認証方法を切り替えることをお勧めします。移行情報については、NIS アクセス制御のセットアップを参照してください。

Klocwork 2024.3 以降の CentOS Linux 7 のサポート終了のお知らせ

Klocwork 2024.3 以降では、以下のオペレーティングシステムとインストーラーはサポートされなくなります:

  • CentOS Linux 7

2024.2 での Jenkins プラグインの削除

Klocwork 2024.2 以降、Jenkins プラグインは Klocwork から削除され、インストールパッケージの提供は停止しました。

2024.2 での Validate コードレビューの削除

Klocwork 2024.2 以降、コードレビュー機能とそれに関連するコマンドラインツールは Validate から削除されました。

2024 年における docs.roguewave.com の中止

docs.roguewave.com サイトは 2024 年初めに廃止されました。 Klocwork バージョン 2021 以前については、製品に含まれるオフラインドキュメントを参照してください。

リリース 2023.4 での Klocwork サーバーインストールの中止

リリース 2023.4 からは Klocwork サーバーインストールが中止されました。Validate のインストールに移行できます。これは、より合理化され、統合されたエクスペリエンスを提供するように設計されています。

Klocwork から Validate に移行する場合:

  • Klocwork インスタンスを停止し、projects_root をバックアップします。

  • Validate のインストール中に、projects_root ディレクトリの場所を現在の projects_root ディレクトリに設定します。

  • 現在、ポートまたはライセンスサーバーにデフォルト以外の値を使用している場合は、Validate のインストール時に必ず同じ値を設定してください。