Klocwork 2022.2 の新機能

以下は Klocwork 2022.2 の新機能です。 このバージョンが既存の Klocwork のアップグレードである場合、使用法に影響する項目については、 kwlimitations.htm も参照してください。

プロジェクトストリーム

Klocwork のプロジェクトストリーム機能での、ストリームプロジェクト、結果の保管、プロジェクトの移行に関して同一の複数のバージョンを持つコードベースの処理の効率が改善しました。 本リリースでは:

  • ストリームを識別するためのデスクトッププラグインのサポートがされるようになり、開発者がプロジェクトとそのストリーム間でコンテキストをスイッチし、その後結果を選択したストリームにロードすることが可能になりました。
  • すべての Klocwork ツールチェーンおよび、プラグインにわたりストリームのサポートが完備されました。
  • 並列ストリームビルドを導入し、KlocworkのValidate プラットフォームに解析結果をロードしているときのパーフォーマンスを改善しました。
  • 古いレガシープロジェクトからストリームに移行するためのパスを用意しました。

Java

本リリースに増分解析、差分解析のサポートを追加しました。

  • 差分解析は変更のあったファイルのみを解析するために、サーバーからのシステムコンテキストデータを使用します。一方で、システム全体が解析されたような diff 解析を提供します。結果的に最も短い解析時間になります。
  • この機能を使用した場合、内部的にベンチマークテストされたOSSプロジェクトは解析時間が最大63%短縮されました。

C/C++ 解析エンジン

重要な問題点に焦点をあてるために欠陥抑止機能を使用することが可能です。ユーザに責任のないコード内の欠陥または、問題のあるノイズ(サードパーティのコード、ライブラリ、ヘッダなど)をフィルタリングすることができます。

Microsoft Visual Studio 2022 IDE プラグイン

Visual Studio 2022 Extension を使用することで、チェックイン前に問題点を迅速かつ簡単にチェックし修正することができます。 この拡張機能は C/C++、C# および、混合プロジェクト、ソリューションをサポートします。

コーディング標準

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

  • CERT C
  • Java 向け CWE C、 JavaScript および Python 向け CWE C
  • Java 向け DISA STIG バージョン 5
  • Java、JavaScript および Python 向け2021年度版 OWASP トップ 10

Klocwork ポータルから Validate へのリブランディング

Klocwork ポータルが 新しく Validate に生まれ変わりました。

Validate プラットフォームに対する我々の構想は、Perforce 静的解析ツールの Klocwork と Helix QAC を信頼できる唯一の情報源にすることです。 この行程は新しい名前、インストローラ、ルックアンドフィールからはじまります。

今後の改善にご期待ください!

Klocwork チェッカーの改善

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

新しい Klocwork チェッカー

チェッカー 説明

ABV.GENERAL.MULTIDIMENSION

このC/C++チェッカーは、多次元配列の配列境界の違反にフラグを立てます
CERT.EXIT.HANDLER_TERMINATE このC/C++チェッカーは、exit ハンドラ関数から exit関数を呼出すコードにフラグを立てます
CERT.FIO.NO_FLUSH このC/C++チェッカーは、flush または、ポジショニングに関する関数が欠如している場合にフラグを立てます
CERT.FSETPOS.VALUE このC/C++チェッカーは、'fgetpos()' 関数によって生成されたのではない型 fpos_t の引数により 'fsetpos()'が呼出されたときにフラグを立てます
CERT.STDLIB.SIGNAL このC/C++チェッカーは、SIGFPE、SIGBUS、SIGSEGV、SIGILL、SIGEMT および、SIGTRAP の計算例外グナルハンドラから戻ったときにフラグを立てます
CERT.VA_ARG.TYPE このC/C++チェッカーは、va_arg()へ渡された型と実引数拡張後の可変引数関数へ渡された型が一致しないときにフラグを立てます
CERT.VA_START.TYPE

このC/C++チェッカーは、未対応のオブジェクト型が2番目の引数として va_start() に渡されるときにフラグを立てます

