Klocwork 2023.4 の新機能

Klocwork 2023.4 の主な機能を次に示します。アップグレードする場合は、Klocwork の使用方法に影響を与える項目を制限事項で参照してください。

完全一致およびオーバーライドファイルのコマンドオプション

このリリースでは、kwcheck と kwciagent の両方で、完全一致およびオーバーライドファイルオプションのための新しい機能を導入しました。

  • ファイルの完全一致:

    kwcheck または kwciagent を使用するときに、enable_exact_file_match オプションを true に設定することで、ファイルの正確な一致を有効にします。

  • ファイルのオーバーライド:

    kwcheck または kwciagent で --overrides-file オプションを実行して、ファイル一致オーバーライドを適用します。

kwcheck と kwciagent の clean コマンド

このリリースでは、ローカルの Klocwork プロジェクトおよび/または設定ディレクトリをクリーンアップするために、kwcheck と kwciagent の両方に clean コマンドが導入されました。

2024 年に docs.roguewave.com を廃止

docs.roguewave.com サイトは 2024 年初頭に廃止される予定です。 バージョン 2021 以前の製品に含まれているオフラインヘルプドキュメントを参照してください。

Klocwork/Validate サーバー

このリリースでは、Apache Tomcat がバージョン 8.5.96 にアップグレードされ、パフォーマンス、セキュリティ機能が強化され、より効率的で信頼性の高いサーバー環境を実現するための追加の最適化が行われています。

プラグインおよび拡張機能

Klocwork 2023.4 以降、IntelliJ IDEA、Android Studio、CLion 用の Klocwork デスクトップ解析プラグインは、バージョン 2023.1 以降の IDE を使用しているときに機能します。

リリース 2023.4 では、Visual Studio Code 用の Klocwork 拡張機能と Visual Studio 用 Klocwork デスクトッププラグインの安定性の修正が完了しました。以下に記載する、いくつかのお客様の指摘も修正されました。

  • Visual Studio Code で、ワークスペースに Klocwork 解析フォルダーが含まれている場合にのみ、起動時にエラー通知が表示されます。

  • Visual Studio Code で、ステータスオプションは拡張機能のさまざまな領域で一貫して順序付けされます。

  • Visual Studio で、情報バーは Klocwork オプションが保存されると直ちに有効になり、更新されます。

  • Visual Studio で、サーバー分類基準の欠陥はサーバーとの接続を外した後に解消されます。

C/C++

このリリースでは、

  • 定数インデックスを使用する場合の配列値の追跡機能が改善されました

  • デスクトップ解析ツール (kwcheck/kwciagent) が改善され、サーバー解析ツール (kwbuildproject) の結果とより厳密に一致するようになりました。

  • 安定性と精度を向上させるために、C/C++ 解析エンジンを改善しました

  • より正確にルールをカバーするために、HKMC 分類基準を大幅に更新しました

C#

このリリースでは、

  • C# の CWE 2023 上位 25 に関する新しい分類基準を追加しました

Java

このリリースでは、

  • Java の CWE 2023 上位 25 に関する新しい分類基準を追加しました
  • Gradle 8.3 のサポートを追加しました
  • Klocwork チェッカーを証明書ルールにマッピングすることで、CERT Java カバレッジが向上しました
  • コードのセキュリティを強化するための潜在的な指摘の拡張解析と特定

コーディング基準

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

  • C/C++、C#、Java の CWE ID および 2023 上位 25
  • CERT セキュアコーディング基準
  • DISA STIG
  • HKMC セキュアコーディング基準
  • ISO/IEC TS
  • Klocwork 品質
  • MISRA 2012 AMD3
  • 支払カード業界データセキュリティ基準

チェッカーの改善

リリースを重ねるたびに、当社は指摘検出を改善して最先端の機能をお客様に提供しています。結果として、精度とカバレッジが向上すると解析結果が変わると予想されます。

新しいチェッカー

