Klocwork 2024.3 の新機能

2024 年 10 月発売

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

Validate / Klocwork の機能強化

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

基本的な Klocwork 管理タスクでのビルドライセンスの消費の廃止

このリリースでは、kwadmin および validate admin についてビルドライセンス消費モデルが更新されました。list、get、export などの基本的な管理タスクでビルドライセンスが消費されなくなります。この変更により、ライセンスプロセスが簡素化され、QAC と Klocwork 間の連携が強化されます。

ビルドライセンスの消費の詳細については、kwadmin または validate admin を参照してください。

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

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

  • 欠陥検出が改善され、条件付きで解放されたメモリの追跡に対するサポートが強化されました。
  • Windows と Linux の両方で Bazel ビルドシステムのサポートが強化されました。kwbazel を参照してください。

プラグインと拡張機能

次の機能がプラグインと拡張機能に追加されました。

  • デバイス認証: Validate 24.2 以降のサーバーでは、kwauth を外部で実行する代わりに、Visual Studio プラグインおよび CLion プラグイン内で直接認証を実行できるようになりました。Visual Studio の場合、トークンは ltoken ファイルに保存されます。CLion の場合、使用する解析ツールのバージョンに応じて、トークンを credentials ファイルまたは ltoken ファイルに保存することができます。

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

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

  • AUTOSAR

  • CERT C and C++

  • HKMC C++

  • MISRA C 2012 (改訂 2) (Klocwork サポートからオンデマンドで利用できるツールで 100% のカバレッジを取得できるようになりました)

  • MISRA C 2004 および 2023

  • MISRA C++ 2008 および 2023

  • SEI CERT C

チェッカーの改善

新しいチェッカー

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

チェッカー 説明

CERT.ALIGN.OF

CERT.ANONYMOUS.STRUCT

CERT.ANONYMOUS.UNION

CERT.ARRAY.LENGTH.ZERO

CERT.BITFIELD.NOT.INT

CERT.BITFIELD.SIGN.MODIFIER

CERT.EMPTY.AGR.INIT

CERT.ENUM.LITERAL.TYPE.INT

CERT.ENUM.TYPE.SPECIFIER

CERT.FIXED.MEMORY.ADDRESS

CERT.LITERAL.BINARY

CERT.LITERAL.MULTI-BYTE.CHAR

CERT.LITERAL.SUFFIX.I64

CERT.NAME.DOLLAR.CHAR

CERT.STMT.EXPR

CERT.STR.RANGE.FORMATTER

CERT.TYPEOF

CERT.UNNAMED.MEMBER

これらの CERT チェッカーは、CERT MSC14-C:「不要なプラットフォーム依存状態を取り込まないこと」のサポートに対応しています。
CERT.CHROOT

CERT.CHROOT.CHDIR

これらの CERT チェッカーは、CERT POS05-C:「jail を作成してファイルへのアクセスを制限する」のサポートに対応しています。

CERT.LITERAL.ARRAY

CERT.LITERAL.BITFIELD

CERT.LITERAL.CHAR.CONST

CERT.LITERAL.FLT.CONST

CERT.LITERAL.INT.CONST

CERT.LITERAL.STR.CONST

これらの CERT チェッカーは、CERT DCL06-C:(L3)「シンボリック定数を使用してリテラル値を表す」のサポートに対応しています。
CERT.LITERAL.OCTAL この CERT チェッカーは、CERT MSC33-C:「asctime() 関数に無効なデータを渡さない」のサポートに対応しています。

CERT.MEM.PLACEMENTNEW.MISALIGNED

CERT.MEM.PLACEMENTNEW.TOOSMALL

これらの CERT チェッカーは、CERT MEM54-CPP:「十分なストレージ容量に対して適切に整列されたポインターを placement new に提供する」のサポートに対応しています。
CERT.MULTI.FUNC.ARG.CALLS この CERT チェッカーは、CERT EXP10-C:「副次式の評価の順序や、副作用が発生する順序には依存しない」のサポートに対応しています。
CERT.RTN.FLT.CAST.DBL

CERT.RTN.FLT.IMPLICIT.CAST.DBL

