Klocwork 2023.1 の新機能

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

CI/CD パイプライン差分解析の管理

Validate の新しい [CI ビルド] タブを使用して、継続的インテグレーションビルドの差分解析を管理することができます。CI ビルドを実行することにより、完全なビルドを実行しなくても、はるかに早く指摘を特定し、サーバーの指摘と同じ方法で管理することができます。 詳細については、CI/CD パイプライン差分解析の管理を参照してください。さらに、CI ビルドを作成、更新、または削除するための API アクション、および CI に関する指摘の詳細情報を取得するための API アクションも追加されています。詳細については、指摘とメトリック API の例を参照してください。

C/C++

このリリースでは、

  • 解析の並列化を強化することで、プロジェクトに関する解析フェーズの速さを改善しました

  • 複数の MISRA 規則のサポートを追加し、MISRA C 2012 (AMD2 まで) の適用範囲を 97.5% から 99% に拡大しました

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

C#

次のサポートを追加して、バージョン 8.0 の C# 言語仕様のサポートを改善しました。

  • インターフェイスの const メンバー宣言

  • 読み取り専用 instance メンバー

  • 静的ローカル関数

  • デフォルトの interface メソッド

  • null 許容参照型

  • 非同期ストリーム

  • 宣言の使用

  • 破棄可能な ref 構造体

Java

DISA STIG 基準の適用範囲を大幅に改善する多数の Java チェッカーを追加しました。以下のチェッカーセクションで、一覧表を確認できます。

Java 14 のサポートを強化し、Java 15 の部分的なサポートを追加しました。

  • PATH 解析で Java 14 のサポートを改善しました。たとえば、PATH 解析での switch 式のサポートを改善しました。
  • Klocwork では、kwant、kwgradle、kwmaven などのビルド統合コマンドで Java 15 がサポートされ、Java knowledge base (ナレッジベース) で Java 15 API がサポートされるようになりました。

kwandroid コマンドで、C++ または Java 用に別の build specification (ビルドスペック) を生成するために使用できる --lang オプションがサポートされるようになりました。

JavaScript、Kotlin、Python

JavaScript、Kotlin、および Python の解析エンジンとチェッカーをアップグレードおよび改善しました。これには、使いやすさを向上させるために、ドキュメントでコードサンプルの構文の強調表示を追加することなどが含まれています。

Python チェッカー分類基準が修正され、Python チェッカーをカスタマイズするチェッカー引数を指定できるようになりました。

また、.eslintignore ファイルのサポートが追加されて、JavaScript 解析も改善されました。このファイルには、JavaScript 解析でスキップされる無視対象のパスのリストが含まれています。

Visual Studio extension

Visual Studio extension を kwcheck コマンドなど外部の解析エンジンを使用して実行よう設定することができるようになりました。大規模なプロジェクトの場合、kwcheck コマンドを使用することで解析時間を削減することができます。詳細については [解析と表示]タブ を参照してください。

コーディング基準

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

  • CWE
  • DISA STIG
  • 次世代主力戦闘機 C++
  • OWASP
  • MISRA

チェッカーの改善

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

新しいチェッカー

