このリリースでは、機能安全およびセキュリティ コンプライアンス ソリューションの強化に重点が置かれました。AUTOSAR C++ 14 規格の適用範囲を拡張し、AUTOSARの "必須" および "自動化" ルールへの完全な準拠を実現し、CWE ガイドラインの最新リリースのサポートを追加しました。

環境のサポート

新規 IDE

以下のサポートが追加されました。

  • Visual Studio 2019

非推奨の IDE

次の IDE のサポートは非推奨であり、将来のリリースで削除される予定です。

  • Microsoft Visual Studio 2008
  • Microsoft Visual Studio 2010

新しいプラットフォーム

以下のサポートが追加されました。

  • Linux Loongson MIPS64

サポートの詳細については「MIPS アーキテクチャ」を参照してください。

新しいコンパイラのサポート

コンパイラ名コンパイラ略称
GNU GCC 9.xgcc_9
GNU GCC 9.x (x86_64)gcc_9-64
IAR Compiler for ARM v. 8.22xiccarm_8_22
IAR Compiler for ARM v. 8.40xiccarm_8_40
Microsoft Visual C++ 14.2vc_14_2
Microsoft Visual C++ 14.2 (x86_64)vc_14_2-64
Clang C/C++ Compiler v 8.0 (x86_64)clang_8_0

QNX GCC 5.x (ARM) のサポートが拡張され、セーフティ クリティカルなソフトウェア開発での使用が承認されました。

ARM NEON 拡張が GCC および ARM ベースのコンパイラでサポートされるようになりました。

非推奨のコンパイラ

次のコンパイラのサポートは非推奨であり、将来のリリースで削除される予定です。

  • ARM RealView 4.1

  • ARM RealView 4.1 for uVision

  • CodeSourcery Sourcery G++ Lite 2009q1-203

  • GNU GCC 4.0.x

  • GNU GCC 4.0.x (x86_64)

  • GNU GCC 4.1.x

  • GNU GCC 4.1.x (x86_64)

  • GNU GCC 4.2.x

  • GNU GCC 4.2.x (x86_64)

  • GNU GCC 4.3.x

  • GNU GCC 4.3.x (x86_64)

  • GNU GCC 4.4.x

  • GNU GCC 4.4.x (x86_64)

  • IAR Compiler for ARM v. 6.1x

  • IAR Compiler for ARM v. 6.3x

  • IAR Compiler for MSP430 v. 5.4x

  • Microsoft Visual C++ 9.0
  • Microsoft Visual C++ 10.0
  • TI TMS320C2000 C/C++ Compiler v6.2

  • TI TMS320C6x C/C++ Compiler v7.3

  • TI MSP430 C/C++ Compiler v4.0

  • Vx-toolset for TriCore C/C++ Compiler 4.0

  • Wind River GCC 3.4.x

Intel C++ Compiler v 18.0 が Windows でサポートされなくなりました。

オートモーティブ コンプライアンス パックの拡張

AUTOSAR C++ 14 規格の準拠を支援するために、AUTOSAR C++ 14 のサポートを拡張しました。"必須" および "自動化" カテゴリのすべての AUTOSAR ルールが完全にカバーされ、自動車システム アーキテクチャの開発におけるテスト作業をサポートします。

セキュリティ コンプライアンス パックの拡張

新たに更新された 2019 Common Weakness Enumeration (CWE) のサポートが追加されました。C/C++test に新しいテスト コンフィギュレーションが同梱され、CWE Top 25 2019 および CWE Weaknesses on the Cusp ガイドラインへの準拠を強化できます。以下の「追加または更新されたテスト コンフィギュレーション」セクションを参照してください。

追加または更新された解析ルール

このリリースでは、特に AUTOSAR C++14 規格にフォーカスし、新しい静的解析ルールが追加され、コンプライアンス標準のカバー範囲が広がりました。追加または更新されたルールの一覧については「新規ルール 」および「更新されたルール」を参照してください。

さらに、関数内の関数呼び出しの数を計測するために NOMCIM メトリクスが追加されました。

追加または更新されたテスト コンフィギュレーション

以下のテスト コンフィギュレーションが追加されました。

  • CWE Top 25 2019
  • CWE Top 25 + On the Cusp 2019
  • OWASP Top 10 2017
  • UL 2900

非推奨のテスト コンフィギュレーション

  • CWE-SANS Top 25 Most Dangerous Programming Errors – 非推奨になり、 CWE Top 25 2019 テスト コンフィギュレーションに置き換えられました。
  • OWASP Top 10 2017 – 非推奨になり、 OWASP Top 10 2017 テスト コンフィギュレーションに置き換えられました。
  • UL 2900 - 非推奨となり、新しい UL 2900 テスト コンフィギュレーションに置き換えられました。このコンフィギュレーションには、CWE SANS Top 25 + On the Cusp 2019 および OWASP Top 10 2017 ルールが含まれます。

非推奨のテスト コンフィギュレーションは、デフォルトでは利用できません。ユーザー定義コンフィギュレーションとして適用することはできます。これらのテスト コンフィギュレーションは、次の場所にあります: [INSTALL_DIR]\configs\Deprecated

