EN JP CN

Klocwork の新機能 2017

Klocwork の新機能 2017

以下は Klocwork 2017 の新機能です。アップグレードする場合、Klocwork の使用方法に影響を与える項目については、制限事項も参照してください。

指摘の SmartRank 利用

通常の方法で指摘を並べ替えたりフィルターするのは大変ですか?SmartRank を使用すれば、プロジェクトの指摘を優先化したりレビューできるようになりました。コードの洗練された解析に基づいて、解析の複雑さなどの要因を含めて、検出された指摘のサブセットへの SmartRank の勧告を識別および適用します。これらは、真の問題であることが確実な指摘であり、それらを最初に調査することをお勧めします。詳細については、SmartRank を使用した指摘の優先化を参照してください。

Microsoft Visual Studio 機能拡張

Visual Studio 機能拡張での問題の記述方法を簡略化しました。ローカルな指摘とシステム指摘は現在では単にデスクトップの指摘と呼ばれます。統合ビルドによってのみ検出された指摘は、サーバーの指摘と呼ばれます。また、Visual Studio 機能拡張の全体的なパフォーマンスも向上しました。

解析エンジンの精度および性能

今回のリリースでは、解析エンジンをアップグレードし、シンボリック式の数値間隔のトラッキングを改善しました。解析エンジンの精度向上に加えて、解析速度で平均で 10% の向上を期待できます。

C# 6.0 のサポート

次の C# 6.0 の機能のサポートを追加しました。

  • 自動プロパティイニシャライザー
  • 式ボディ付き関数メンバー
  • ゲッター専用自動プロパティ
  • インデックスイニシャライザー
  • static の使用

C++11 のサポート

次の C++11 の機能のサポートを追加しました。

  • Alignment support
  • Strongly-typed enums

ライセンス

Windows、Linux、Mac プラットフォームでは、サポートする FlexNet Publisher のバージョンをバージョン 2016 R1 (11.14.0) にアップグレードしました。このアップグレードには多数のセキュリティ更新が含まれており、FlexNet Publisher 11.10.0.2 の NIC 命名制限が削除されています。AIX および Sun Solaris で使用されている FlexNet Publisher のバージョンは変更されていません。

独自の FlexNet Publisher ライセンスサーバーを使用している場合は、Windows、Linux、および Mac での Klocwork 2017 の インストールは、FlexNet Publisher 2016 R1 (11.14.0) 以降と互換性があります。以前のバージョンの FlexNet Publisher は互換性がありません。

パス API の変更

念のために指摘しておきますが、Klocwork 2016 では、パス API の C++ バージョンについても数多くの変更が加えられました。「Klocwork C/C++ Path Analysis API Reference(Klocwork C/C++ パス解析 API リファレンス)」の第 2 章には非推奨関数がリストアップされており、それぞれについて代替の関数が記載されています。現在のところ非推奨関数を使用すると、コンパイラ警告が表示されます。

Klocwork 2017 の将来のリリースでは、Klocwork はコンパイラ警告の代わりにコンパイラエラーを生成します。当社では 2017年半ばに Path API の C バージョンを完全にリタイアさせることを計画しています。このため、廃止された関数を使用している場合は、サポート対象関数に今すぐ移行することをお勧めします。詳細については、Path API バージョン 11.2 からの重大な変更内容を参照してください。

継続的インテグレーションの改善点

Jenkins CI プラグインは Mac OS 上で動作します。

継続的インテグレーション作業の詳細については、継続的な統合と Klocwork 解析と弊社の継続的インテグレーション ビデオを参照してください。

Klocwork の継続的インテグレーション機能にご関心をお持ちの弊社お客様は、セールス担当までお問い合わせください。

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

以下のコンパイラについてサポートを開始しました。

  • HI-CROSS+ Motorola HC16
  • MPLAB XC16 C
  • Nintendo N32 および N64
次のコンパイラのサポート機能を改善しました。
  • Clang
  • GNU C/C++
  • Intel C++
  • Synopsys ARC MetaWare
  • WindRiver GCC

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

チェッカーの改善

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

新しいチェッカー

次のチェッカーを追加しました。

チェッカー説明
MISRA.FUNC.MODIFIEDPAR.2012MISRA C 2012 規則 17.8 の実装:関数パラメーターは変更してはなりません。
MISRA.INCR_DECR.SIDEEFF.2012MISRA C 2012 規則 13.3 の実装:インクリメント (++) またはデクリメント (--) 演算子を含む完全な式では、インクリメントまたはデクリメント演算子によって発生する以外に他の副作用が存在してはなりません。
MISRA.PTR.ARITH.2012MISRA C 2012 規則 18.4 の実装:+、-、+= および -= 演算子は、ポインタ型の式には適用すべきではありません。
MISRA.RESOURCES.FILE.USE_AFTER_CLOSE.2012MISRA C 2012 規則 22.6 の実装:FILE を指し示すポインターの値は、関連するストリームが閉じられたあとは使用すべきではありません。
MISRA.FUNC.NOPROT.DEF.2012MISRA C 2012 規則 8.4 の実装: 関数は定義されていますが、プロトタイプがありません
MISRA.STDLIB.FENV.2012

MISRA.STDLIB.FENV.MACRO.2012

MISRA C 2012 規則 21.12 の実装:<fenv.h> の例外処理は使用しないでください。

