EN JP CN

Klocwork 2017.1 の新機能

Klocwork 2017.1 の新機能

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

セキュリティレポート

新しいセキュリティレポートを導入しました。このセキュリティレポートは、選択されたセキュリティ分類基準の 1 ページのサマリーを含む、プロジェクトのセキュリティヘルスチェックを提供します。上位 3 つの脆弱性、最もリスクの高い領域等のトレンドなどの項目をレビューします。詳細については、レポートタイプを参照してください。

Microsoft Visual Studio 機能拡張

  • Microsoft Visual Studio 2017 のサポートを追加しました。
  • 全体の安定性とサーバー指摘のパフォーマンスを改善しました。
  • Klocwork extension for Visual Studio の最新バージョンは、Visual Studio 2012 以降でサポートされます。Visual Studio 2010 以前では、Klocwork add-in for Visual Studio を使用することを推奨します。詳細については、デスクトップ解析プラグインのダウンロードと展開を参照してください。

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

このリリースでは、変数名が欠陥メッセージやトレースに含まれる方法を改善しました。また、解析エンジンの今後の改善をサポートするために中身にいくつかの変更を加えました。

ライセンス

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

独自の FlexNet Publisher ライセンスサーバーを使用している場合は、Windows、Linux、および Mac でのKlocwork2017.1 の インストールは、FlexNet Publisher 2016 R1 (11.14.0.2) 以降と互換性があります。以前のバージョンの FlexNet Publisher は互換性がありません。このため、たとえば、Windows マシン上の Klocwork 統合ビルド解析では、Solaris または AIX 上で動作するライセンスサーバーからライセンスをチェックアウトすることはできません。

CERT 分類基準の強化

SEI CERT C および C ++ 分類基準を大幅に拡張しました。詳細については、分類基準の改善を参照してください。

パス API の変更

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

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

C# 6.0 のサポート

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

  • 例外フィルター
  • 改善された多重定義解決

C# 6.0 を完全にサポートしています。

C++ 11 のサポート

Klocwork Checker Studio の C++ 11 のサポートを改善しました。

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

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

  • Microchip MPLAB XC8 C
次のコンパイラのサポート機能を改善しました。
  • GNU
  • Microsoft Visual C++
  • Synopsys ARC MetaWare

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

チェッカーの改善

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

新しいチェッカー

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

チェッカー説明

MISRA.TOKEN.UNTERMINATED.ESCAPE.2012

MISRA C 2012 規則 4.1 の実装:8 進数および 16 進数のエスケープシーケンスは終了する必要があります。

MISRA.DEFINE.NOT_DISTINCT.C90.2012

MISRA.DEFINE.NOT_DISTINCT.C99.2012

MISRA C 2012 規則 5.4 の実装:マクロ識別子は区別する必要があります。
MISRA.FUNC.ARRAY.PARAM.STATIC.2012MISRA C 2012 規則 17.6 の実装:配列パラメーターの宣言には、[] の間に static キーワードは含まれません。
MISRA.RESOURCES.FILE.READ_ONLY_WRITE.2012MISRA C 2012 規則 22.4 の実装:読み取り専用として開かれたストリームに書き込んではなりません。

SV.SENSITIVE.DATA

SV.SENSITIVE.OBJ

Java の場合は、CWE-311 を実装: 機密データの暗号化の欠落。

SV.CSRF.GET

SV.CSRF.ORIGIN

SV.CSRF.TOKEN

Java の場合は、CWE-352 を実装: クロスサイトリクエストフォージェリ。

変更されたチェッカー

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

チェッカー影響度
ABV.GENERAL誤検知が少なくなることが期待されています。

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

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

分類基準の改善

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

cert_c_cpp.tconf および cert_c_cpp_ja.tconf

以前のリリースでは、これらの分類基準ファイルはそれぞれ cert_10_cxx.tconf および cert_10_cxx_ja.tconf と呼ばれていました。

これらの分類基準は、追加の Klocwork チェッカーを SEI CERT C および C++ コーディング標準にマッピングする重要なアップデートを有しています。

次の規則およびチェッカーを追加しました。

CERT ARR01-C:

  • CWARN.MEMSET.SIZEOF.PTR
CERT ARR38-C
  • ABV.ANY_SIZE_ARRAY
  • ABV.GENERAL
  • ABV.ITERATOR
  • ABV.STACK
  • ABV.TAINTED
  • ABV.UNKNOWN_SIZE
CERT DCL01-C
  • MISRA.VAR.HIDDEN