OpenID Connect のサポート

OpenID Connect を介して DTP で認証を行い、DTP サーバーとの通信にセキュリティ レイヤーを追加できるようになりました。詳細については「UI での OpenID Connect の設定」および「properties ファイルでの OpenID Connect の設定」を参照してください。

その他の変更

  • インクリメンタル解析モードでのフロー解析のパフォーマンスが向上しました。後続の実行での解析時間を短縮しました。
  • license.network.enabled オプションの名称が license.network.use.specified.server に変更されました。「ライセンスの設定」を参照してください。

解決済みのバグおよび FR

バグ/FR ID

説明

CPP-39554

MISRA2004-17_3 に従うようにルール CODSTA-13 を更新する必要がある

CPP-42073

ARM NEON 拡張機能のサポートを追加

CPP-42495

ルール COMMENT-04 は、関数定義が使用可能でない (可視でない) 場合、関数宣言に対して指摘事項をレポートするべきではない

CPP-42527

AUTOSAR-M2_13_2-a (C++14 セマンティクス) のマッピングを改善する

CPP-42858

CERT-INT31 のマッピングを改善する

CPP-43140

MISRA2012-RULE-2_2 のマッピングを改善する

CPP-43141

ルール CODSTA-163_b(MISRAC2012-RULE_10_3-b) が三項演算子で誤検出をレポートする

CPP-43142

ルール CODSTA-CPP-59 が __cplusplus マクロによって除外された #include ディレクティブで誤検出をレポートする

CPP-43143

ルール MISRA2004-9_2_c (AUTOSAR-M8_5_2-c) がreports incorrectly on std::array および constexpr について誤ってレポートする

CPP-43150

静的な const 変数がテンプレート引数として使用される場合、ルール GLOBAL-ONEUSEVAR (MISRA2008-0_1_4) が誤検出をレポートする

CPP-43413

ルール OPT-02(OPT-03、OPT-31) が、ラムダによってキャプチャされたパラメーター/変数の誤検出をレポートする

CPP-43414

テンプレートのユーザー定義の接尾辞についてパース エラーがレポートされる (C++14)

CPP-43479

コードのインストゥルメント時にエラーがレポートされる (次のコードでプロセスが終了:137)

CPP-43602

GHS/ARM コンパイラの gnu99 オプションを構成する

CPP-43603

ルール FORMAT-43 が、対になっていない括弧が #ifdef/#ifndef の場合に誤検出をレポートする

CPP-43643

IAR-RL78 コンパイラ構成の --core オプションのサポートが欠落している

CPP-43667

静的な const 変数がテンプレート引数として使用される場合、ルール OPT-05 が誤検出をレポートする

CPP-43675

printf/scanf 関数呼び出しで %c 指定子としてプレーン文字が渡されると、ルール PB-45 が誤検出をレポートする

CPP-43688

ルール PB-45、PB-46、PB-47、PB-48、PB-49 が、scanf 関数の引数に対して正しく動作しない

CPP-43689

scanf 関数で文字指定子が使用されていると、ルール PB-50 が誤検出をレポートする

CPP-43706

ルール MISRA2004-20_5(JSF-017) の改善: 違反メッセージの行番号を出力しない

CPP-43744

重複した違反をフィルタリングするアルゴリズムを改善

CPP-43748

間接参照イテレーターのアドレスが関数から返されると、ルール MISRA2004-17_6_a が誤検出をレポートする

CPP-43837

Renesas RX C++ 2.5.X コンパイラで -endian=big を使用すると、パース エラーがレポートされる

CPP-43869

ルール INIT-05 が右辺値参照で誤検出をレポートする

CPP-43889

パース エラーがレポートされる: 非 const への参照の初期値は左辺値でなければならない

CPP-43892

パース エラーがレポートされる:パラメーター パック Indexes が参照されたが展開されていない

CPP-43893

CERT EXP45-C のマッピングを改善 (CERT_C-EXP45-a および CERT_C-EXP45-c を削除)

CPP-43971

GCC および Clang コンパイラの edg.implicit_noexcept_enabled 構成オプションを有効にする

CPP-43975

フォールスルー コメントの前にプリプロセッサ ディレクティブがある場合、ルール CODSTA-149(CERT_C-MSC17-a) が誤検出をレポートする

CPP-44025

0 が void* 型にキャストされている場合、ルール CERT_C-INT36-a が誤検出をレポートする

CPP-44045

ルール OPT-06 が、ラムダでキャプチャされたローカル変数の誤検出をレポートする

CPP-44046

STATUS_ACCESS_VIOLATION: スレッドが、アクセスできない仮想アドレスから読み取り/書き込みを試みる

CPP-44088

静的解析 (cwc) がリテラル可変長テンプレートでコード 3 で終了する

CPP-44225

オペランドの二重キャストがシフト式で使用されている場合、ルール MISRA2004-12_8(MISRAC2012-RULE_12_2-a) が誤検出をレポートする

CPP-44271

パース エラーがレポートされる: 式に定数値が必要 static constexpr bool value = has_named_enum_tag<T>(0);

CPP-44274

