Klocwork 2023.2 の新機能

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

Validate

Validate では、指摘をより簡単に調査できるようなりました。[指摘の詳細] ページを開いたままで、指摘検索リストを表示、変更、および移動できるようになりました。新しい [ファイルナビゲーション] ペインを使用して、個々のファイルを検索し、指摘を調査します。これらの新しい UI ペインは構成可能であり、同じブラウザーを使用している場合、構成はセッション間で保持されます。

Validate では、QAC メトリックをインポートおよびエクスポートできるようになりました。QAC メトリックのリストについては、QAC メトリックリファレンスを参照してください。メトリックレポートデザイナーが改善されました: Validate では、しきい値と合計メトリック値のレポート定義を編集できます。レポート選択ページも強化されました。

Validate で使用できるいくつかのコマンドの名前が更新されました。詳細については、Validate コマンドリファレンスを参照してください。

Visual Studio 拡張機能

外部解析エンジンとして kwcheck コマンドを使用する場合、Visual Studio 拡張機能に対するビルドスペック生成のパフォーマンスが向上しました。これは、解析をはるかに早く開始できることを意味します。

ストリーム

表示にかかる時間が劇的に短縮され、ストリーム用のプロジェクトリストを使用できます。

C/C++

このリリースでは、

  • いくつかの MISRA 規則のサポートを追加し、MISRA C 2012 (AMD2 まで) の適用範囲を 拡大しました

  • 重大度の高い DISA STIG 規則の適用範囲を拡大しました

  • 2022 CWE 上位 25 の最も危険なソフトウェアの弱点に関する分類基準を追加するなど、CERT、OWASP、および CWE の適用範囲を改善しました

  • C++14 および C++17 解析のサポートを強化しました

* MISRA C 2012 を カバーするには、カスタマーサポートからさらなるパッケージが必要です。

C#

以下により、バージョン 8.0 の C# 言語仕様のサポートを改善しました

  • 静的コンストラクターのサポートの追加

  • インターフェイスでの入れ子にされた型と演算子宣言のサポートの追加

  • 逐語的に補間された文字列のサポートの改善

  • .. 演算子と ^ 演算子のサポートによる、範囲とインデックスのサポートの改善

Java

追加しました

  • Jakarta EE のサポート
  • DISA STIG と CWE のカバレッジを改善するチェッカー
  • Java 14 スイッチ式用に改善されたサポート

JavaScript

JavaScript プロジェクトのルートディレクトリを指定できるように、kwjsspec コマンドに --project-dir オプションを追加しました。このオプションは、解析のために .eslintignore ファイル (プロジェクトのルートディレクトリに存在する場合) をキャプチャするのに役立ちます。

コーディング基準

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

  • CERT
  • CWE
  • DISA STIG
  • MISRA
  • OWASP

チェッカーの改善

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

新しいチェッカー

チェッカー 説明
CXX.SV.PRIVATE_KEY.EMPTY_PASSWD この C/C++ チェッカーは、公開キー基盤 (PKI) ベースの認証で、秘密キーを保存するために空のパスワードが使用されると、それを検出します。
CXX.SV.PRIVATE_KEY.UNENCRYPTED この C/C++ チェッカーは、公開キー基盤 (PKI) ベースの認証で、秘密キーを保存するために暗号化されていない暗号が使用されると、それを検出します。これは、不正アクセスを引き起こす可能性があります。
CXX.SV.PWD_INPUT.REVIEW この C/C++ チェッカーは、アプリケーションでパスワード認証が使用されると、それを検出します。会社の認証ポリシーを確実に実施させるために、設計者は欠陥をレビューできます。
CXX.SV.PWD.PLAIN この C/C++ チェッカーは、アプリケーションがプレーンテキストに記述された文字列を使用して、パスワードまたは PIN を設定しようとすると、それを検出します。
CXX.SV.PWD.PLAIN.LENGTH この C/C++ チェッカーは、アプリケーションが 15 文字未満のプレーンテキストパスワードを設定しようとすると、それを検出します。
CXX.SV.PWD.PLAIN.LENGTH.ZERO この C/C++ チェッカーは、アプリケーションがゼロ文字の長さのプレーンテキストパスワードを設定しようとすると、それを検出します。
CXX.SIZEOF.CSTRING この Community C/C++ チェッカーは、char* で sizeof が使用されていることを検出します。
JAVA.SV.EMAIL.HOST この Java チェッカーは、サーバーが正しい証明書を確実に提示するようにメールサーバーのホスト名検証機能が適切に構成されていない場合を検出します。
JAVA.SV.XML.INVALID この Java チェッカーは、XML データが処理される前に XDS 検証されていることを確認することで、潜在的な XML インジェクションの脆弱性を検出します。

