Klocwork 2023.3 の新機能

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

ビルドタグによるビルドの識別

システム (通常) ビルドと CI ビルドの両方にビルドタグが導入されました。ビルドタグは、情報の簡潔な要素であり、次のことが可能になります。

  • ブランチ名、コミット ID、プラットフォーム、アーキテクチャなどの便利なタグを割り当てることにより、特定のビルドを識別しやすくする

  • スクリプトで使用できる任意のメタデータをビルドに追加する

  • コミットまたはブランチをビルドに関連付ける (さらに後で、クエリしたり、使用したりして、ファイルマッチングオーバーライドファイルが自動的に生成されるようにすることができる)

ビルドタグを追加、編集、表示する方法は多数あります。 こうした方法には、Web ポータル、Web API、kwadmin または validate admin の load & list-builds コマンド、および kwciagent の run コマンドと sync コマンドを介してアクセスできます。 詳細については、ビルドタグの使用を参照してください。

オーバーライドファイルによるファイルマッチングの手動指定

ファイルマッチングを手動で指定するために、ファイルマッチングオーバーライドファイルオプションが追加されています。

オーバーライドファイルとは、ファイルに追加、削除、または名前変更のマークを付けるために使用できるシンプルなテキストファイルです。オーバーライドファイルを使用して、複雑なシナリオをより適切に制御し、ファイルの不一致を減らすことができます。

オーバーライドファイルを適用するには、kwadmin load または validate admin load で file-overrides オプションを使用します。詳細と例については、ファイルマッチングオーバーライドファイルを使用するを参照してください。

ビルドのロードに関する推奨事項

Klocwork では、ビルドをロードするときに自動マッチングアルゴリズムを使用して、以前のビルドと比較してどのファイルが変更または移動されたか判断します。これは、ビルド間で指摘をマッチングするための基盤となる機能であり、ビルドの比較結果の精度に大きな影響を及ぼします。

Klocwork ビルドをロードするときに最適な一致結果を得るには、次のことをお勧めします。

  • 常にパス置換を使用する

  • ファイルの完全一致を有効にする

  • ファイルマッチングオーバーライドファイルを使用する

  • ビルドタグを使用する

  • 論理ストリーム構造を作成する

詳細については、ビルドのロードで推奨される手法を参照してください。

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

Klocwork 2023.3 以降は、Visual Studio で実行される解析にデフォルトで kwcheck 外部解析エンジンが使用されるようになりました。kwcheck.exe をデフォルトのエンジンとして使用すると、インデックス作成を省略して解析をより早く開始できるようになるだけでなく、デスクトップとサーバーの両方で同じ基礎解析フレームワークを使用できるようになるため、欠陥の解決の一貫性と効率が向上します。

外部エンジンを使用するには、kwcheck がインストールされていることを確認してください。kwcheck を構成するには、[拡張機能] > [Klocwork] > [オプション] に移動します。

ストリーム

プロジェクトのストリームを処理、編集、および削除するときの速度とパフォーマンスがさらに強化されました。

C/C++

このリリースでは、

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

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

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

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

  • MISRA C:2023 に関する新しい分類基準を追加しました

Java

このリリースでは、

  • Java 14 解析の完全なサポートを追加しました

コーディング基準

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

  • CWE
  • C/C++ の CWE 2023 上位 25
  • C/C++ の DISA-STIG
  • HKMC セキュアコーディング基準
  • MISRA C:2023

チェッカーの改善

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

新しいチェッカー

チェッカー 説明
PRECISION.LOSS.INIT この C/C++ チェッカーは、初期化中に比較的小さいデータ型への暗黙的なキャストによって精度 (データ) が損なわれる可能性がある状況を検出します。

変更されたチェッカー

チェッカー 説明
INFINITE_LOOP.GLOBAL 新たな欠陥が検出されました
INFINITE_LOOP.LOCAL 新たな欠陥が検出されました
LOCRET.ARG 誤検知を削減しました
MISRA.EXPANSION.UNSAFE 新たな欠陥が検出されました
MLK.MUST 新たな欠陥が検出されました
NPD.FUNC.MIGHT 誤検知を削減しました
RH.LEAK 誤検知を削減しました

RLK.OUT

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

SV.SSRF.URI

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

SV.USAGERULES.PROCESS_ VARIANTS

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

UNINIT.STACK.MUST 誤検知を削減しました
UNREACH.GEN 誤検知を削減しました
VA_UNUSED.INIT 誤検知を削減しました

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

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

  • PY3.E0001

  • PY3.E0013

  • PY3.E0014

  • PY3.E0015

  • PY3.F0001

  • PY3.F0002

  • PY3.F0010

  • PY3.F0011

分類基準の改善

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

分類基準 新規または更新
cwe_2023_top_25_cxx.tconf および cwe_2023_top_25_cxx_ja.tconf

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

cwe_all_cxx.tconf と cwe_all_cxx_ja.tconf

cwe_all_cxx.tconf 分類基準と cwe_all_cxx_ja.tconf 分類基準の構成を大幅に変更しました。

disa_stig_v4_cxx.tconf と disa_stig_v4_cxx_ja.tconf

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

  • APSC-DV-002590

  • APSC-DV-003170

disa_stig_v5_cxx.tconf と disa_stig_v5_cxx_ja.tconf

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

  • APSC-DV-002590

  • APSC-DV-003170

  • APSC-DV-002010

hkmc_c.tconf と hkmc_c_ja.tconf

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

  • C-INT-001

  • C-INT-003

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

Klocwork チェッカーを MISRA C:2023 基準にマッピングする新しい分類基準を追加しました。

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

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

  • Clang

  • GNU

  • TI Arm Clang

  • TI tms320c28x

  • TI msp430 C/C++

  • TI tms320c6x、TI tms320c55x、および TI C7000 Optimizing C/C++

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

ライセンス

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

2022 ライセンスは、Klocwork 2023.2 との互換性がありません。最新バージョンの製品を使用するには、新しいライセンスが必要です。ライセンスの入手に関しては、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 (バージョン 22H2)

  • AlmaLinux バージョン 9.0 ~ 9.2

  • Amazon Linux 2 (2.0.20230808.0 Update)

  • Oracle Linux 8.8

  • Rocky Linux バージョン 9.0 ~ 9.2

  • Eclipse 4.28 (2023-06)

  • Android Studio Giraffe 2022.3.1

  • CLion 2023.1 (2023.1.5 まで)

  • Visual Studio 2017 バージョン 15.9.56

  • Visual Studio 2019 バージョン 16.11.29

  • Visual Studio 2022 バージョン 17.7.1

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

  • Microsoft Edge 115.x

  • Firefox 116.x

  • Chrome 116.x

  • Jenkins 2.419

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

  • Visual Studio Code 1.69.1 ~ 1.72.1

  • Microsoft Edge 103.x ~ 105.x

  • Firefox 103.x ~ 105.x

  • Chrome 103.x ~ 105.x

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

指摘のグループ化の廃止

指摘のグループ化は、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