ルール HICPP-17_2_1-a (AUTOSAR-A17_1_1-b) が #include <string> で誤検出をレポートする

CPP-44538

欠落している IAR アトミック ビルトインのサポートを追加

FA-4617

null に対して配列変数をチェックする際の BD-PB-DEREF からの誤検出

FA-4651

BD-RES-FREE が、別のタイプのリソース (pthread mutex など) として既に解放されたメモリを解放する際の誤検出

FA-4998

クローズされたファイル記述子で実行される算術演算に関する BD-RES-FREE のご検出

FA-7097

BD-PB-PTRARR の型の不一致に対する違反誤検出

FA-7105

BD-PB-OVERFWR の誤検出

FA-7191

const 式を使用する場合の BD-RES-INVFREE の誤検出

FA-7195

BD-CO-ITOUT - コンテナー cend() メソッドの誤検出

FA-7266

不正なフロー解析結果:FA が const のグローバル配列の要素の値を考慮しない

FA-7291

配列の要素によって参照されるリソースをクローズするときの BD-RES-INVFREE からの誤検出

FA-7398

Flow Analysis Aggressive が C ++ test 10.4.2 の静的解析の問題をレポートする

FA-7410

typedef が使用されている場合の BD-SECURITY-OVERFFMT の誤検出

FA-7413

MISRA2012-RULE-19-1_c (BD-PB-OVERLAP) の誤検出

FA-7441

文字列形式内で %*s を指定している場合に、CERT_C-ARR38-c(BD-PB-OVERFFMT) がFP 違反をレポートする

XT-36609パスワードに £ 文字があると、Parasoft ツールが DTP に接続できなくなる
XT-36611min オプションを使用した sim-link ソース コードの公開に失敗
XT-36843cpptestcli を使用する同時ビルドが、ライセンスをプルしようとしたときにタイムアウトを待たない
XT-36950XML Graphics Project の脆弱なライブラリを更新
XT-37358テストが 100% 成功した場合にレポートに 100% が表示されない



新規ルール

ルール ID

ヘッダー

AUTOSAR-A0_1_5-a

仮想関数に未使用の名前付きパラメーターがあってはならない

AUTOSAR-A12_1_3-a

すべてのユーザー定義のコンストラクターがデータ メンバーを同じ定数値で初期化している場合、NSDMI を使用して初期化すべきである

AUTOSAR-A12_1_6-a

追加の明示的な初期化を必要とせず、基底クラスのすべてのコンストラクターを必要とする派生クラスは、継承コンストラクターを使用する必要がある

AUTOSAR-A15_3_4-a

catch-all 例外ハンドラーを使用しない

AUTOSAR-A15_4_5-a

関数からスローされる可能性があるチェック例外は、関数宣言の直前のコメントで指定する必要がある

AUTOSAR-A15_5_2-c

stdlib.h または cstdlib ライブラリの関数 quick_exit() および _Exit() は使用してはならない

AUTOSAR-A1_1_1-a

register 記憶域クラス指定子を使用してはならない

AUTOSAR-A1_1_1-b

コピー コンストラクターを宣言する場合は、コピー代入演算子を宣言するべきである (逆の場合も同様に)

AUTOSAR-A1_1_1-c

非自明なデストラクターがあるクラスには、コピー コンストラクターおよびコピー代入演算子も宣言するべきである

AUTOSAR-A1_1_1-d

C ライブラリを使用してはならない

AUTOSAR-A1_1_1-e

std::bind、std::bind1st および std::bind2nd ではなくラムダを使用する

AUTOSAR-A1_1_1-f

'binder1st' および 'binder2nd' 識別子を使用するべきではない

AUTOSAR-A1_1_1-g

std::auto_ptr ではなく、できるだけ std::unique_ptr を使用する

AUTOSAR-A1_1_1-h

'random_shuffle' 識別子を使用するべきではない

AUTOSAR-A1_1_1-i

ブール型の変数に対してインクリメント演算子 (++) を使用しない

AUTOSAR-A1_1_1-j

'set_unexpected' 識別子を使用するべきではない

AUTOSAR-A1_1_1-k

throw 例外仕様を使用しない

AUTOSAR-A27_0_4-a

範囲チェックされていないバッファに書き込む安全でない C 関数を使用しない

AUTOSAR-A27_0_4-b

範囲をチェックしないため安全ではない文字列関数を使用しないようにする

AUTOSAR-A27_0_4-c

char バッファーを使用して std::cin の入力を格納しない

AUTOSAR-A27_0_4-d

C 形式の配列を使用するべきではない

AUTOSAR-A2_10_4-a

静的記憶域期間を持つ非メンバー オブジェクトの識別子名は、名前空間内で再利用してはならない

AUTOSAR-A2_10_4-b

非メンバー静的関数の識別子名は、名前空間内で再利用してはならない

AUTOSAR-A2_7_3-a

すべての型、データ メンバー、関数の宣言の前に '@brief' タグでアノテートされたコメントを付けるべきである

AUTOSAR-A2_7_3-b

関数宣言の前のコメントで関数のパラメーターおよび戻り値の型を文書化するべきである

AUTOSAR-A3_3_2-a