チェッカー 説明
CXX.SUSPICIOUS_INDEX_CHECK この C/C++ チェッカーは、特定のインデックスにある配列にアクセスする前に不審なインデックスチェックが存在する場合に検出します。
CXX.SUSPICIOUS_INDEX_CHECK.CALL この C/C++ チェッカーは、別の関数の配列にアクセスする前に不審なインデックスチェックが存在する場合に検出します。
CXX.SUSPICIOUS_INDEX_CHECK.ZERO この C/C++ チェッカーは、配列にアクセスする前にゼロに対する不審なインデックスチェックが存在していても、インデックス値が配列の上部境界に対してチェックされていないことを検出します。
MISRA.BITFIELD.UNION この MISRA チェッカーは、和集合にビットフィールドがメンバーとして含まれていることを検出します。
MISRA.INTEGER_CONSTANT.MACRO.FLOAT_VALUE この MISRA チェッカーは、整数定数マクロの引数が浮動小数点数でない場合を検出します。
MISRA.INTEGER_CONSTANT.MACRO.RANGE この MISRA チェッカーは、整数定数マクロの引数が範囲内にない場合を検出します。
MISRA.INTEGER_CONSTANT.MACRO.SUFFIX この MISRA チェッカーは、整数定数マクロの引数が接尾辞がない整数定数でない場合を検出します。

変更されたチェッカー

チェッカー 説明
ABV チェッカー チェッカーの全体的な改善
ABV.GENERAL

ドキュメンテーションを更新し、誤検知を削減しました

AUTOSAR.OP.BINARY.RETVAL 誤検知を削減しました
CS.HIDDEN.MEMBER チェッカー 誤検知を削減しました
CS.RLK 誤検知を削減しました
CWARN.IMPLICITINT 誤検知を削減しました
CXX.ERRNO.NOT_CHECKED

サンプルコードを記載してドキュメントが更新されました

CXX.SUSPICIOUS_INDEX_CHECK.CALL 誤検知を削減しました
INFINITE_LOOP.GLOBAL 誤検知を削減しました
INVARIANT_CONDITION.GEN

説明を追加して、ドキュメントを更新しました

MISRA.ASSIGN.OVERLAP 誤検知を削減しました
MISRA.FLOAT_EQUAL 新たな欠陥が検出されました
MISRA.MEMB.NON_CONST 誤検知を削減しました
MISRA.ONEDEFRULE.VAR 誤検知を削減しました
MISRA.VAR.HIDDEN 誤検知を削減しました
MLK チェッカー 誤検知を削減しました
NNTS.MUST チェッカーへの全体的な改善
NNTS.TAINTED 新たな欠陥が検出されました
NPD チェッカー 新たな欠陥が検出されました
RABV.CHECK 誤検知を削減しました
RLK チェッカー 誤検知を削減しました
RN.INDEX 誤検知を削減しました

SV.STRBO.BOUND_COPY.OVERFLOW

新たな欠陥が検出されました

SV.STRBO.NOBOUND_COPY

新たな欠陥が検出されました
SV.TAINTED.CALL.INDEX_ACCESS 新たな欠陥が検出されました
SV.TAINTED.GLOBAL 新たな欠陥が検出されました
UNINIT.CTOR.MUST 誤検知を削減しました
UNUSED.FUNC.GEN 誤検知を削減しました
UFM チェッカー 新たな欠陥が検出されました

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

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

分類基準の改善

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

分類基準 新規または更新
cert_cpp.tconf と cert_c_pp_ja.tconf

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

  • CERT EXP56-CPP

cert_java.tconf と cert_java_ja.tconf

cert_java.tconf および cert_java_ja.tconf 分類基準は、それぞれ cert_java_community.tconf と cert_java_community_ja.tconf から名前変更されました。

cert_java.tconf および cert_java_ja.tconf 分類基準にかなり多数のマッピングを追加しました。

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_2023_top_25_cs.tconf と cwe_2023_top_25_cs_ja.tconf

cwe_2023_top_25_java.tconf と cwe_2023_top_25_java_ja.tconf

Klocwork チェッカーを 2023 CWE 上位 25 の最も危険なソフトウェアの弱点にマッピングする新しい分類基準を追加しました。
cwe_all_cxx.tconf と cwe_all_cxx_ja.tconf

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

  • CWE-119

  • CWE-124

  • CWE-125

  • CWE-787

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

disa_stig_v5_java.tconf and disa_stig_v5_java_ja.tconf

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

  • APSC-DV-001540

hkmc_c.tconf と hkmc_c_ja.tconf

hkmc_cpp.tconf と hkmc_cpp_ja.tconf

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

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_2023_c11_all_checkers.tconf と misra_c_2023_c11_all_checkers_ja.tconf

misra_c_2023_c11_certified.tconf と misra_c_2023_c11_certified_ja.tconf

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

  • 必須のルール

  • 必要なルール

misra_c_2023_c90_all_checkers.tconf と misra_c_2023_c90_all_checkers_ja.tconf

misra_c_2023_c90_certified.tconf と misra_c_2023_c90_certified_ja.tconf

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

  • 必要なルール