変更されたチェッカー

次のチェッカーを変更しました。

チェッカー影響度
INFINITE_LOOP.LOCAL新たな欠陥が検出されました。
ITER.CONTAINER.MODIFIED誤検知が少なくなることが期待されています。
MISRA.CAST.OBJ_PTR_TO_OBJ_PTR.2012新たな欠陥が検出されました。
MISRA.FUNC.UNUSEDPAR誤検知が少なくなることが期待されています。
RABV.CHECK検知が少なくなることが期待されています
RCA新たな欠陥が検出されました。
SV.TAINTED.INDEX_ACCESS新たな欠陥が検出されました。

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

このリリースでチェッカー構成ファイルのデフォルトの enabled フィールドは変更されていません。デフォルトで以前は有効になっているチェッカーは、無効になっていません。新しいチェッカーはどれもデフォルトでは有効になりません。

分類基準の改善

インストールの一部として、チェッカーを MISRA、CWE、OWASP、DISA STIG などの規格にマップするカスタム分類基準ファイルがいくつか提供されています。以下に、このリリースでの分類基準ファイルの変更のリストを示します。
注: 従来のリリースでカスタム分類基準(例えば MISRA)をインポートしている場合は、新しい分類基準ファイルをインポートして変更を反映させてください。

分類基準の変更

カスタム分類基準ファイルこのリリースにおける変更
misra_c_2012_c90.tconf および misra_c_2012_c90_ja.tconf
次のチェッカーを追加しました。
  • MISRA.RESOURCES.FILE.USE_AFTER_CLOSE.2012 (規則 22.6)
  • MISRA.FUNC.NOPROT.DEF.2012 (規則 8.4)
  • MISRA.PTR.ARITH.2012 (規則 18.4)
  • MISRA.INCR_DECR.SIDEEFF.2012 (規則 13.3)
  • MISRA.FUNC.MODIFIEDPAR.2012 (規則 17.8)

1 つのチェッカーを削除しました。

  • MISRA.FUNC.NOPROT.DEF (規則 8.4)
misra_c_2012_c99.tconf および misra_c_2012_c99_ja.tconf

次のチェッカーを追加しました。

  • MISRA.RESOURCES.FILE.USE_AFTER_CLOSE.2012 (規則 22.6)
  • MISRA.FUNC.NOPROT.DEF.2012 (規則 8.4)
  • MISRA.PTR.ARITH.2012 (規則 18.4)
  • MISRA.STDLIB.FENV.2012 および MISRA.STDLIB.FENV.MACRO.2012 (規則 21.12)
  • MISRA.INCR_DECR.SIDEEFF.2012 (規則 13.3)
  • MISRA.FUNC.MODIFIEDPAR.2012 (規則 17.8)

1 つのチェッカーを削除しました。

  • MISRA.FUNC.NOPROT.DEF (規則 8.4)
cwe_25_cxx.tconf および cwe_25_cxx_ja.tconf

We modified the following items:

  • NNTS.TAINTED は現在、 CWE-120.
  • NUM.OVERFLOW SV.TAINTED.BINOP、 および SV.TAINTED.CALL.BINOPは現在、 CWE-190.
cwe_10_cxx.tconf および cwe_10_cxx_ja.tconf

We modified the following items:

  • INCORRECT.ALLOC_SIZE は、もはや CWE-190 にマッピングされない
  • SV.TAINTED.BINOP および SV.TAINTED.CALL.BINOPは現在、 CWE-190.

  • CONC.DL は、もはや CWE-362 にマッピングされない
  • SV.TOCTOU.FILE_ACCESS は現在、 CWE-362.
  • MISRA.STDLIB.ATOI は、もはや CWE-676 にマッピングされない
misra_c_2012_with_amd1_c90.tconf および misra_c_2012_with_amd1_c90_ja.tconfすべての MISRA C 2012 C90 チェッカーと、MISRA C に関するすべてのチェッカーを含む新しい分類基準:2012修正1。
misra_c_2012_with_amd1_c99.tconf および misra_c_2012_with_amd1_c99_ja.tconfすべての MISRA C 2012 C99 チェッカーと、MISRA C に関するすべてのチェッカーを含む新しい分類基準:2012修正1。

システム要件の変更

このセクションでは、システム要件の変更を一覧表示します。次のサポートを追加しました。
  • Windows 10 Anniversary
  • Windows Server 2016
  • Ubuntu 16.10
  • Fedora 25
  • AIX 7.1 TL 4
  • Eclipse 4.6.2

以下についてはもはやサポートしていません。

  • Ubuntu 12.04、15.10
  • Fedora 22
  • OpenSUSE 13.1
  • CentOS 5.11
  • QNX Momentics 4.6、4.7、4.8、5.0
  • Visual Studio 2005
  • AIX 6.1 TL 9、7.1 TL 2
  • Mac OS X Mavericks 10.9.5
  • Windows Vista
  • Microsoft Edge 34.14291
  • Safari バージョン 6.x 以前

コマンドおよびオプションへの変更

--copy-tables オプションを削除することで kwadmin load コマンドを変更しました。既存のお客様で、このオプションを使用するスクリプトをお持ちの場合は無視されます。Klocwork コマンドの詳細については、コマンド リファレンスを参照してください。