MISRA.MEMCMP.NTS.2012_AMD1

この MISRA チェッカーは、次の MISRA 2012 AMD1 のサポートに対応しています。規則 21.14 (必須): 標準ライブラリ関数 memcmp は、null 終端された文字列を比較するために使用してはなりません。

MISRA.MEMCMP.NTS.GLOBAL.2012_AMD1

この MISRA チェッカーは、次の MISRA 2012 AMD1 のサポートに対応しています。規則 21.14 (必須): 標準ライブラリ関数 memcmp は、null 終端された文字列を比較するために使用してはなりません。
MISRA.STDLIB.ABORT.2012_AMD2 この MISRA チェッカーは、次の MISRA C 2012 AMD2 Rule 21.8 のサポートに対応しています。<stdlib.h> の標準終了関数を使用してはなりません
MISRA.STDLIB.EOF.BAD_CMP.2012_AMD1 この MISRA チェッカーは、次の MISRA 2012 AMD1 のサポートに対応しています。規則 22.7 (必須): マクロ EOF は、EOF を返すことができる標準ライブラリ関数からの未変更の戻り値とのみ比較されなければなりません。

変更されたチェッカー

チェッカー 説明

ABV.GENERAL

新たな欠陥が検出されました
ABV.STACK チェッカーへの全体的な改善
ANDROID.RLK.SQLOBJ 誤検知を削減しました
CS.HIDDEN.MEMBER.LOCAL.CLASS 誤検知を削減しました
CS.HIDDEN.MEMBER.PARAM.CLASS 誤検知を削減しました
CS.NRE.FUNC.MIGHT 誤検知を削減しました
DBZ.GENERAL 新たな欠陥が検出されました

FUNCRET.GEN

誤検知を削減しました

INVARIANT_CONDITION.UNREACH

誤検知を削減しました

LOCRET.ARG

誤検知を削減しました
LV_UNUSED.GEN 誤検知を削減しました

MISRA.ASSIGN.OVERLAP

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

MISRA.CAST.PTR.UNRELATED

誤検知を削減しました
MISRA.INIT.BRACES 誤検知を削減しました

MISRA.TYPEDEF.NOT_UNIQUE

誤検知を削減しました
RNPD.DEREF 新たな欠陥が検出されました

UNREACH.GEN

誤検知を削減しました

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

このリリースのチェッカー構成ファイルのデフォルトの enabled フィールドに、以下のチェッカーが追加されました。

  • JAVA.SV.EMAIL.HOST
  • JAVA.SV.XML.INVALID

  • PY3.E0001

  • PY3.E0011

  • PY3.E0013

  • PY3.E0014

  • PY3.E0015

  • PY3.F0001

  • PY3.F0002

  • PY3.F0010

  • PY3.F0011

  • PY3.R0022

  • PY3.W0012

分類基準の改善

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

分類基準 新規または更新

cert_c_all.tconf と cert_c_all_ja.tconf

cert_c_rules.tconf and cert_c_rules_ja.tconf

cert_cpp.tconf と cert_cpp_ja.tconf

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

  • CERT MSC41-C

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-287

cwe_2021_top_25_cxx.tconf と cwe_2021_top_25_cxx_ja.tconf

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

  • CWE-276

  • CWE-287

cwe_2021_top_25_java.tconf と cwe_2021_top_25_java_ja.tconf

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

  • CWE-20

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

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

  • CWE-562

  • CWE-672

  • CWE-896

cwe_all_cxx.tconf と cwe_all_cxx_ja.tconf

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

  • CWE-80

  • CWE-99

  • CWE-121

  • CWE-122

  • CWE-127

  • CWE-131

  • CWE-195

  • CWE-196

  • CWE-256

  • CWE-259

  • CWE-276

  • CWE-287

  • CWE-307

  • CWE-311

  • CWE-312

  • CWE-321

  • CWE-412

  • CWE-467

  • CWE-522

  • CWE-672

  • CWE-682

  • CWE-690

  • CWE-704

  • CWE-786

  • CWE-798

  • CWE-805

  • CWE-843

  • CWE-896

  • CWE-910

  • CWE-1335