misra_c_2023_c99_all_checkers.tconf と misra_c_2023_c99_all_checkers_ja.tconf

misra_c_2023_c99_certified.tconf と misra_c_2023_c99_certified_ja.tconf

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

  • 必須のルール

  • 必要なルール

pci_3_2_1_cxx.tconf and pci_3_2_1_cxx_ja.tconf

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

  • 6.5.2

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

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

  • Clang

  • Clang-cl

  • GNU

  • Green Hills

  • Microsoft Visual C++

  • Windriver GCC

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

ライセンス

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

2022 ライセンスは、Klocwork 2023.4 との互換性がありません。最新バージョンの製品を使用するには、新しいライセンスが必要です。ライセンスの入手に関しては、license@perforce.com 宛てにお問い合わせください。

このリリースでは、Klocwork による RLM ドングルの使用に関する情報が追加されました。詳細については、サポートされる RLM のバージョンおよび RLM ドングルをサポートするオペレーティングシステムを参照してください。

Klocwork 2023.1 の時点での FLEXlm/FlexNet Publisher の販売終了通知

Klocwork 2023.1 の時点で、Klocwork は、FLEXlm/FlexNet Publisher から Reprise License Manager (RLM) に移行することで、ライセンス管理ツールを変更しています。FLEXlm/FlexNet Publisher はサポートされなくなります。

Reprise 用の新しい製品ライセンスファイルが生成される予定であり、Klocwork 旧バージョン用の FLEXlm ライセンスファイルは、必要な場合に提供されます。

移行の詳細については、FlexLM から Reprise への移行ライセンスを参照してください。

システム要件の変更

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

  • Windows 11 (バージョン 23H2)

  • Debian 11.8

  • Amazon Linux 2 (2.0.20231101.0 Update)

  • Ubuntu 20.04.6 LTS、22.04.3 LTS

  • openSUSE Leap 15.5

  • SUSE Enterprise 15 SP5

  • Eclipse 4.29 (2023-09)

  • Android Studio Giraffe (2022.3.1 Patch 3)

  • Visual Studio 2017 バージョン 15.9.58

  • Visual Studio 2019 バージョン 16.11.31

  • Visual Studio 2022 バージョン 17.7.6

  • Visual Studio Code 1.84.1 (サポートされる最小バージョンは 1.74.3)

  • IntelliJ IDEA 2023.1.5、2023.2.4

  • CLion 2023.2 (2023.2.2 まで)

  • Microsoft Edge 108.x ~ 119.x

  • Firefox 119.x、115.x ESR

  • Chrome 119.x

  • Jenkins 2.431

  • Gradle 8.3

  • Windows RLM v15.1BL2

  • Linux RLM v15.1BL2

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

  • Ubuntu 16.04

  • Visual Studio 2022 バージョン 1.72.2 ~ 1.74.2

  • IntelliJ IDEA 2019.1、2019.2

  • Microsoft Edge 105.x ~ 107.x

  • Firefox 105.x ~ 106.x

  • Chrome 106.x ~ 108.x

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

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

リリース 2023.4 以降、Klocwork サーバーインストールは廃止されました。より効率的で統合されたエクスペリエンスを実現するには、Validate インストールに移行することをお勧めします。

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

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

  • Validate のインストール時に、現在の projects_root の場所にValidate の projects_root を設定します。

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

指摘のグループ化の廃止

指摘のグループ化は、Klocwork 2023.3 で廃止されました。以前のバージョンからアップグレードする場合は、移行を実行する前に指摘のグループ化をオフにすることをお勧めします。

Klocwork 2021 のメンテナンス終了

全バージョンの Klocwork 2021 のメンテナンスが、2023 年 3 月 31 日に終了しました。メンテナンス終了 (EOM) 日と販売終了 (EOS) 日も 2023 年 3 月 31 日でした。Klocwork リリースのサポート可否についての詳細は、「Klocwork 製品のライフサイクル」を参照してください。

Klocwork 2023.1 での Path API バージョンのアップグレード

パス解析インスタンス内でのマルチスレッド実行に対応するため、Path API のバージョンをアップグレードしました。アップグレードされた API には、旧バージョンとの下位互換性はありません。Path API を使用するすべてのカスタムチェッカーは、2023 Klocwork Path API のヘッダーとライブラリを使用することで、更新および再コンパイルする必要があります。詳細については、Path API ドキュメンテーションを参照してください。

Klocwork 2023.1 の時点での macOS の販売終了通知

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

  • macOS