静的およびスレッドローカルなオブジェクトは定数初期化される必要がある

AUTOSAR-A5_1_6-a

void 型以外のラムダ式の戻り値型は明示的に指定するべきである

AUTOSAR-A5_1_8-a

ラムダ式の中に別のラムダ式を定義するべきではない

AUTOSAR-A5_3_1-a

typeid 演算子のオペランドに副作用を持つ式が含まれていてはならない

AUTOSAR-A5_3_1-b

typeid 演算子のオペランドに副作用を発生させる関数の呼び出しが含まれていてはならない

AUTOSAR-A6_2_1-a

コピー代入演算子は、オブジェクトのコピーに影響を与える可能性がある副作用を持つべきではない

AUTOSAR-A6_2_1-b

ムーブ代入演算子は、オブジェクトのムーブに影響を与える可能性がある副作用を持つべきではない

AUTOSAR-A6_2_2-a

式文は、一時オブジェクトのコンストラクターの明示的な呼び出しだけを含むべきではない

AUTOSAR-A7_1_5-a

'auto' 指定子を過度に使用しない

AUTOSAR-A8_2_1-a

typename キーワードが戻り値型の前にある場合、後置戻り値型構文を使用する

AUTOSAR-A8_4_8-a

出力パラメーターを使用してはならない

AUTOSAR-A8_5_2-a

変数の初期化には、等号なしの {} 括弧による初期化を使用する必要がある

AUTOSAR-A8_5_3-a

auto 型の変数は、 {} または ={} を使用した括弧による初期化で初期化してはならない

AUTOSAR-M15_3_7-a

1 つの try-catch 文または function-try-block に複数のハンドラーがある場合、省略記法 (catch-all) ハンドラーは最後に置く

AUTOSAR-M18_0_3-b

stdlib.h または cstdlib ライブラリの exit() 関数を使用しない

AUTOSAR-M18_0_3-c

stdlib.h または cstdlib ライブラリの system() 関数を使用しない

AUTOSAR-M18_0_3-d

stdlib.h または cstdlib ライブラリの 'getenv() 関数を使用しない

BD-RES-INSUFMEM

指定された型のオブジェクトを格納するのに十分なメモリを割り当てる

BD-SECURITY-XXEXRC

libxerces-c で XML 外部エンティティの解決 (XXE) を無効化する

CERT_C-ERR04-b

stdlib.h または cstdlib ライブラリの exit() 関数を使用しない

CERT_C-ERR04-c

stdlib.h または cstdlib ライブラリの関数 quick_exit() および _Exit() は使用してはならない

CERT_C-ERR05-b

stdlib.h または cstdlib ライブラリの exit() 関数を使用しない

CERT_C-ERR05-c

stdlib.h または cstdlib ライブラリの関数 quick_exit() および _Exit() は使用してはならない

CERT_C-INT31-o

整数のオーバーフローを避ける

CERT_CPP-ERR50-n

stdlib.h または cstdlib ライブラリの関数 quick_exit() および _Exit() は使用してはならない

CERT_CPP-EXP52-d

typeid 演算子のオペランドに副作用を持つ式が含まれていてはならない

CERT_CPP-EXP52-e

typeid 演算子のオペランドに副作用を発生させる関数の呼び出しが含まれていてはならない

CODSTA-204

'noreturn' として宣言された関数の戻り値の型は 'void' でなければならない

CODSTA-CPP-103

出力パラメーターを使用してはならない

CODSTA-CPP-104_b

typeid 演算子のオペランドに副作用を発生させる関数の呼び出しが含まれていてはならない

CODSTA-CPP-104

typeid 演算子のオペランドに副作用を持つ式が含まれていてはならない

CODSTA-MCPP-07_b

binder1st および binder2nd 識別子を使用するべきではない

CODSTA-MCPP-13_b

ユニバーサル参照を転送する場合、std::forward 関数を使用する

CODSTA-MCPP-32

静的およびスレッドローカルなオブジェクトは定数初期化される必要がある

CODSTA-MCPP-37

追加の明示的な初期化を必要とせず、基底クラスのすべてのコンストラクターを必要とする派生クラスは、継承コンストラクターを使用する必要がある

CODSTA-MCPP-38

変数の初期化には、等号なしの {} 括弧による初期化を使用する必要がある

CODSTA-MCPP-39

auto 型の変数は、 {} または ={} を使用した括弧による初期化で初期化してはならない

CODSTA-MCPP-40

'auto' 指定子を過度に使用しない

CODSTA-MCPP-41

'random_shuffle' 識別子を使用するべきではない

CODSTA-MCPP-42

ブール型の変数に対してインクリメント演算子 (++) を使用しない

CODSTA-MCPP-43

'set_unexpected' 識別子を使用するべきではない

CODSTA-MCPP-44

ラムダ式の中に別のラムダ式を定義するべきではない

CODSTA-MCPP-45

void 型以外のラムダ式の戻り値型は明示的に指定するべきである

CODSTA-MCPP-46

すべてのラムダ式にパラメーター リストを含める

COMMENT-04_b

関数宣言の前のコメントで関数を文書化する

COMMENT-14_b