これらの CERT チェッカーは、CERT FLP07-C:「浮動小数点型を返す関数の戻り値をキャストする」のサポートに対応しています。
CERT.SIG.SIG_HANDLER.ASYNC_SAFE この CERT チェッカーは、CERT SIG30-C:「シグナルハンドラー内では非同期安全な関数のみを呼び出す」のサポートに対応しています。

CERT.STATIC.SINGLE.USE

CERT.TU.UNUSED.GLOBAL.DECL

これらの CERT チェッカーは、CERT DCL19-C:「変数と関数のスコープの最小化」のサポートに対応しています。

CXX.ID_VIS.GLOBAL_VARIABLE.EXTERN

CXX.ID_VIS.GLOBAL_VARIABLE.STATIC

これらの MISRA チェッカーは、MISRA C 2012 および 2023 規則 8.9 (推奨):「オブジェクトの識別子が単一の関数にのみ出現する場合はオブジェクトをブロックスコープで宣言する必要がある」のサポートに対応しています。
MISRA.DECL.EXTERNAL.MULTIPLE この MISRA チェッカーは、MISRA C 2012 および 2023 規則 8.5 ならびに MISRA C 2004、規則 8.8:「外部オブジェクトまたは関数は、1 つのファイルのみで宣言する必要がある」のサポートに対応しています。
MISRA.DEFINE.EXTERNAL.MULTIPLE

この MISRA チェッカーは、MISRA C 2012 および 2023 規則 8.6 ならびに MISRA C 2004、規則 8.9:「外部リンケージを持つ識別子には、外部定義が 1 つだけ必要である」のサポートに対応しています。

MISRA.ELIF.DEFINED

MISRA.EXPANSION.NARGS

MISRA.EXPANSION.UNSAFE

MISRA.IF.DEFINED

MISRA.INCOMPLETE.STRUCT

MISRA.INCOMPLETE.STRUCT.UNNAMED

MISRA.INCOMPLETE.UNION

MISRA.INCOMPLETE.UNION.UNNAMED

これらの MISRA チェッカーは、MISRA C 2012 規則 1.3:「未定義または重大な未指定の動作が発生してはならない」のサポートに対応しています。
MISRA.EXT.IDENT.DISTINCT.2012.C90

MISRA.EXT.IDENT.DISTINCT.2012.C99

これらの MISRA チェッカーは、MISRA C 2012 および 2023 規則 5.1:「外部識別子は区別される必要がある」のサポートに対応しています。
MISRA.EXT.LINKAGE.REDUNDANT.2012 この MISRA チェッカーは、MISRA 2012 および 2023 規則 8.7:「関数とオブジェクトは、1 つの翻訳単位のみで参照される場合は外部リンケージで定義してはならない」のサポートに対応しています。
MISRA.MACRO_ARG.EXPRESSION.2012 この MISRA チェッカーは、MIMISRA 2012 および 2023 規則 20.7:「マクロパラメーターを展開した後の式は括弧で囲む必要がある」のサポートに対応しています。
MISRA.STRUCT_DEF.HIDDEN.2012 この MISRA チェッカーは、MISRA C 2012 指令 4.8:「構造体または共用体へのポインターが翻訳単位内で逆参照されない場合は、オブジェクトの実装を非表示にする必要がある」のサポートに対応しています。
MISRA.TOKEN.COMMENTED.CODE この MISRA チェッカーは、MISRA C 2004 規則 2.4、MISRA C++ 2008 規則 2-7-2 および 2-7-3、MISRA C++ 2023 指令 5.7.2、ならびに MISRA C 2012 および 2023 指令 4.4:「コードのセクションは「コメントアウト」しない」のサポートに対応しています。

変更されたチェッカー

チェッカー 説明
AUTOSAR.ADD.LITERAL 誤検知の検出が少なくなる
AUTOSAR.ADD.REDEF.DERIVED.FUNC 誤検知の検出が少なくなる
CERT.OOP.COPY_MUTATES 誤検知の検出が少なくなる
MISRA.IF.UNDEF 誤検知の検出が少なくなる
MISRA.LOGIC.NOT_BOOL 誤検知の検出が少なくなる

MLK.MUST