チェッカー 説明
CXX.SV.INSECURE_COOKIE この C/C++ チェッカーは、保護されていない可能性があるネットワーク通信でアプリケーションが cookie を使用している場合に検出します。
CXX.SV.PERSISTENT_COOKIE この C/C++ チェッカーは、Web サイトでアプリケーションがセッション cookie ではなく永続的な cookie を変更のトラッキングに使用している場合に検出します。
CXX.SV.XXE この C/C++ チェッカーは、アプリケーションが XML 攻撃に対して脆弱な場合に検出します。
MISRA.INCL.LANG.FEATURES.2012 この MISRA チェッカーは、MISRA C 2012 AMD2 Rules 1.4 のサポートに対応しています。緊急的な言語機能は使用しないものとします。
MISRA.INCL.LANG.FEATURES.MT.2012 この MISRA チェッカーは、MISRA C 2012 AMD2 Rules 1.4 のサポートに対応しています。緊急的な言語機能は使用しないものとします。
MISRA.LANG.FEATURES.2012 この MISRA チェッカーは、MISRA C 2012 AMD2 Rules 1.4 のサポートに対応しています。緊急的な言語機能は使用しないものとします。
MISRA.LANG.FEATURES.MT.2012 この MISRA チェッカーは、MISRA C 2012 AMD2 Rules 1.4 のサポートに対応しています。緊急的な言語機能は使用しないものとします。
MISRA.RESOURCES.FILE.OPEN_READ_WRITE.2012 この MISRA チェッカーは、MISRA C 2012 Rule 22.3 のサポートに対応しています。読み取りおよび書き込みアクセスのために、同じファイルを別のストリームで同時に開かないものとします。
MISRA.STDLIB.SYSTEM.2012_AMD2 この MISRA チェッカーは、MISRA C 2012 Rule 21.21 のサポートに対応しています。<stdlib.h> の標準ライブラリ関数 system は使用しないものとします。
SV.CERT.INVALID この Java チェッカーは、X509 証明書が検証されずに、Trust Anchors を使用することで生成された場合に検出します。
SV.ECV.TRUSTMANAGER この Java チェッカーは、X509TrustManager の実装によって証明書の有効性が制御されない (つまり、例外が呼び出されない) 場合に検出します。
SV.IL.SESSION この Java チェッカーは、サーバーまたはクライアントのセッション ID がアプリケーションログに記録された場合に検出します。
SV.PASSWD.HC.MINLEN この Java チェッカーは、パスワードを受け取るメソッドまたは暗号化を実行するメソッドで、ハードコードされた文字列が使用された場合に検出します。
SV.SESSION.FIXATION.COOKIE この Java チェッカーは、汚染された値を使用して JSESSIONID cookie が設定された場合に検出します。
SV.SPRING.FIXATION この Java チェッカーは、セッション固定化保護が無効になった場合は常に検出します。
SV.WEAK.KEYS.AES この Java チェッカーは、AES 暗号化アルゴリズムが不十分なサイズのキーで使用されている場合に検出します。
SV.WEAK.KEYS.DH この Java チェッカーは、DH 暗号化アルゴリズムが不十分なサイズのキーで使用されている場合に検出します。
SV.WEAK.KEYS.DSA この Java チェッカーは、DSA 暗号化アルゴリズムが不十分なサイズのキーで使用されている場合に検出します。
SV.WEAK.KEYS.EC この Java チェッカーは、EC 暗号化アルゴリズムが不十分なサイズのキーで使用されている場合に検出します。
SV.WEAK.KEYS.RSA この Java チェッカーは、RSA 暗号化アルゴリズムが不十分なサイズのキーで使用されている場合に検出します。
SV.WEAK.TLS この Java チェッカーは、1.0 や 1.1 などの脆弱な TLS プロトコルが使用されている場合に検出します。
SV.XSS.COOKIE.SECURE この Java チェッカーは、クライアントと Web サイトとの通信のセッション ID を保存するために使用される cookie が HTTPS や SSL などの安全なプロトコルで送信されない場合に検出します。

変更されたチェッカー

チェッカー 説明

ABV.GENERAL

新たな欠陥が検出されました。誤検知を削減しました。
ABV.STACK 新たな欠陥が検出されました
CL.SHALLOW.ASSIGN 新たな欠陥が検出されました
CONC.DL チェッカーへの全体的な改善
チェッカーの DBZ ファミリー 新たな欠陥が検出されました
FUNCRET.GEN 誤検知を削減しました
JD_LOCK チェッカーへの全体的な改善

チェッカーの有効/無効を切り替える

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

  • SV.CERT.INVALID
  • SV.IL.SESSION
  • SV.IL.SESSION.CLIENT
  • SV.PASSWD.HC.MINLEN

  • SV.PERMS.WIDE
  • SV.SESSION.FIXATION.COOKIE
  • SV.SPRING.FIXATION

  • SV.WEAK.KEYS.AES

  • SV.WEAK.KEYS.DH

  • SV.WEAK.KEYS.DSA

  • SV.WEAK.KEYS.EC

  • SV.WEAK.KEYS.RSA

  • SV.WEAK.TLS

  • SV.XSS.COOKIE.SECURE