SV.SSRF.URI この Javaチェッカーは、Java webサーバーアプリケーションがURLを受け取るまたは、アップストリームコンポーネントからの同様のリクエストを受取り、この URL の内容を取り込む、しかし、求められている先にリクエストが送られたかどうかが100%確実でない場合にフラグをたてます

変更された Klocwork チェッカー

チェッカー 説明
ABV.GENERAL 誤検知を削減しました
ABV.STACK 誤検知を削減しました
AUTOSAR.ADD.NULLPTR 誤検知を削減しました
AUTOSAR.ARRAY.CSTSLE 誤検知を削減しました
AUTOSAR.ASSIGN.REF_QUAL 誤検知を削減しました
MISRA.FUNC.UNMATCHED.PARAMS 誤検知を削減しました
MISRA.INCL.UNSAFE 新たな欠陥が検出されました
MLK.MUST 新たな欠陥が検出されました
NPD.GEN.MUST 誤検知を削減しました
NNTS.MUST 新たな欠陥が検出されました
RI.IGNORED 新たな欠陥が検出されました
SV.FMT_STR.SCAN_FORMAT_MISMATCH.BAD 誤検知を削減しました

有効化または無効化されたチェッカー

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

  • ABV.GENERAL.MULTIDIMENSION
  • SV.SSRF.URI

分類基準の改善

インストールの一部として、チェッカーを 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_rules.tconf と cert_c_rules_ja.tconf に名前が変更された cert_c.tconf と cert_c_ja.tconf

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

  • CERT ARR30-C
  • CERT ARR38-C

  • CERT ENV32-C

  • CERT EXP47-C

  • CERT FIO39-C

  • CERT FIO44-C

  • CERT POS30-C

  • CERT SIG35-C

  • CERT STR32-C

以下の規則へのマッピングを削除しました。

  • CERT EXP00-C

cert_c_all.tconf と cert_c_all_ja.tconf

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

  • CERT ARR00-C
  • CERT ARR30-C

  • CERT ARR38-C

  • CERT ENV01-C

  • CERT ENV32-C

  • CERT ERR30-C

  • CERT EXP08-C

  • CERT EXP47-C

  • CERT FIO39-C

  • CERT FIO44-C

  • CERT POS30-C

  • CERT SIG35-C

cert_cpp.tconf と cert_cpp_ja.tconf

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

  • CERT CTR50-CPP

  • CERT ENV32-C

  • CERT EXP08-CPP

  • CERT EXP47-C

  • CERT EXP50-CPP

  • CERT EXP58-CPP

  • CERT FIO39-C

  • CERT FIO44-C

  • CERT INT04-CPP

  • CERT MSC51-CPP

  • CERT POS30-C

  • CERT SIG35-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-119

  • CWE-125

  • CWE-787

cwe_2021_top_25_java.tconf と cwe_2021_top_25_java_ja.tconf

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

  • CWE-276

  • CWE-918

  • CWE-77

cwe_all_cxx.tconf と cwe_all_cxx_ja.tconf

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

  • CWE-119

  • CWE-120

  • CWE-122

  • CWE-125

  • CWE-193

  • CWE-251

  • CWE-787

  • CWE-788

  • CWE-805

cwe_all_java.tconf と cwe_all_java_ja.tconf

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

  • CWE-918

disa_stig_10_java.tconf と disa_stig_10_java_ja.tconf これらの分類基準を削除しました。
disa_stig_v5_cxx.tconf と disa_stig_v5_cxx_ja.tconf

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

  • V-222612 (APSC-DV-002590)
disa_stig_v5_java.tconf and disa_stig_v5_java_ja.tconf Klocwork Java チェッカーを DISA STIG バージョン 5 ID にマッピングする新しい分類基準。
Helix QAC 分類基準 Helix QAC 分類基準は、Helix QAC バージョン 2022.2 に更新されています。
kw_quality_std_cxx.tconf と kw_quality_std_cxx_ja.tconf

チェッカーを以下のカテゴリにマップしました。

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

misra_c_2012_c90_all_checkers.tconf と misra_c_2012_c90_all_checkers_ja.tconf

misra_c_2012_c90_all_checkers_certified.tconf と misra_c_2012_c90_all_checkers_certified_ja.tconf