誤検知の検出が少なくなる
UFM.DEREF.MIGHT 追加の欠陥を検出する
UFM.DEREF.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

チェッカーマッピングを以下の規則に追加または更新しました。

  • A2-7-2

cert_c_all.tconf と cert_c_all_ja.tconf

チェッカーマッピングを以下の規則に追加または更新しました。

  • MSC14-C
  • POS05-C
  • DCL06-C
  • EXP10-C
  • FLP07-C
  • DCL19-C
  • MEM00-C
cert_c_rules.tconf and cert_c_rules_ja.tconf

チェッカーマッピングを以下の規則に追加または更新しました。

  • SIG30-C
cert_cpp.tconf と cert_cpp_ja.tconf

チェッカーマッピングを以下の規則に追加または更新しました。

  • MEM54-CPP
  • MEM54-CPP
cwe_all_cxx.tconf と cwe_all_cxx_ja.tconf

チェッカーマッピングを以下の規則に追加または更新しました。

  • CWE-401

disa_stig_v4_cxx.tconf と disa_stig_v4_cxx_ja.tconf

disa_stig_v5_cxx.tconf と disa_stig_v5_cxx_ja.tconf

チェッカーマッピングを以下の規則に追加または更新しました。

  • APSC-DV-002400
  • APSC-DV-003170
  • APSC-DV-003320
disa_stig_v5_java.tconf and disa_stig_v5_java_ja.tconf

チェッカーマッピングを以下の規則に追加または更新しました。

  • APSC-DV-002440
  • APSC-DV-002550
  • APSC-DV-001820

 

Helix QAC 分類基準 Helix QAC 分類基準を Helix QAC バージョン 2024.3 に更新しました。
iso_iec_ts_17961_c.tconf と iso_iec_ts_17961_c_ja.tconf

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

  • 5.18
misra_c_2012_with_amd2_c11.tconf と misra_c_2012_with_amd2_c11_ja.tconf

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

  • 規則 1.3
  • 規則 5.1
  • 規則 8.5
  • 規則 8.6
  • 規則 8.7
  • 規則 8.9
  • 規則 20.7
  • 規則 22.1
  • Dir.4.4
  • Dir.4.8
misra_c_2012_with_amd2_c90.tconf および misra_c_2012_with_amd2_c90_ja.tconf

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

  • 規則 1.3
  • 規則 5.1
  • 規則 5.2
  • 規則 5.4
  • 規則 5.5
  • 規則 8.5
  • 規則 8.6
  • 規則 8.7
  • 規則 8.9
  • 規則 20.4
  • 規則 20.7
  • 規則 22.1
  • Dir.4.4
  • Dir.4.8
misra_c_2012_with_amd2_c99.tconf および misra_c_2012_with_amd2_c99_ja.tconf

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

  • 規則 1.3
  • 規則 5.1
  • 規則 8.5
  • 規則 8.6
  • 規則 8.7
  • 規則 8.9
  • 規則 20.7
  • 規則 22.1
  • Dir.4.4
  • Dir.4.8
misra_c_2023_c11.tconf および misra_c_2023_c11_ja.tconf

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

  • 規則 5.1
  • 規則 5.2
  • 規則 5.4
  • 規則 5.5
  • 規則 8.5
  • 規則 8.6
  • 規則 8.7
  • 規則 8.9
  • 規則 20.4
  • 規則 20.7
  • 規則 22.1
  • Dir.4.4
  • Dir.4.8

misra_c_2023_c90.tconf および misra_c_2023_c90_ja.tconf

misra_c_2023_c99.tconf および misra_c_2023_c99.tconf

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

  • 規則 5.1
  • 規則 8.5
  • 規則 8.6
  • 規則 8.7
  • 規則 8.9
  • 規則 20.7
  • 規則 22.1
  • Dir.4.4
  • Dir.4.8
misra_cpp_2008.tconf と misra_cpp_2008_ja.tconf

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

  • 規則 2-7-2
  • 規則 2-7-3
misra_cpp_2023.tconf および misra_cpp_2023_ja.tconf

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

  • 規則 1.3
  • 規則 5.1
  • 規則 8.5
  • 規則 8.6
  • 規則 8.7
  • 規則 8.9
  • 規則 20.7
  • 規則 22.1
  • Dir.4.4
  • Dir.4.8