CERT DCL07-C
  • MISRA.FUNC.PROT_FORM.KR.2012
  • MISRA.FUNC.NOPROT.DEF
  • MISRA.CAST.FUNC_PTR.2012
CERT DCL10-C
  • SV.FMT_STR.PRINT_PARAMS_WRONGNUM.FEW
  • SV.FMT_STR.PRINT_PARAMS_WRONGNUM.MANY
  • SV.FMT_STR.SCAN_PARAMS_WRONGNUM.FEW
  • SV.FMT_STR.SCAN_PARAMS_WRONGNUM.MANY
CERT DCL13-C
  • MISRA.PPARAM.NEEDS.CONST
CERT DCL23-C
  • MISRA.IDENT.DISTINCT.C99.2012
CERT DCL36-C
  • MISRA.FUNC.STATIC.REDECL
CERT DCL37-C
  • MISRA.DEFINE.WRONGNAME.UNDERSCORE
  • MISRA.STDLIB.WRONGNAME.UNDERSCORE
  • MISRA.STDLIB.WRONGNAME
CERT ENV01-C
  • ABV.ANY_SIZE_ARRAY
  • ABV.GENERAL
  • ABV.ITERATOR
  • ABV.MEMBER
  • ABV.STACK
  • ABV.TAINTED
  • ABV.UNKNOWN_SIZE
  • ABV.UNICODE.BOUND_MAP
  • ABV.UNICODE.FAILED_MAP
  • ABV.UNICODE.NNTS_MAP
  • ABV.UNICODE.SELF_MAP
CERT ERR34-C
  • MISRA.STDLIB.ATOI
CERT EXP00-C
  • MISRA.EXPR.PARENS.2012
CERT EXP08-C
  • ABV.ITERATOR
  • ABV.GENERAL
CERT EXP12-C
  • MISRA.FUNC.UNUSEDRET.2012

この規則は、もはや MISRA.FUNC.UNUSEDRET にマッピングされません。

CERT EXP16-C
  • CWARN.FUNCADDR
CERT EXP30-C
  • PORTING.VAR.EFFECTS
CERT EXP36-C
  • PORTING.CAST.PTR.FLTPNT
  • PORTING.CAST.PTR
  • PORTING.CAST.PTR.SIZE
  • PORTING.CAST.SIZE
  • MISRA.CAST.PTR.UNRELATED
  • MISRA.CAST.PTR_TO_INT
CERT EXP37-C
  • MISRA.FUNC.UNMATCHED.PARAMS
CERT EXP44-C
  • MISRA.SIZEOF.SIDE_EFFECT
CERT EXP46-C
  • MISRA.LOGIC.OPERATOR.NOT_BOOL
CERT EXP52-CPP
  • MISRA.SIZEOF.SIDE_EFFECT
CERT FIO34-C
  • CWARN.CMPCHR.EOF
CERT FIO42-C
  • RH.LEAK
CERT FIO45-C
  • SV.TOCTOU.FILE_ACCESS
CERT FIO46-C
  • SV.INCORRECT_RESOURCE_HANDLING.URH
CERT FLP30-C
  • MISRA.FOR.COND.FLT
  • MISRA.FOR.COUNTER.FLT
CERT INT04-C
  • SV.TAINTED.ALLOC_SIZE
  • SV.TAINTED.BINOP
  • SV.TAINTED.CALL.BINOP
  • SV.TAINTED.CALL.INDEX_ACCESS
  • SV.TAINTED.CALL.LOOP_BOUND
  • SV.TAINTED.INDEX_ACCESS
  • SV.TAINTED.LOOP_BOUND
CERT INT07-C
  • PORTING.SIGNED.CHAR
CERT INT09-C
  • MISRA.ENUM.IMPLICIT.VAL.NON_UNIQUE.2012
CERT INT12-C
  • MISRA.BITFIELD.TYPE
CERT INT13-C
  • MISRA.BITS.NOT_UNSIGNED
  • MISRA.BITS.NOT_UNSIGNED.PREP
CERT INT30-C
  • NUM.OVERFLOW
  • CWARN.NOEFFECT.OUTOFRANGE
CERT INT31-C
  • PRECISION.LOSS
  • PRECISION.LOSS.CALL
CERT INT33-C
  • DBZ.CONST
  • DBZ.CONST.CALL
  • DBZ.GENERAL
  • DBZ.ITERATOR
CERT INT36-C
  • MISRA.CAST.OBJ_PTR_TO_INT.2012