関数宣言の前のコメントで関数のパラメーターおよび戻り値の型を文書化するべきである

COMMENT-14

すべての型、データ メンバー、関数の宣言の前に '@brief' タグでアノテートされたコメントを付けるべきである

CWE-119-a

配列の境界を超えてアクセスしてはならない

CWE-119-b

範囲外の配列およびポインターへのアクセスを避ける

CWE-119-c

不正な書式指定子によるバッファー オーバーフローを避ける

CWE-119-d

バッファーからの読み取り時のオーバーフローを避ける

CWE-119-e

バッファー書き込み時のオーバーフローを避ける

CWE-119-f

汚染されたデータを配列添え字として使用しない

CWE-119-g

汚染されたデータによるバッファー オーバーフローを避ける

CWE-119-h

汚染されたデータによるバッファー読み込み時のオーバーフローを避ける

CWE-119-i

汚染されたデータによるバッファー書き込み時のオーバーフローを避ける

CWE-119-j

コピー元バッファーのサイズをチェックしていない、疑わしい strcpy の使用

CWE-125-a

配列の境界を超えてアクセスしてはならない

CWE-125-b

範囲外の配列およびポインターへのアクセスを避ける

CWE-125-c

バッファーからの読み取り時のオーバーフローを避ける

CWE-125-d

汚染されたデータによるバッファー読み込み時のオーバーフローを避ける

CWE-190-a

整数のオーバーフローを避ける

CWE-190-b

結果をより広い整数型にキャストしている式での整数オーバーフローの可能性を避ける

CWE-190-c

結果がより広い整数型に代入されている式での整数オーバーフローの可能性を避ける

CWE-190-d

結果がより広い整数型の式と比較されている式での整数オーバーフローの可能性を避ける

CWE-190-e

'+', '-', '*' 演算子の定数式における整数オーバーフローまたはアンダーフロー

CWE-190-f

'<<' 演算子の定数式における整数オーバーフローまたはアンダーフロー

CWE-190-g

符号なし整数定数式の評価はラップアラウンドするべきではない

CWE-20-a

汚染されたデータを配列添え字として使用しない

CWE-20-b

汚染されたデータによる整数オーバーフロー/アンダーフローを防ぐ

CWE-20-c

未検証のバイナリ データをログ記録メソッドに渡さない

CWE-20-d

コマンド インジェクションから防御する

CWE-20-e

汚染されたデータを出力コンソールに出力してはならない

CWE-20-f

環境変数インジェクションから防御する

CWE-20-g

フォーマット文字列からサニタイズされていないユーザー入力を除外する

CWE-20-h

SQL インジェクションから防御する

CWE-20-i

ファイル名インジェクションから防御する

CWE-20-j

信頼性のないデータをループの境界として使用してはならない

CWE-200-a

アプリケーション エラーを例外メッセージに含めることによって、機密の可能性がある情報を出力してはならない

CWE-22-a

ファイル名インジェクションから防御する

CWE-269-a

権限を正しい順序で破棄する

CWE-269-b

権限が正常に破棄されたことを確認する

CWE-287-a

弱い暗号化関数を使用してはならない

CWE-326-a

弱い暗号化関数を使用してはならない

CWE-362-a

競合の原因となる関数を使用してはいけない

CWE-362-b

ファイル アクセス時の競合状態を避ける

CWE-362-c

ビット フィールドを変更する場合は、ロックを使用して競合状態を防ぐ

CWE-362-d

fork およびファイル記述子を使用する際の競合状態を避ける

CWE-362-e

異なるロック間でグローバル変数を使用しない

CWE-400-a

定義された上限を超える変数をスタックに配置しない

CWE-415-a

解放されたリソースを使用してはならない

CWE-416-a

解放されたリソースを使用してはならない

CWE-416-b

解放済みのラップされたオブジェクトを指してはならない

CWE-416-c

解放されたメモリはいかなる場合でもその後にアクセスしてはならない

CWE-426-a

LoadLibrary() が正しいライブラリをロードするよう注意する

CWE-476-a

null ポインターの間接参照を避ける

CWE-476-b

間接参照の後に null チェックしない

CWE-611-a

libxerces-c で XML 外部エンティティの解決 (XXE) を無効化する

CWE-617-a

アサーションを使用しない

CWE-704-a

関数へのポインターとそれ以外の型との間で変換を行ってはならない

CWE-704-b

互換性のない関数型へのポインターの間で変換を行ってはならない

CWE-704-c

不完全型へのポインターと他の型との間で変換を行ってはならない

CWE-704-d

オブジェクト型へのポインターと別のオブジェクト型へのポインターとの間で変換を行ってはならない

CWE-704-e

オブジェクト型へのポインターと 'uintptr_t' または 'intptr_t' 以外の整数型の間で変換を行うべきではない

CWE-704-f

void へのポインターをオブジェクトへのポインターに変換してはならない

CWE-704-g

void へのポインターと数値型との間でキャストしてはならない

CWE-704-h

void へのポインターと数値型との間で暗黙の変換を行ってはならない

CWE-704-i

オブジェクトへのポインターと非整数数値型との間でキャストしてはならない

CWE-704-j