misra_c_2012_with_amd2_c90.tconf および misra_c_2012_with_amd2_c90_ja.tconf

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

  • 規則 1.3
  • 規則 5.1
  • 規則 5.2
  • 規則 5.4
  • 規則 5.5
  • 規則 8.5
  • 規則 8.6
  • 規則 8.7
  • 規則 8.9
  • 規則 20.4
  • 規則 20.7
  • 規則 22.1
  • Dir.4.4
  • Dir.4.8
misra_c_2012_with_amd2_c99.tconf および misra_c_2012_with_amd2_c99_ja.tconf

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

  • 規則 1.3
  • 規則 5.1
  • 規則 8.5
  • 規則 8.6
  • 規則 8.7
  • 規則 8.9
  • 規則 20.7
  • 規則 22.1
  • Dir.4.4
  • Dir.4.8
misra_c_2023_c11.tconf および misra_c_2023_c11_ja.tconf

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

  • 規則 5.1
  • 規則 5.2
  • 規則 5.4
  • 規則 5.5
  • 規則 8.5
  • 規則 8.6
  • 規則 8.7
  • 規則 8.9
  • 規則 20.4
  • 規則 20.7
  • 規則 22.1
  • Dir.4.4
  • Dir.4.8

misra_c_2023_c90.tconf および misra_c_2023_c90_ja.tconf

misra_c_2023_c99.tconf および misra_c_2023_c99.tconf

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

  • 規則 5.1
  • 規則 8.5
  • 規則 8.6
  • 規則 8.7
  • 規則 8.9
  • 規則 20.7
  • 規則 22.1
  • Dir.4.4
  • Dir.4.8
misra_cpp_2008.tconf と misra_cpp_2008_ja.tconf

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

  • 規則 2-7-2
  • 規則 2-7-3
misra_cpp_2023.tconf および misra_cpp_2023_ja.tconf

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

  • 規則 5.7.2

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

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

  • GNU コンパイラ (gcc、g++、および gcc ベースのクロスコンパイラ)
  • Clang コンパイラ (clang、clang++)
  • TI ARM Clang (tiarmclang)
  • QNX コンパイラ (qcc)
  • iccarm コンパイラ (iccarm)
  • Tricore コンパイラ (cctc、ctc、cptc)

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

ライセンス

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

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

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

システム要件の変更

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

  • Amazon Linux 2 (2.0.20240903.0 Update)
  • Ant 1.10.15
  • Chrome 117.x ~ 128.x
  • CLion 2023.2.5
  • Debian 11.11
  • Eclipse 4.33 (2024-09)
  • Firefox 118.x ~ 130.x
  • Glibc 2.15 ~ 2.40
  • Gradle 8.10
  • IntelliJ IDEA 2023.1.8
  • Maven 3.9.9
  • Microsoft Edge 117.x ~ 128.x
  • Oracle Linux 8.10、9.4
  • Red Hat Enterprise Linux 8.10
  • Suse Enterprise 15 SP6
  • Ubuntu 22.04.5 LTS
  • Visual Studio 2017 バージョン 15.9.66
  • Visual Studio 2019 バージョン 16.11.40
  • Visual Studio 2022 バージョン 17.11.4
  • VS Code 1.83.1 ~ 1.93.1

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

  • CentOS Linux 7.x
  • Chrome 115.x ~ 116.x
  • Firefox 115.x ~ 117.x
  • Microsoft Edge 115.x ~ 116.x
  • Oracle Linux 7.x
  • Red Hat Enterprise Linux 7.x
  • VS Code 1.80.2 ~ 1.82.3

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

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 から削除されました。

Klocwork 2022 のメンテナンス終了

Klocwork のすべての 2022 バージョンのメンテナンス (メンテナンス終了および販売終了を含む) は、2024 年 3 月 31 日に終了しました。すべての Klocwork リリースで利用可能なサポートの詳細については、Klocwork 製品ライフサイクルを参照してください。

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 のインストール時に必ず同じ値を設定してください。