cwe_all_java.tconf と cwe_all_java_ja.tconf

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

  • CWE-74

  • CWE-295

disa_stig_v4_cxx.tconf と disa_stig_v4_cxx_ja.tconf

disa_stig_v5_cxx.tconf と disa_stig_v5_cxx_ja.tconf

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

  • V-222432 (APSC-DV-000530)

  • V-222536 (APSC-DV-001680)

  • V-222551 (APSC-DV-001820)

  • V-222554 (APSC-DV-001850)

disa_stig_v5_java.tconf and disa_stig_v5_java_ja.tconf

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

  • V-222555 (APSC-DV-001860)

Helix QAC 分類基準 Helix QAC 分類基準は、Helix QAC バージョン 2023.2 に更新されています。
jsf_av_rev_c_cpp.tconf と jsf_av_rev_c_cpp_ja.tconf

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

  • 規則 001

  • 規則 003

  • 規則 110

misra_c_2012_c90_all_checkers.tconf と misra_c_2012_c90_all_checkers_ja.tconf

misra_c_2012_c90_certified.tconf と misra_c_2012_c90_certified_ja.tconf

misra_c_2012_c99_all_checkers.tconf と misra_c_2012_c99_all_checkers_ja.tconf

misra_c_2012_c99_certified.tconf と misra_c_2012_c99_certified_ja.tconf

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

  • 規則 5.6

misra_c_2012_with_amd1_c90_all_checkers.tconf と misra_c_2012_with_amd1_c90_all_checkers_ja.tconf

misra_c_2012_with_amd1_c90_certified と misra_c_2012_with_amd1_c90_certified_ja.tconf

misra_c_2012_with_amd1_c99_all_checkers.tconf と misra_c_2012_with_amd1_c99_all_checkers_ja.tconf

misra_c_2012_with_amd1_c99_certified.tconf と misra_c_2012_with_amd1_c99_certified_ja.tconf

 

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

  • 規則 5.6

  • 規則 21.4

  • 規則 22.7

misra_c_2012_with_amd2_c11_all_checkers.tconf と misra_c_2012_with_amd2_c11_all_checkers_ja.tconf

misra_c_2012_with_amd2_c11_certified.tconf と misra_c_2012_with_amd2_c11_certified_ja.tconf

misra_c_2012_with_amd2_c90_all_checkers.tconf と misra_c_2012_with_amd2_c90_all_checkers_ja.tconf

misra_c_2012_with_amd2_c90_certified と misra_c_2012_with_amd2_c90_certified_ja.tconf

misra_c_2012_with_amd2_c99_all_checkers.tconf と misra_c_2012_with_amd2_c99_all_checkers_ja.tconf

misra_c_2012_with_amd2_c99_certified.tconf と misra_c_2012_with_amd2_c99_certified_ja.tconf

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

  • 規則 5.6

  • 規則 21.4

  • 規則 21.8

  • 規則 22.7

py.base.tconf and py.base_ja.tconf

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

  • Basic

  • クラス

  • 例外

  • インポート

  • 標準ライブラリの指摘

  • 型チェック

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

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

  • Clang

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

ライセンス

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

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

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 への移行ライセンスを参照してください。

システム要件の変更

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

  • Debian 11.7
  • Red Hat Enterprise Linux 8.8

  • Oracle Linux 8.7
  • Amazon Linux 2 (2.0.20230515.0 Update)

  • Ubuntu 22.04 ~ 22.04.2 LTS

  • Fedora 38

  • Eclipse 4.27 (2023-03)

  • Android Studio Flamingo 2022.2.1 Patch 2

  • Visual Studio 2017 バージョン 15.9.54

  • Visual Studio 2019 バージョン 16.11.26

  • Visual Studio 2022 バージョン 17.6.1

  • Visual Studio Code 1.78.2

  • IntelliJ IDEA 2022.2.5、2022.3.3

  • CLion 2022.2.5、2022.3.3、2023.1 (~ 2023.1.3)

  • Microsoft Edge 113.x

  • Firefox 113.x

  • Chrome 112.x

  • Jenkins 2.406

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

  • Fedora 36

  • Visual Studio Code 1.65.2 ~ 1.69.1

  • Microsoft Edge 99.x ~ 102.x

  • Firefox 98.x ~ 102.x

  • Chrome 99.x ~ 102.x

  • Safari 13.x

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

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