分類基準の改善

インストールの一部として、チェッカーを 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 EXP33-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_2021_top_25_cxx.tconf と cwe_2021_top_25_cxx_ja.tconf

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

  • CWE-611

cwe_all_cxx.tconf と cwe_all_cxx_ja.tconf

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

  • CWE-539

  • CWE-611

  • CWE-614

cwe_all_java.tconf と cwe_all_java_ja.tconf

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

  • CWE-295

  • CWE-311

  • CWE-315

  • CWE-326

  • CWE-327

  • CWE-384

  • CWE-614

  • CWE-807

disa_stig_v4_cxx.tconf と disa_stig_v4_cxx_ja.tconf

disa_stig_v5_cxx.tconf と disa_stig_v5_cxx_ja.tconf

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

  • V-222577 (APSC-DV-002230)

  • V-222578 (APSC-DV-002240)

  • V-222596 (APSC-DV-002440)

  • V-222608 (APSC-DV-002550)

disa_stig_v4_java.tconf と disa_stig_v4_java_ja.tconf

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

  • V-222396 (APSC-DV-000160)

  • V-222397 (APSC-DV-000170)

  • V-222536 (APSC-DV-001680)

  • V-222542 (APSC-DV-001740)

  • V-222543 (APSC-DV-001750)

  • V-222550 (APSC-DV-001810)

  • V-222555 (APSC-DV-001860)

  • V-222569 (APSC-DV-002010)

  • V-222571 (APSC-DV-002030)

  • V-222572 (APSC-DV-002040)

  • V-222585 (APSC-DV-002310)

  • V-222589 (APSC-DV-002350)

  • V-222596 (APSC-DV-002500)

  • V-222612 (APSC-DV-002590)

  • V-222641 (APSC-DV-003100)

Helix QAC 分類基準 Helix QAC 分類基準は、Helix QAC バージョン 2023.1 に更新されています。
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

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

  • 規則 22.3

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

 

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

  • 規則 22.3

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

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

  • 規則 1.4

  • 規則 21.21

  • 規則 22.3

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

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

  • 規則 21.21

  • 規則 22.3

owasp_2021_10_cxx.tconf and owasp_2021_10_cxx_ja.tconf

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

  • A5

owasp_2017_10_java.tconf と owasp_2017_10_java_ja.tconf

 

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

  • A2

  • A3

  • A6

owasp_2021_10_java.tconf and owasp_2021_10_java_ja.tconf

 

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

  • A2

  • A4

  • A7

py.base.tconf and py.base_ja.tconf 名前を python.py3.tconf and python.py3_ja.tconf から変更しました。

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

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

  • ARM Optimizing C/C++
  • Clang
  • IAR Systems C コンパイラ/リンカー
  • Lapis Technology CCU8

サポートされる 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.6
  • Oracle Linux 8.7
  • Amazon Linux 2 (2.0.20230119.1 アップデートバージョン)

  • Eclipse 2022-12 (4.26)

  • Android Studio Electric Eel (2022.1.1 Patch 1)

  • Visual Studio 2019 バージョン 16.11.23

  • Visual Studio 2022 version 17.4.4

  • Visual Studio Code 1.65.2 (1.75.1 まで)

  • IntelliJ IDEA 2022.3 (2022.3.2 まで)

  • CLion 2022.3 (2022.3.2 まで)

  • Microsoft Edge 99.x ~ 110.x

  • Firefox 98.x ~ 110.x

  • Chrome 99.x ~ 110.x

  • Jenkins 2.391

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

  • FLEXlm/FlexNet Publisher

  • macOS

  • SUSE Enterprise 15

  • Visual Studio Code 1.63.2 ~ 1.65.1

  • IntelliJ IDEA 2016.x ~ 2018.x (2018.3.6 まで)

  • Microsoft Edge 96.x ~ 98.x

  • Firefox 96.x ~ 97.x

  • Chrome 97.x ~ 98.x

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

Klocwork 2021 のメンテナンスの終了

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

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

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

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

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

  • macOS