CERT MEM00-C
  • MLK.MIGHT
  • MLK.MUST
  • MLK.RET.MIGHT
  • MLK.RET.MUST
  • FNH.MIGHT
  • FNH.MUST
  • FUM.GEN.MIGHT
  • FUM.GEN.MUST
  • RH.LEAK
CERT MEM05-C
  • MISRA.FUNC.RECUR
CERT MEM12-C
  • MLK.MIGHT
  • MLK.MUST
  • MLK.RET.MIGHT
  • MLK.RET.MUST
  • RH.LEAK
CERT MEM31-C
  • MLK.RET.MUST
  • MLK.RET.MIGHT

この規則は、もはや UFM.FFM.MIGHT または UFM.FFM.MUST にマッピングされません。

CERT MEM35-C
  • INCORRECT.ALLOC_SIZE
CERT MEM50-CPP
  • UFM.DEREF.MIGHT
  • UFM.DEREF.MUST
  • UFM.FFM.MIGHT
  • UFM.FFM.MUST
  • UFM.RETURN.MIGHT
  • UFM.RETURN.MUST
  • UFM.USE.MIGHT
  • UFM.USE.MUST
CERT MSC01-C
  • MISRA.SWITCH.WELL_FORMED.DEFAULT.2012
  • INFINITE_LOOP.GLOBAL
  • INFINITE_LOOP.LOCAL
  • INFINITE_LOOP.MACRO

この規則は、もはや MISRA.SWITCH.NODEFAULT にマッピングされません。

CERT MSC07-C
  • LA_UNUSED
  • UNREACH.GEN
  • UNREACH.RETURN
  • UNREACH.SIZEOF
  • INVARIANT_CONDITION.UNREACH
CERT MSC12-C
  • LA_UNUSED
  • VA_UNUSED.GEN
  • VA_UNUSED.INIT
  • INVARIANT_CONDITION.UNREACH
CERT MSC17-C
  • MISRA.SWITCH.WELL_FORMED.BREAK.2012

この規則は、もはや MISRA.SWITCH.NO_BREAK にマッピングされません。

CERT POS39-C
  • BYTEORDER.NTOH.RECV
  • BYTEORDER.NTOH.READ
  • BYTEORDER.HTON.SEND
  • BYTEORDER.HTON.WRITE

この規則は、もはや PORTING.BYTEORDER.SIZE にマッピングされません。

CERT POS51-C
  • CONC.DL
CERT POS52-C
  • CONC.SLEEP
CERT POS54-C
  • SV.RVT.RETVAL_NOTTESTED
CERT PRE00-C
  • MISRA.DEFINE.FUNC
CERT PRE01-C
  • MISRA.DEFINE.NOPARS
CERT PRE02-C
  • MISRA.DEFINE.BADEXP
CERT PRE05-C
  • MISRA.DEFINE.SHARP.ORDER.2012
CERT PRE06-CPP
  • MISRA.INCGUARD
CERT PRE06-C
  • MISRA.INCGUARD
CERT PRE10-C
  • MISRA.DEFINE.BADEXP
CERT STR05-C
  • MISRA.STRING_LITERAL.NON_CONST.2012
CERT STR32
  • MISRA.STRING_LITERAL.NON_CONST.2012
CERT WIN00-C
  • SV.DLLPRELOAD.NONABSOLUTE.DLL
  • SV.DLLPRELOAD.NONABSOLUTE.EXE
  • SV.DLLPRELOAD.SEARCHPATH

CERT WIN30-C
  • FMM.MIGHT
  • FMM.MUST
cwe_10_java.tconf および cwe_10_java_ja.tconf

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

  • SV.CSRF.GET (CWE-352)
  • SV.CSRF.TOKEN (CWE-352)
  • SV.CSRF.ORIGIN (CWE-352)
  • SV.SENSITIVE.DATA (CWE-311)
  • SV.SENSITIVE.OBJ (CWE-311)
cwe_25_java.tconf および cwe_25_java_ja.tconf

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

  • SV.CSRF.GET (CWE-352)
  • SV.CSRF.TOKEN (CWE-352)
  • SV.CSRF.ORIGIN (CWE-352)
  • SV.SENSITIVE.DATA (CWE-311)
  • SV.SENSITIVE.OBJ (CWE-311)
dista_stig_10_cxx.tconf および dista_stig_10_cxx_ja.tconf

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

APP3120
  • MISRA.CATCH.ALL
  • MISRA.CATCH.NOALL
  • MISRA.CATCH.WRONGORD