情報の損失を引き起こす可能性がある、より広い型からより狭い型への暗黙的な変換を使用してはならない

CWE-704-k

情報の損失を引き起こす可能性がある汎整数型から浮動小数点型への暗黙的な変換を使用してはならない

CWE-704-l

情報の損失を引き起こす可能性がある整数定数から浮動小数点型への暗黙的な変換を使用してはならない

CWE-732-a

mkstemp を呼び出す前に umask を呼び出す

CWE-732-b

open または openat システム コールを使用してファイルを作成する場合、アクセス パーミッション ビットを指定する

CWE-770-a

リソースが解放されていることを確認する

CWE-772-a

リソースが解放されていることを確認する

CWE-772-b

基底クラスとして使用される仮想関数を持つクラスに仮想デストラクタを定義する

CWE-78-a

コマンド インジェクションから防御する

CWE-787-a

配列の境界を超えてアクセスしてはならない

CWE-787-b

範囲外の配列およびポインターへのアクセスを避ける

CWE-787-c

不正な書式指定子によるバッファー オーバーフローを避ける

CWE-787-d

バッファー書き込み時のオーバーフローを避ける

CWE-787-e

汚染されたデータによるバッファー オーバーフローを避ける

CWE-787-f

汚染されたデータによるバッファー書き込み時のオーバーフローを避ける

CWE-798-a

文字列リテラルをハード コードしない

CWE-835-a

無限ループを避ける

CWE-863-a

cuserid 関数を使用しない

CWE-89-a

SQL インジェクションから防御する

EXCEPT-22

関数からスローされる可能性があるチェック例外は、関数宣言の直前のコメントで指定する必要がある

EXCEPT-23

throw 例外仕様を使用しない

EXCEPT-24

1 つの try-catch 文または function-try-block に複数のハンドラーがある場合、省略記法 (catch-all) ハンドラーは最後に置く

EXCEPT-25

catch ブロックを空のままにしない

EXCEPT-26

catch-all 例外ハンドラーを使用しない

GLOBAL-REUSEDQUALGLOBVAR

静的記憶域期間を持つ非メンバー オブジェクトの識別子名は、名前空間内で再利用してはならない

GLOBAL-REUSEDQUALSTATFUN

非メンバー静的関数の識別子名は、名前空間内で再利用してはならない

HICPP-17_2_1-b

エラー指示子 errno は、用いてはならない

HICPP-5_1_6-e

typeid 演算子のオペランドに副作用を持つ式が含まれていてはならない

HICPP-5_1_6-f

typeid 演算子のオペランドに副作用を発生させる関数の呼び出しが含まれていてはならない

INIT-17

すべてのユーザー定義のコンストラクターがデータ メンバーを同じ定数値で初期化している場合、NSDMI を使用して初期化すべきである

JSF-024_b

<stdlib.h> のライブラリ関数 'exit' を使用してはならない

JSF-024_c

<stdlib.h> のライブラリ関数 'getenv' を使用してはならない

JSF-024_d

<stdlib.h> のライブラリ関数 'system' を使用してはならない

JSF-134_b

関数宣言の前のコメントで関数を文書化する

MISRA2004-20_11_b

stdlib.h または cstdlib ライブラリの exit() 関数を使用しない

MISRA2004-20_11_c

stdlib.h または cstdlib ライブラリの 'getenv() 関数を使用しない

MISRA2004-20_11_d

stdlib.h または cstdlib ライブラリの system() 関数を使用しない

MISRA2008-18_0_3_b

<stdlib.h> のライブラリ関数 'exit' を使用してはならない

MISRA2008-18_0_3_c

<stdlib.h> のライブラリ関数 'getenv' を使用してはならない

MISRA2008-18_0_3_d

<stdlib.h> のライブラリ関数 'system' を使用してはならない

MISRA2012-RULE-21_8_b

<stdlib.h> のライブラリ関数 'exit' を使用してはならない

MISRA2012-RULE-21_8_c

<stdlib.h> のライブラリ関数 'getenv' を使用してはならない

MISRA2012-RULE-21_8_d

<stdlib.h> のライブラリ関数 'system' を使用してはならない

MISRA2012-RULE-2_2_b

未使用の値を避ける

MISRAC2012-RULE_21_8-b

stdlib.h または cstdlib ライブラリの exit() 関数を使用しない

MISRAC2012-RULE_21_8-c

stdlib.h または cstdlib ライブラリの system() 関数を使用しない

MISRAC2012-RULE_21_8-d

stdlib.h または cstdlib ライブラリの 'getenv() 関数を使用しない

MISRAC2012-RULE_2_2-b

未使用の値を避ける

MRM-56

コピー代入演算子は、オブジェクトのコピーに影響を与える可能性がある副作用を持つべきではない

MRM-57

ムーブ代入演算子は、オブジェクトのムーブに影響を与える可能性がある副作用を持つべきではない

OPT-42

仮想関数に未使用の名前付きパラメーターがあってはならない

OWASP2017-A1-a

未検証のバイナリ データをログ記録メソッドに渡さない

OWASP2017-A1-b

コマンド インジェクションから防御する

OWASP2017-A1-c