misra_c_2012_c99_all_checkers.tconf と misra_c_2012_c99_all_checkers_ja.tconf

misra_c_2012_c99_all_checkers_certified.tconf と misra_c_2012_c99_all_checkers_certified_ja.tconf

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

  • Dir.4.1

  • Dir.4.2

  • 18.1

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

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

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

  • Dir.4.1

  • Dir.4.2

  • 18.1

  • 21.17

  • 21.18

owasp_2021_10_cxx.tconf and owasp_2021_10_cxx_ja.tconf

owasp_2021_10_java.tconf and owasp_2021_10_java_ja.tconf

owasp_2021_10_js.base.tconf と owasp_2021_10_js_ja.base.tconf

owasp_2021_10_py2.tconf と owasp_2021_10_py2_ja.tconf

owasp_2021_10_py3.tconf と owasp_2021_10_py3_ja.tconf

Klocwork チェッカーを 2021 年版 OWASP トップ 10 にマッピングする新しい分類基準。

pci_3_2_1_community_cs.tconf および pci_3_2_1_community_cs_ja.tconf

pci_3_2_1_community_cxx.tconf と pci_3_2_1_community_cxx_ja.tconf

pci_3_2_1_community_java.tconf と pci_3_2_1_community_java_ja.tconf

ファイル名から "community" を削除しました。

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

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

  • IAR Systems C
  • QNX
  • Tensilica Xtensa C/C++

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

ライセンス

Klocwork は Reprise License Manager(RLM) をサポートするようになりました。 FLEXlm/FlexNet Publisher のサポートは非推奨になりましたが、Klocwork 2023.1 まで使用可能です。既存の FLEX ライセンスファイルは Klocwork 2022 の残りのリリースで引き続き使用することができます。 新しいライセンスファイルが必要な場合は、 license@perforce.com にお問合せください。

2021のライセンスは Klocwork 2022.2と互換性がありません。 製品の最新バージョンを使用するためには新しいライセンスが必要です。 新しいライセンスの取得については、 license@perforce.com にお問合せください。

Log4j ライブラリの v2 へのアップグレード

Klocwork の使用する log4j ライブラリが v2 へアップグレードされました。 Klocworkは og4j v1 を使用していましたが、log4shell の脆弱性には影響を受けませんでした。Klocwork に対するセキュリティ強化のため、log4j ライブラリを最新のバージョンにアップデートしました。

システム要件の変更

本リリースでは以下のサポートが追加になりました。

  • Microsoft Visual Studio 2022 のバージョン 17.2.4 まで

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

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

Klocwork 2020 の全バージョンに対するメンテナンスは2022年3月31日をもって終了しました。 メンテナンス終了(EOM)日と販売終了(EOS)日も 2022年3月31日でした。Klocwork の全リリースに対するサポートの可用性に関する情報については、 Klocwork Product Lifecycleを参照してください。

事前予告

今後のリリースで以下の変更が予定されていることに留意してください。

Klocwork 2022.3 での Path API のアップグレード

Klocwork 2022.3より、カスタム C/C++ Path チェッカーはマルチスレッドの互換性をレビューする必要があります。 競合状態の可能性に対するカスタムチェッカーをレビューし、2022.3 Klocwork Path API ヘッダーおよび、ライブラリを使用して再コンパイルすることを推奨します。 再コンパイルされない旧来のカスタムチェッカーは引き続き動作しますが、並列処理機能の改善に使用することはできません

Klocwork 2023.1 時点での FLEXlm/FlexNet Publisher の終了のお知らせ

これは、FLEXlm/FlexNet Publisher ライセンスファイルの終了および、サポートの終了に関する6か月予告です。

Klocwork は Klocwork 2023.1 よりライセンス管理ツールを FLEXlm/FlexNet Publisher から Reprise License Manager (RLM)に変更します。

新しい製品ライセンスファイルは Reprise 用に生成されます。ユーザが古い Klocwork のバージョンの FLEX ライセンスファイルを必要とする場合はそれを用意致します。

Klocwork 2023.1 時点での MacOS の終了のお知らせ

Klocwork 2023.1 より、以下のオペレーティングシステムおよび、インストローラはサポートされません。

  • MacOS