APP3150.1, APP3330, APP3340
  • RCA
  • RCA.HASH.SALT.EMPTY
  • HCC
  • HCC.USER
  • HCC.PWD
APP3510
  • SV.TAINTED.BINOP
  • SV.TAINTED.CALL.BINOP
  • SV.TAINTED.PATH_TRAVERSAL
  • SV.TAINTED.SECURITY_DECISION
  • SV.TAINTED.DEREF
  • SV.TAINTED.CALL.DEREF
APP3550
  • DBZ.GENERAL
  • DBZ.CONST.CALL
  • DBZ.ITERATOR
  • MISRA.UMINUS.UNSIGNED
  • MISRA.CAST.UNSIGNED_BITS
  • MISRA.CAST.FLOAT
  • MISRA.CAST.FLOAT_INT
  • MISRA.CAST.FLOAT.WIDER
  • MISRA.CAST.FUNC_PTR
  • MISRA.CAST.FUNC_PTR.2012
  • MISRA.CAST.FUNC_PTR.CPP
  • MISRA.CAST.INCOMPLETE_PTR_TO_ANY.2012
  • MISRA.CAST.INT
  • MISRA.CAST.INT_FLOAT
  • MISRA.CAST.INT.SIGN
  • MISRA.CAST.INT_TO_PTR
  • MISRA.CAST.INT.WIDER
  • MISRA.CAST.OBJ_PTR_TO_INT.2012
  • MISRA.CAST.OBJ_PTR_TO_NON_INT.2012
  • MISRA.CAST.OBJ_PTR_TO_OBJ_PTR.2012
  • MISRA.CAST.POLY.TYPE
  • MISRA.CAST.PTR
  • MISRA.CAST.PTR_TO_INT
  • MISRA.CAST.PTR.UNRELATED
  • MISRA.CAST.PTR.VRCLASS
  • MISRA.CAST.UNSIGNED_BITS
  • MISRA.CAST.VOID_PTR_TO_INT.2012
  • MISRA.CAST.VOID_PTR_TO_OBJ_PTR.2012
  • SV.TAINTED.BINOP
  • SV.TAINTED.CALL.BINOP
APP3590.1
  • RABV.CHECK
misra_c_2012_c90.tconf および misra_c_2012_c90_ja.tconf

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

  • MISRA.DEFINE.NOT_DISTINCT.C90.2012 (規則 5.4)
  • MISRA.RESOURCES.FILE.READ_ONLY_WRITE.2012 (規則 22.4)
misra_c_2012_c99.tconf および misra_c_2012_c99_ja.tconf

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

  • MISRA.DEFINE.NOT_DISTINCT.C99.2012 (規則 5.4)
  • MISRA.FUNC.ARRAY.PARAM.STATIC.2012 (規則 17.6)
  • MISRA.RESOURCES.FILE.READ_ONLY_WRITE.2012 (規則 22.4)
misra_c_2012_with_amd1_c90.tconf および misra_c_2012_with_amd1_c90_ja.tconf

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

  • MISRA.DEFINE.NOT_DISTINCT.C90.2012 (規則 5.4)
  • MISRA.RESOURCES.FILE.READ_ONLY_WRITE.2012 (規則 22.4)
misra_c_2012_with_amd1_c99.tconf および misra_c_2012_with_amd1_c99_ja.tconf

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

  • MISRA.DEFINE.NOT_DISTINCT.C99.2012 (規則 5.4)
  • MISRA.FUNC.ARRAY.PARAM.STATIC.2012 (規則 17.6)
  • MISRA.RESOURCES.FILE.READ_ONLY_WRITE.2012 (規則 22.4)

システム要件の変更

このセクションでは、システム要件の変更を一覧表示します。次のサポートを追加しました。
  • Debian 7.11、8.7
  • Red Hat Enterprise Linux 7.3
  • OpenSUSE 11.4 (Ent)、12.2 (Ent)、42.2
  • Mac OS X 10.11.6
  • Microsoft Visual Studio 2017
  • Android Studio 2.2.2
  • JetBrains IntelliJ IDEA 2016.3
  • Gradle (最大) バージョン 3.41

Windows、Linux、Solaris、Mac は現在、MySQL 5.6.35 を使用しています。

Tomcat のバージョンを 7.0.76 にアップグレードしました。

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

このリリースのコマンドまたはコマンドオプションに変更はありません。Klocworkコマンドの詳細については、コマンド リファレンスを参照してください。