汚染されたデータを出力コンソールに出力してはならない

OWASP2017-A1-d

環境変数インジェクションから防御する

OWASP2017-A1-e

フォーマット文字列からサニタイズされていないユーザー入力を除外する

OWASP2017-A1-f

SQL インジェクションから防御する

OWASP2017-A10-a

すべての例外は、再スローされるか標準ロガーでログに記録されるべきである

OWASP2017-A2-a

弱い暗号化関数を使用してはならない

OWASP2017-A3-a

疑似乱数生成器に適切なシードを指定する

OWASP2017-A4-a

libxerces-c で XML 外部エンティティの解決 (XXE) を無効化する

OWASP2017-A5-a

ファイル名インジェクションから防御する

OWASP2017-A5-b

権限を正しい順序で破棄する

OWASP2017-A5-c

権限が正常に破棄されたことを確認する

OWASP2017-A6-a

1 つの try-catch 文または関数監視ブロックに派生クラスおよびそのすべてまたは一部の基底クラスのハンドラがある場合、最後に派生されたクラスから基底クラスへの順でハンドラを記述する

OWASP2017-A6-b

catch ブロックを空のままにしない

OWASP2017-A6-c

errno 値を適切に使用する

PB-75_b

stdlib.h または cstdlib ライブラリの exit() 関数を使用しない

PB-75_c

stdlib.h または cstdlib ライブラリの関数 quick_exit() および _Exit() は使用してはならない

PB-76

C 形式の配列を使用するべきではない

PB-77

式文は、一時オブジェクトのコンストラクターの明示的な呼び出しだけを含むべきではない

SECURITY-48_b

stdlib.h または cstdlib ライブラリの system() 関数を使用しない

SECURITY-51

char バッファーを使用して std::cin の入力を格納しない

SECURITY-52

stdlib.h または cstdlib ライブラリの 'getenv() 関数を使用しない

TEMPL-17

typename キーワードが戻り値型の前にある場合、後置戻り値型構文を使用する

更新されたルール

解析結果の向上のため、以下の静的解析ルールが更新されました。

ルール カテゴリルール ID
AUTOSAR C++14 Coding Guidelines

AUTOSAR-A0_1_4-a, AUTOSAR-A12_1_1-b, AUTOSAR-A12_8_4-a, AUTOSAR-A13_5_4-b, AUTOSAR-A15_4_1-a, AUTOSAR-A15_5_2-b, AUTOSAR-A18_0_1-a, AUTOSAR-A18_9_2-a, AUTOSAR-A27_0_1-d, AUTOSAR-A27_0_2-b, AUTOSAR-A2_8_1-a, AUTOSAR-A3_8_1-a, AUTOSAR-A3_8_1-b, AUTOSAR-A5_1_3-a, AUTOSAR-A5_2_5-c, AUTOSAR-A8_4_5-a, AUTOSAR-A8_4_6-a, AUTOSAR-A8_5_0-a, AUTOSAR-M0_1_3-a, AUTOSAR-M0_1_3-b, AUTOSAR-M0_3_1-b, AUTOSAR-M0_3_1-c, AUTOSAR-M0_3_1-h, AUTOSAR-M0_3_1-j, AUTOSAR-M18_0_3-a, AUTOSAR-M2_13_2-a, AUTOSAR-M5_0_16-b, AUTOSAR-M5_0_18-a, AUTOSAR-M5_0_2-e, AUTOSAR-M5_3_4-c, AUTOSAR-M5_8_1-a, AUTOSAR-M7_5_1-a, AUTOSAR-M8_5_2-c

Flow Analysis

BD-CO-ITOUT, BD-PB-CC, BD-PB-CHECKRET, BD-PB-DEREF, BD-PB-NOTINIT, BD-PB-OVERFFMT, BD-PB-OVERFWR, BD-PB-OVERLAP, BD-PB-PTRARR, BD-PB-SIGHAN, BD-RES-FREE, BD-RES-INVFREE, BD-SECURITY-OVERFFMT, BD-TRS-MLOCK, BD-TRS-ORDER

SEI CERT C

CERT_C-API01-a, CERT_C-ARR38-b, CERT_C-ARR38-c, CERT_C-CON31-b, CERT_C-CON31-c, CERT_C-DCL10-a, CERT_C-DCL11-a, CERT_C-DCL11-b, CERT_C-DCL11-c, CERT_C-DCL11-d, CERT_C-DCL11-e, CERT_C-DCL11-f, CERT_C-DCL18-b, CERT_C-DCL30-a, CERT_C-ENV01-c, CERT_C-ERR04-a, CERT_C-ERR05-a, CERT_C-EXP33-a, CERT_C-EXP39-d, CERT_C-EXP44-b, CERT_C-FIO46-a, CERT_C-FIO47-a, CERT_C-FIO47-b, CERT_C-FIO47-c, CERT_C-FIO47-d, CERT_C-FIO47-e, CERT_C-FIO47-f, CERT_C-INT31-i, CERT_C-MEM00-d, CERT_C-MEM01-a, CERT_C-MEM30-a, CERT_C-MEM34-a, CERT_C-MSC13-a, CERT_C-MSC14-a, CERT_C-MSC15-a, CERT_C-MSC24-b, CERT_C-POS51-a, CERT_C-SIG30-a, CERT_C-SIG31-a, CERT_C-SIG34-a, CERT_C-STR31-b

SEI CERT C++

CERT_CPP-CON53-a, CERT_CPP-ERR50-l, CERT_CPP-EXP52-c, CERT_CPP-EXP53-a, CERT_CPP-EXP54-a, CERT_CPP-EXP54-b, CERT_CPP-MEM50-a, CERT_CPP-MSC54-a, CERT_CPP-STR50-c

Coding Conventions

CODSTA-102, CODSTA-103, CODSTA-116, CODSTA-13, CODSTA-163_b, CODSTA-22

Coding Conventions for C++

CODSTA-CPP-59, CODSTA-CPP-86

Coding Conventions for Modern C++

CODSTA-MCPP-10_a

CODSTA-MCPP-13

CommentsCOMMENT-04
FormattingFORMAT-43
High Integrity C++

HICPP-12_4_2-a, HICPP-17_2_1-a, HICPP-17_3_2-a, HICPP-18_2_2-a, HICPP-18_3_2-a, HICPP-1_2_1-i, HICPP-1_3_1-a, HICPP-1_3_3-a, HICPP-1_3_5-a, HICPP-2_5_2-a, HICPP-3_4_1-a, HICPP-3_5_1-d, HICPP-4_2_2-a, HICPP-5_1_3-a, HICPP-5_1_5-a, HICPP-5_1_6-c, HICPP-7_1_7-a, HICPP-8_4_1-a, HICPP-8_4_1-b

Initialization

INIT-05, INIT-06

Joint Strike Fighter

JSF-024, JSF-060_b, JSF-071_b, JSF-077, JSF-085_a, JSF-111, JSF-117_b, JSF-134, JSF-139, JSF-143_a, JSF-149, JSF-164, JSF-166_c, JSF-171, JSF-181_a, JSF-203, JSF-204_a, JSF-204_b

MISRA C 1998

MISRA-027, MISRA-044, MISRA-051

MISRA C 2004

MISRA2004-12_1_e, MISRA2004-12_3_c, MISRA2004-12_8, MISRA2004-17_3, MISRA2004-17_6_a, MISRA2004-20_11, MISRA2004-7_1_a, MISRA2004-9_2_c

MISRA C++ 2008

MISRA2008-0_1_11, MISRA2008-0_1_3_a, MISRA2008-0_1_3_b, MISRA2008-0_3_1_d, MISRA2008-0_3_1_f, MISRA2008-0_3_1_h, MISRA2008-0_3_1_j, MISRA2008-18_0_1, MISRA2008-18_0_3, MISRA2008-2_13_2_a, MISRA2008-5_0_16_b, MISRA2008-5_0_18, MISRA2008-5_0_2_e, MISRA2008-5_3_4_c, MISRA2008-5_8_1, MISRA2008-7_5_1, MISRA2008-7_5_2_a, MISRA2008-8_5_2_c

MISRA C 2012

MISRAC2012-DIR_4_1-d, MISRAC2012-DIR_4_1-f, MISRAC2012-DIR_4_1-h, MISRAC2012-DIR_4_1-j, MISRAC2012-DIR_4_13-b, MISRAC2012-DIR_4_13-c, MISRAC2012-DIR_4_14-i, MISRAC2012-DIR_4_7-a, MISRAC2012-RULE_10_3-b, MISRAC2012-RULE_12_1-a, MISRAC2012-RULE_12_2-a, MISRAC2012-RULE_14_3-ac, MISRAC2012-RULE_16_1-g, MISRAC2012-RULE_16_5-a, MISRAC2012-RULE_18_1-c, MISRAC2012-RULE_18_3-a, MISRAC2012-RULE_18_6-a, MISRAC2012-RULE_19_1-c, MISRAC2012-RULE_1_3-b, MISRAC2012-RULE_1_3-c, MISRAC2012-RULE_1_3-e, MISRAC2012-RULE_1_3-m, MISRAC2012-RULE_21_17-b, MISRAC2012-RULE_21_8-a, MISRAC2012-RULE_22_2-a, MISRAC2012-RULE_22_2-b, MISRAC2012-RULE_22_6-a, MISRAC2012-RULE_7_1-a, MISRAC2012-RULE_9_1-a

Memory and Resource ManagementMRM-41
Naming ConventionsNAMING-32
Optimization

OPT-02, OPT-02, OPT-03, OPT-05, OPT-06, OPT-29, OPT-31

Possible Bugs

PB-11, PB-18, PB-22, PB-23, PB-45, PB-46, PB-47, PB-48, PB-49, PB-50, PB-73, PB-75

SecuritySECURITY-14

削除されたルール

以下のルールが削除されました。

  • AUTOSAR-A13_5_4-a
  • AUTOSAR-A17_1_1-b
  • CERT_C-ENV33-b
  • CERT_C-EXP45-a
  • CERT_C-EXP45-c
  • CERT_C-FLP37-a
  • CERT_C-FLP37-b
  • CERT_C-INT36-a

  • No labels