このリリースには以下の拡張が含まれます。

リリース日: 2022年11月28日

Automotive Compliance パックの拡張

Automotive Pack が拡張され、自動車規格への準拠を達成するのに役立つようになりました。

  • MISRA C 2012 テスト コンフィギュレーションが拡張され、MISRA C 2012 Amendment 3 に関する新規ルールの追加およびルールの更新が行われました。 
  • 新規テスト コンフィギュレーション MISRA C++ 202X が追加されました。このプレビュー コンフィギュレーションは、「Public Review Draft of MISRA C++ 202X」文書のガイドラインの一部をカバーしています。
  • 追加および更新されたルールの一覧は「新規ルール」、「更新されたルール」を参照してください。

Security Compliance パックの拡張

Security Pack が拡張され、セキュリティ規格へのコンプライアンス達成に役立つ新規テスト コンフィギュレーション 2022 CWE Top 25 および 2022 CWE Top 25 + on the Cusp が追加されました。

静的解析の拡張

  • 正規表現ベースの行抑制が拡張され、ルール識別子を指定できるようになりました。詳細については「正規表現パターンに基づく行抑制の定義」を参照してください。
  • モダン C/C++ C11 _Generic および if constexpr のサポート拡張などにより、静的解析の精度が向上しました。

プラットフォームのサポート

C/C++test Standard を Linux AArch64/ARM64 プラットフォームで実行できるようになりました。詳細については「aarch64/arm64 アーキテクチャ」を参照してください。

コンパイラのサポート

以下のコンパイラがサポートされています。

コンパイラ名コンパイラ識別子
GHS Compiler for PPC 2019.1ghsppc_2019_1
GHS Compiler for PPC 2020.1ghsppc_2020_1
GNU GCC 8.x for aarch64/ARM64gcc_8-aarch64
GNU GCC 10.x for aarch64/ARM64gcc_10-aarch64

GNU GCC 11.x for aarch64/ARM64

gcc_11-aarch64

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

新規コード解析ルールが追加され、より広くコンプライアンス規格がカバーされるようになりました。追加および更新されたルールの一覧は「New Rules」、「Updated Rules」を参照してください。

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

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

  • MISRA C++ 202X
  • CWE Top 25 2022 
  • CWE Top 25 + on the Cusp 2022

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

  • AUTOSAR C++14 Coding Guidelines
  • Flow Analysis Aggressive
  • Flow Analysis Fast
  • Flow Analysis Standard
  • MISRA C 2004
  • MISRA C 2012
  • MISRA C++ 2008
  • Recommended Rules for FDA (C++)
  • SEI CERT C Guidelines
  • SEI CERT C Rules
  • SEI CERT C++ Rules

その他のアップデート

サポートの廃止

サポートが廃止された統合プラグイン

Eclipse integration plugin for Linux loongson/mips64 のサポートが廃止されました。

解決済みのバグおよび FR

バグ/FR ID

説明

CPP-36168

[カバレッジ] テンプレート クラス内の friend 宣言によって定義されたテンプレート関数に対してコード カバレッジがレポートされない

CPP-42657

[静的] AUTOSAR A6-5-3 のマッピングを改善する

CPP-46218

[IDE] IDE で設定をインポート/エクスポートする際にコンフィギュレーション > CustomCompilers を含める必要がある

CPP-47394

[エンジン][edg] Parse error: error: "constexpr" is not valid here (clang_8_0)

CPP-48228

[unit] C++ テンプレートのスタブ化のサポート

CPP-50150

[静的] AUTOSAR A12-1-2 のマッピングを改善する

CPP-50151

[静的] AUTOSAR A12-1-3| のマッピングを改善する

CPP-50152

[IDE] IDE で設定をインポート/エクスポートする際にコンフィギュレーション > CustomCompilers を含める必要がある

CPP-50172

[静的] CERT_C-MSC33 のマッピングを改善する必要がある

CPP-50282

[静的] CERT CON35-C のマッピングの更新: BD-TRS-DLOCK ではなく BD-TRS-ORDER を使用する必要がある

CPP-50402

[静的] CERT_C-EXP37 のマッピングを改善する必要がある

CPP-50406

[静的] AUTOSAR A5-2-6 のマッピングを改善する

CPP-50421

[vscode] Problems ビューに (および/またはポップアップ メッセージで) Parasoft のセットアップの問題をレポートする

CPP-50439

[compiler] GHS Compiler for PPC 2019.1 のサポート

CPP-50440

[compiler] GHS Compiler for PPC 2020.1 のサポート

CPP-50447

[engine][edg] cpptestcc error: expected ')' before '{' token

CPP-50560

[静的] switch 文の case で条件付きの '{' が使用されている場合、MISRA2004-15_1 (MISRAC2012-RULE_16_1-b) が違反を誤検出する

CPP-50583

[カバレッジ] 非テンプレート関数内で定義された generic なラムダのコード カバレッジを追加する

CPP-50628

[静的] 特定のルールにだけ正規表現パターンに基づく抑制を有効化する

CPP-50664

[OS] C/C++test Standard での Linux ARM64 (aarch64) のネイティブ サポート

CPP-50670

[コンパイラ] GNU GCC 8 for ARM64 のサポート (extended, full, linux)

CPP-50688

[engine][edg] テンプレート エイリアスの検索でパーサーがクラッシュする

CPP-51171

[engine] for/while/do-while の直前で '#pragma MUST_ITERATE(...)' が再構築される必要がある

CPP-51172

[engine][edg] 異なる overload/SFINE の解決がアサーション失敗の原因になる

CPP-51174

[engine][edg] テンプレートと組み合わせた関数シグネチャの decltype の問題

CPP-51177

[ide] C/C++test Pro VS で IAppFile を検索する際のパフォーマンスが低い

CPP-51178

[engine][edg] パース時に 'type_traits' の型が壊れて 'integral_type<true/false>' になる

CPP-51280

[静的] TEMPL-12: ルール実行時に python エラーが発生する

CPP-51282

[unit] 'void(*fptr)(int&)' 型のパラメーターを持つ関数に対してテスト ケースを生成できない

CPP-51283

[compiler] IAR: レスポンス ファイル サポートの追加

CPP-51284

[compiler] ccac: ビルドイン関数のリストの拡張

CPP-51296

[engine] シグナル 11 が受信される

CPP-51299

[engine] "operator*<>" 構文で MISRA 2012 がセグメンテーション エラー

CPP-51300

[静的] MISRA2004-16_10 (AUTOSAR-M0_3_2-a) が case ラベルで使用されている演算子に対して違反を誤検出する

CPP-51302

[compiler] tiarm_20_2: サポート対象のビルトイン/イントリンシックの拡張

CPP-51306

[engine] No prototype: @6cf99e80 0 template 'operator()' 'operator()'.

CPP-51353

[静的] MISRA C 2004 14.3: MISRA の仕様により一致するようルールを簡略化する

CPP-51358

[カバレッジ] const-valued 変数のカバレッジ実装が誤っている

CPP-51371

[engine][edg] cpptestcc: Error: g_SceneInterfacestd has not been declared

CPP-51372

[engine] Instrumentation variable is not declared constexpr (error: call to non-‘constexpr’ function)

CPP-51443

[静的] テンプレート関数が enum 定数を返した場合に CODSTA-222 (AUTOSAR-M5_0_6-a) が違反を誤検出する

CPP-51448

[静的] メンバー関数からメンバー配列要素のアドレスが返された場合に OOP-36 (MISRA2008-9_3_2_b) が違反を検出しない

CPP-51451

[静的] AUTOSAR-A12-0-1 のマッピングを改善する

CPP-51487

[build] *.vcxproj からのプロジェクト名の読み取りが正常に動作しない場合がある

CPP-51510

[静的] this をキャプチャするラムダがメンバー関数で使用されている場合、CODSTA-CPP-78 (AUTOSAR-M9_3_3-a) が違反を誤検出する

CPP-51521

[静的] TEMPL-12: IndexError: list index out of range

CPP-51536

[静的] テンプレート引数として constexpr 変数が使用されている場合、MISRA2004-8_7 (AUTOSAR-M3_4_1-b) が違反を誤検出する

CPP-51543

[engine][edg] 静的解析がシグナル 11 でクラッシュする

CPP-51544

[静的] CERT_C-DCL06-a (CODSTA-29) の動作がドキュメントと一致していない

CPP-51547

[静的] for-range で宣言された変数がラムダによってキャプチャされている場合、OPT-01 (AUTOSAR-M3_4_1-a) が違反を誤検出する

CPP-51583

[静的] AUTOSAR-A0_1_4-a の誤検出

CPP-51587

[compiler] iccarm: error: the parameter to the command line option "--import_cmse_lib_out" was "--semihosting

CPP-51593

[静的] MISRA2004-7_1_a (AUTOSAR-M2_13_2-a) が raw 文字列で使用されている 8 進定数に対して違反を誤検出する

CPP-51619

[静的] CODSTA-CPP-93、CODSTA-CPP-94、PORT-31 が大量のメモリを消費する

CPP-51651

[docs] ファイル パターン末尾のバックスラッシュに関する IAR 固有の制限事項を記述する

CPP-51655

[静的] MISRA2012-RULE-20_9_b - 解析時に python エラーが発生する

CPP-51673

[静的] 配列初期化子で enum 定数が使用されている場合、MISRA2004-9_2_b (MISRAC2012-RULE_9_3-a) が違反を検出できない

CPP-51685

[compiler] iccarm: -fpu オプションの処理の改善

CPP-51686

[静的] CODSTA-CPP-88 (MISRA2008-2_10_6_d) が別のスコープの型への typedef に対して違反を誤検出する

CPP-51780

[engine] スタブ化によって "error: no matching function for call to 'add_package_op_ext'" が発生する

CPP-51828

[engine] テンプレート関数での UDL の使用が誤って再構築される

CPP-51839

[engine] インストゥルメンテーション コンパイル エラー: expected primary-expression before ‘}’ token

CPP-51847

[build] "arguments[]" をサポートするよう compile_commands.json パーサーを改善する

FA-6300

バックグラウンドで volatile 変数の値が変わっている可能性をシミュレーションが予期していないためにフロー解析の結果が正しくない

FA-7817

BD-PB-CC (MISRAC2012-RULE_14_3-ac) - 最初の while loop に対して違反を誤検出し、共用体を正しく処理できない

FA-7970

BD-PB-CC (MISRA2012-RULE-14_3_zc) が volatile 構造体に対して違反を検出する

FA-8392

[Null 終端文字列オブジェクトが安全に使用されている場合に違反をレポートする] パラメーターが適切に動作しない場合があるため、BD-API-STRSIZE が違反を誤検出する

FA-8563

BD-API-STRSIZE が条件演算子に対して違反を誤検出する

FA-8983

フロー解析が静的メンバー フィールドの初期化を考慮していない

FA-9035

オーバーフローに対処されているのに BD-PB-OVERFWR が検出される

FA-9040

BD-PB-OVERFNZT の誤検出

FA-9150

条件に配列要素アクセスが含まれている場合のループのシミュレーション誤り

新規ルール

ルール ID

ヘッダー

AUTOSAR-M17_0_5-b

<setjmp.h> または <csetjmp> 標準ヘッダー ファイルを使用してはいけない

AUTOSAR-M18_0_4-b

<time.h> ライブラリの時間操作関数およびマクロを使用してはいけない

AUTOSAR-M18_0_4-c

<time.h> ライブラリに定義されている型を使用してはいけない

BD-API-REALLOC

realloc 関数のサイズ引数として 0 値を渡してはならない

BD-PB-NANINF

結果が NaN 値および無限大値の可能性がある浮動小数点式を使用してはならない

BD-PB-UNGETC

ファイル位置インジケーターがゼロのストリームに ungetc 関数を使用してはならない

CODSTA-02_b

共用体のメンバーをビットフィールドとして宣言してはならない

CODSTA-108_c

<tgmath.h> で宣言された型総称マクロのすべての引数は、適切な実質型でなければならない

CODSTA-108_d

<tgmath.h> で宣言された複数引数の型総称マクロのすべての引数は、同一の標準型でなければならない

CODSTA-109_b

標準ヘッダー ファイル <fenv.h> を使用してはいけない

CODSTA-136_c

標準ヘッダー ファイル <stdarg.h> または <cstdarg> を使用してはいけない

CODSTA-18_b

関数マクロ以外では、Do 文を使用するべきではない

CODSTA-209_b

ATOMIC_VAR_INIT マクロを使用しない

CODSTA-225

浮動小数点式の等価性 (==) および非等価性 (!=) を明示的に (文法的に) テストしてはならない

CODSTA-MC-01

配列型をオペランドとして 'alignof' 演算子を使用するべきではない

CODSTA-MC-02

オブジェクトの宣言に含まれるアライメント識別子は最大でも 1 つであるべきである

CODSTA-MC-03

オブジェクトの宣言でゼロアライメント指定を使用するべきではない

CODSTA-MC-04

内部リンケージを持つオブジェクトのすべての宣言で、明示的なアライメント指定子は同一でなければならない

CODSTA-MC-05

すべての総称選択に 1 つのデフォルトの関連を含める

CODSTA-MC-06

デフォルトの関連は関連リストの最初または最後に配置する

CODSTA-MC-07

総称選択にデフォルト以外の関連を少なくとも 1 つ指定する必要がある

CODSTA-MC-08

総称選択はマクロからだけ展開するべきである

CODSTA-MC-09

総称関連は適切な型をリストする必要がある

CODSTA-MC-10

マクロ定義で使用される総称選択は、制御式でマクロのパラメーターを使用するべきである

CODSTA-MC-11

総称選択はポインターの暗黙的な型変換に依存するべきではない

CODSTA-MC-12

総称選択の制御式は、式の標準型と一致する実質的な型を持つ必要がある

CODSTA-MC-13

マクロから展開されない総称選択の制御式に潜在的な副作用があってはならない

CODSTA-MC-14

総称選択で列挙型と整数型を混在させるべきではない

CODSTA-MC-15

マクロから展開される総称選択は引数を 1 回だけ評価しなければならない

CODSTA-MCPP-56

クラスが '=default'、'=delete'、またはユーザー定義の宣言によってコピー演算子、ムーブ演算子、またはデストラクターを宣言している場合、これら 5 つの特別なメンバー関数の残りすべても宣言する必要がある

CWE-312-a

ログ ファイルに書き込む関数に機密データを渡さない

CWE-401-a

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

CWE-427-a

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

CWE-59-a

シンボリック リンクの存在を確認する際の競合状態を避ける

CWE-668-a

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

CWE-77-a

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

CWE-843-a

オブジェクト型を指すポインタとオブジェクト型を指す異なるポインタの間でキャストすべきでない

GLOBAL-ALIGNDECL

外部リンケージを持つオブジェクトのすべての宣言で、明示的なアライメント指定子は同一でなければならない

INIT-17_b

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

INIT-18

1 つの型のコンストラクターで NSDMI および非静的メンバー初期化子の両方を使用してはならない

MISRA2004-20_12_b

<time.h> ライブラリの時間操作関数およびマクロを使用してはいけない

MISRA2004-20_12_c

<time.h> ライブラリに定義されている型を使用してはいけない

MISRA2008-18_0_4_b

<ctime> ライブラリの時間操作関数およびマクロを使用してはいけない

MISRA2008-18_0_4_c

<ctime> ライブラリに定義されている型を使用してはいけない

MISRA2012-DIR-4_15

結果が NaN 値および無限大値の可能性がある浮動小数点式を使用してはならない

MISRA2012-RULE-10_1_h

浮動小数点式の等価性 (==) および非等価性 (!=) を明示的に (文法的に) テストしてはならない

MISRA2012-RULE-17_10

_Noreturn 関数指定子付きで宣言された関数の戻り値の型は void でなければならない

MISRA2012-RULE-17_11

return しない関数は _Noreturn 関数指定子付きで宣言するべきである

MISRA2012-RULE-17_12

関数識別子を使用する場合、必ず前に & を付けるか、括弧で囲んだパラメーター リストを付ける

MISRA2012-RULE-17_13

関数型は型修飾子であってはならない

MISRA2012-RULE-17_1_c

標準ヘッダー ファイル <stdarg.h> を使用してはいけない

MISRA2012-RULE-17_9

_Noreturn 関数指定子付きで宣言された関数は呼び出し側に return してはならない

MISRA2012-RULE-18_9

生存期間外にオブジェクトを使用してはならない

MISRA2012-RULE-1_5

static 記憶域クラス指定子は、内部結合を持つオブジェクト並びに関数の定義および宣言に対して用いなければならない

MISRA2012-RULE-1_5_b

ストレージタイプ修飾子は、変数や関数ではなく、型に関連付けなければならない

MISRA2012-RULE-1_5_c

関数型はプロトタイプ形式でなければならない

MISRA2012-RULE-1_5_d

ATOMIC_VAR_INIT マクロを使用しない

MISRA2012-RULE-1_5_e

#undef ディレクティブで 'bool'、'false' または 'true' 識別子を使用してはならない

MISRA2012-RULE-1_5_f

ファイル位置インジケーターがゼロのストリームに ungetc 関数を使用してはならない

MISRA2012-RULE-1_5_g

realloc 関数のサイズ引数として 0 値を渡してはならない

MISRA2012-RULE-21_10_b

<time.h> ライブラリの時間操作関数およびマクロを使用してはいけない

MISRA2012-RULE-21_10_c

<time.h> ライブラリに定義されている型を使用してはいけない

MISRA2012-RULE-21_12_b

標準ヘッダー ファイル <fenv.h> を使用してはいけない

MISRA2012-RULE-21_22

<tgmath.h> で宣言された型総称マクロのすべての引数は、適切な実質型でなければならない

MISRA2012-RULE-21_23

<tgmath.h> で宣言された複数引数の型総称マクロのすべての引数は、同一の標準型でなければならない

MISRA2012-RULE-21_24

<stdlib.h> の乱数生成関数を使用してはならない

MISRA2012-RULE-23_1

総称選択はマクロからだけ展開するべきである

MISRA2012-RULE-23_1_b

マクロ定義で使用される総称選択は、制御式でマクロのパラメーターを使用するべきである

MISRA2012-RULE-23_2

マクロから展開されない総称選択の制御式に潜在的な副作用があってはならない

MISRA2012-RULE-23_3

総称選択にデフォルト以外の関連を少なくとも 1 つ指定する必要がある

MISRA2012-RULE-23_4

総称関連は適切な型をリストする必要がある

MISRA2012-RULE-23_5

総称選択はポインターの暗黙的な型変換に依存するべきではない

MISRA2012-RULE-23_6

総称選択の制御式は、式の標準型と一致する実質的な型を持つ必要がある

MISRA2012-RULE-23_6_b

総称選択で列挙型と整数型を混在させるべきではない

MISRA2012-RULE-23_7

マクロから展開される総称選択は引数を 1 回だけ評価しなければならない

MISRA2012-RULE-23_8

デフォルトの関連は総称選択の最初または最後になければならない

MISRA2012-RULE-6_3

共用体のメンバーとしてビットフィールドを宣言してはならない

MISRA2012-RULE-7_5

整数定数マクロの引数は適切な形式でなければならない

MISRA2012-RULE-8_15

外部リンケージを持つオブジェクトのすべての宣言で、明示的なアライメント指定子は同一でなければならない

MISRA2012-RULE-8_15_b

内部リンケージを持つオブジェクトのすべての宣言で、明示的なアライメント指定子は同一でなければならない

MISRA2012-RULE-8_16

オブジェクト宣言にゼロ アライメント指定があってはならない

MISRA2012-RULE-8_17

オブジェクトの宣言に含まれるアライメント識別子は最大でも 1 つであるべきである

MISRAC2012-DIR_4_15-a

結果が NaN 値および無限大値の可能性がある浮動小数点式を使用してはならない

MISRAC2012-RULE_10_1-h

浮動小数点式の等価性 (==) および非等価性 (!=) を明示的に (文法的に) テストしてはならない

MISRAC2012-RULE_17_1-c

標準ヘッダー ファイル <stdarg.h> または <cstdarg> を使用してはいけない

MISRAC2012-RULE_17_10-a

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

MISRAC2012-RULE_17_11-a

return しない関数は、return しないことを示す属性付きで宣言する

MISRAC2012-RULE_17_12-a

関数識別子を使用する場合、必ず前に & を付けるか、括弧で囲んだパラメーター リスト (空でも構わない) を付ける

MISRAC2012-RULE_17_13-a

関数型の仕様に修飾子を含めてはならない

MISRAC2012-RULE_17_9-a

return するべきでない関数から return してはならない

MISRAC2012-RULE_18_9-a

一時的な生存期間を持つオブジェクトを変更しない

MISRAC2012-RULE_1_5-a

static 記憶域クラス指定子は、内部結合を持つオブジェクト並びに関数の定義および宣言に対して用いなければならない

MISRAC2012-RULE_1_5-b

ストレージタイプ修飾子は、変数や関数ではなく、型に関連付けなければならない

MISRAC2012-RULE_1_5-c

関数型はプロトタイプ形式でなければならない

MISRAC2012-RULE_1_5-d

ATOMIC_VAR_INIT マクロを使用しない

MISRAC2012-RULE_1_5-e

#undef ディレクティブで 'bool'、'false' または 'true' 識別子を使用してはならない

MISRAC2012-RULE_1_5-f

ファイル位置インジケーターがゼロのストリームに ungetc 関数を使用してはならない

MISRAC2012-RULE_1_5-g

realloc 関数のサイズ引数として 0 値を渡してはならない

MISRAC2012-RULE_21_10-b

<time.h> ライブラリの時間操作関数およびマクロを使用してはいけない

MISRAC2012-RULE_21_10-c

<time.h> ライブラリに定義されている型を使用してはいけない

MISRAC2012-RULE_21_12-b

標準ヘッダー ファイル <fenv.h> を使用してはいけない

MISRAC2012-RULE_21_22-a

<tgmath.h> で宣言された型総称マクロのすべての引数は、適切な実質型でなければならない

MISRAC2012-RULE_21_23-a

<tgmath.h> で宣言された複数引数の型総称マクロのすべての引数は、同一の標準型でなければならない

MISRAC2012-RULE_21_24-a

乱数生成関数 'rand()' および 'srand()' を使用するべきではない

MISRAC2012-RULE_23_1-a

総称選択はマクロからだけ展開するべきである

MISRAC2012-RULE_23_1-b

マクロ定義で使用される総称選択は、制御式でマクロのパラメーターを使用するべきである

MISRAC2012-RULE_23_2-a

マクロから展開されない総称選択の制御式に潜在的な副作用があってはならない

MISRAC2012-RULE_23_3-a

総称選択にデフォルト以外の関連を少なくとも 1 つ指定する必要がある

MISRAC2012-RULE_23_4-a

総称関連は適切な型をリストする必要がある

MISRAC2012-RULE_23_5-a

総称選択はポインターの暗黙的な型変換に依存するべきではない

MISRAC2012-RULE_23_6-a

総称選択の制御式は、式の標準型と一致する実質的な型を持つ必要がある

MISRAC2012-RULE_23_6-b

総称選択で列挙型と整数型を混在させるべきではない

MISRAC2012-RULE_23_7-a

マクロから展開される総称選択は引数を 1 回だけ評価しなければならない

MISRAC2012-RULE_23_8-a

デフォルトの関連は関連リストの最初または最後に配置する

MISRAC2012-RULE_6_3-a

共用体のメンバーをビットフィールドとして宣言してはならない

MISRAC2012-RULE_7_5-a

整数定数マクロの引数は、適切な値を持つ 10 進数、8 進数、16 進数定数であるべきである

MISRAC2012-RULE_8_15-a

外部リンケージを持つオブジェクトのすべての宣言で、明示的なアライメント指定子は同一でなければならない

MISRAC2012-RULE_8_15-b

内部リンケージを持つオブジェクトのすべての宣言で、明示的なアライメント指定子は同一でなければならない

MISRAC2012-RULE_8_16-a

オブジェクトの宣言でゼロアライメント指定を使用するべきではない

MISRAC2012-RULE_8_17-a

オブジェクトの宣言に含まれるアライメント識別子は最大でも 1 つであるべきである

MISRACPP202X-0023-a

3 文字表記は、用いてはならない

MISRACPP202X-0025-a

文字列 /* を C スタイルコメント内で用いてはならない

MISRACPP202X-0035-a

ゼロ以外の 8 進定数を使用してはいけない

MISRACPP202X-0036-a

すべての符号なし型の定数には、接尾辞 U を付けなければならない

MISRACPP202X-0039-a

ファイルの中で、#include 文の前には、他の前処理指令またはコメントだけを記述すべきである

MISRACPP202X-0042-a

関数形式マクロよりも関数を用いるべきである

MISRACPP202X-0043-a

関数形式マクロの引数には、前処理指令のような字句を記述してはならない

MISRACPP202X-0045-a

翻訳単位中に定義されていない前処理指令 #if および #elif マクロを使用してはならない

MISRACPP202X-0046-a

前処理指令は、前処理で除外されたとしても、構文的に意味を持つようにしなければならない

MISRACPP202X-0049-a

外部結合を持つ配列を宣言するときは、明示的にサイズを記述するか、初期化によって暗黙的にサイズを定義しなければならない

MISRACPP202X-0064-a

NULL または 0 (ゼロ) ではなく nullptr を使用する

MISRACPP202X-0087-a

仮想基底クラスへのポインタは dynamic_cast によってだけ派生クラスへのポインタにキャストできる

MISRACPP202X-0089-a

void へのキャスト以外の C スタイルのキャストおよび明示的なコンストラクタ呼び出し以外の関数スタイルのキャストを使用してはならない

MISRACPP202X-0090-a

キャストによってポインターまたは参照型から const または volatile 修飾子を取り除いてはならない

MISRACPP202X-0096-a

論理演算子 AND、OR (&&、||) をオーバーロードしてはいけない

MISRACPP202X-0096-b

カンマ演算子 "," をオーバーロードしてはいけない

MISRACPP202X-0097-a

ポインター型または配列型のパラメーターを持つ関数に配列型の式を渡してはならない

MISRACPP202X-0100-a

単項演算子 & をオーバーロードしてはならない

MISRACPP202X-0105-a

カンマ演算子は、用いてはならない

MISRACPP202X-0110-a

switch、while、do...while 、for 文の本体を構成する文は、複合文でなければならない

MISRACPP202X-0110-b

if および else の後には複合文を続けなければならない

MISRACPP202X-0125-a

goto 文によって参照されるラベルは、同じブロックまたは goto 文を含む外側のブロックで宣言されなければならない

MISRACPP202X-0133-a

グローバル名前空間は main() および名前空間の宣言だけを含むことができる

MISRACPP202X-0134-a

識別子 main をグローバルな main 関数以外の関数に使用してはならない

MISRACPP202X-0135-a

ヘッダー ファイルに無名の名前空間があってはならない

MISRACPP202X-0143-a

自動記憶域のオブジェクトのアドレスを、オブジェクトが存在しなくなった後にも存在し続ける可能性がある別のオブジェクトに代入してはならない

MISRACPP202X-0143-b

ローカル オブジェクトを参照によってキャプチャするラムダは、より長い存続期間を持つ変数に代入するべきではない

MISRACPP202X-0145-a

再帰を使用しない

MISRACPP202X-0146-a

各変数は、別個の宣言文で宣言しなければならない

MISRACPP202X-0147-a

継承された仮想関数を別のデフォルト パラメーター値で再定義してはならない

MISRACPP202X-0148-a

識別子 va_list、va_arg、va_start、va_end、va_copy を使用するべきではない

MISRACPP202X-0150-a

戻り値の型が非 void の関数の場合、すべての出口で、式を持つ明示的な return 文を記述しなければならない

MISRACPP202X-0152-a

初期化の前に使用しない

MISRACPP202X-0158-a

共用体は、用いてはならない

MISRACPP202X-0159-a

メンバ変数をビット フィールドとして宣言してはいけない

MISRACPP202X-0162-a

signed integer 型の名前付きのビットフィールドは 2 ビット以上の長さでなければならない

MISRACPP202X-0163-a

仮想基底クラスからクラスを派生するべきではない

MISRACPP202X-0165-a

同じ階層の中で、基底クラスを仮想と非仮想の両方にすることはできない

MISRACPP202X-0171-a

作成中のオブジェクトの動的型を使用しない

MISRACPP202X-0171-b

破棄処理中のオブジェクトの動的型を使用しない

MISRACPP202X-0173-a

変換を可能にするコンストラクタは explicit にする

MISRACPP202X-0173-b

ユーザー定義の変換を行うキャスト演算子は explicit にするべきである

MISRACPP202X-0187-a

例外オブジェクトはポインタ型にするべきではない

MISRACPP202X-0207-a

多重インクルード ガードを使用する

MISRACPP202X-0208-a

#include 指令のヘッダー ファイル名には、非標準文字を記述すべきではない

MISRACPP202X-0210-a

#include 指令の後には <filename> または "filename" が続かなければならない

MISRACPP202X-0212-a

前処理演算子 # 及び ## を用いてはならない

MISRACPP202X-0222-a

特定の標準ライブラリ関数から返されたポインターは、そのあとの同じ関数または関連する関数の呼び出しで使用してはならない

MISRACPP202X-0239-a

メンバー仮想関数を指すポインターは、null ポインター定数と等価かどうかだけをテストするべきである

MISRACPP202X-0280-a

std::forward に渡した引数を後で使用してはならない

MISRACPP202X-0280-b

移動元オブジェクトの値に依存しない

MISRACPP202X-0320-a

8 進または 16 進のエスケープ シーケンスは終了させなければならない

MISRACPP202X-0324-a

削除の時点で不完全なオブジェクトを削除してはならない

MISRACPP202X-0343-a

オーバーライド仮想関数は override または final 指定子付きで宣言する必要がある

MISRACPP202X-0343-b

メンバー関数の宣言では virtual、override、final のいずれか 1 つだけを指定するべきである

MISRACPP202X-0359-a

return するべきでない関数から return してはならない

MISRACPP202X-0370-a

# または ## 演算子のオペランドとして使用されており、それ自体がマクロ置換の対象であるマクロ パラメーターは、それらの演算子のオペランドとしてだけ使用されなければならない

PREPROC-27

#undef ディレクティブで 'bool'、'false' または 'true' 識別子を使用してはならない

更新されたルール

カテゴリ ID

ルール ID

DISA ASD STIG

APSC_DV-001995-c, APSC_DV-002290-d, APSC_DV-002520-e, APSC_DV-002530-e, APSC_DV-002550-e, APSC_DV-002560-e, APSC_DV-002590-b, APSC_DV-002590-d

AUTOSAR C++14 Coding Guidelines

AUTOSAR-A0_1_1-a, AUTOSAR-A0_1_4-a, AUTOSAR-A0_4_4-a, AUTOSAR-A12_0_1-a, AUTOSAR-A12_1_2-a, AUTOSAR-A12_1_3-a, AUTOSAR-A27_0_1-b, AUTOSAR-A27_0_2-a, AUTOSAR-A27_0_2-b, AUTOSAR-A5_2_5-a, AUTOSAR-A5_2_5-d, AUTOSAR-A5_2_6-a, AUTOSAR-A5_3_2-a, AUTOSAR-A5_6_1-a, AUTOSAR-A6_5_3-a, AUTOSAR-A9_3_1-a, AUTOSAR-A9_6_2-a, AUTOSAR-M0_1_2-ac, AUTOSAR-M0_3_1-b, AUTOSAR-M0_3_1-d, AUTOSAR-M0_3_1-e, AUTOSAR-M0_3_1-f, AUTOSAR-M0_3_1-g, AUTOSAR-M0_3_2-a, AUTOSAR-M14_6_1-a, AUTOSAR-M16_0_7-a, AUTOSAR-M17_0_5-a, AUTOSAR-M18_7_1-a, AUTOSAR-M3_4_1-a, AUTOSAR-M3_4_1-b, AUTOSAR-M5_0_16-a, AUTOSAR-M5_0_6-a, AUTOSAR-M6_2_3-a, AUTOSAR-M6_4_3-c, AUTOSAR-M6_4_4-a, AUTOSAR-M8_5_2-b, AUTOSAR-M9_3_3-a

フロー解析

BD-API-BADPARAM, BD-API-STRSIZE, BD-API-VALPARAM, BD-PB-ARRAY, BD-PB-CC, BD-PB-MCCSTR, BD-PB-MODSTR, BD-PB-NORETDECL, BD-PB-NP, BD-PB-OVERFNZT, BD-PB-OVERFWR, BD-PB-OVERFWR, BD-PB-UCMETH, BD-PB-VOVR, BD-PB-WRRSTR, BD-PB-ZERO, BD-SECURITY-ARRAY, BD-TRS-FRC

SEI CERT C

CERT_C-API01-a, CERT_C-ARR30-a, CERT_C-ARR38-b, CERT_C-ARR38-d, CERT_C-ARR39-a, CERT_C-CON35-a, CERT_C-CON37-a, CERT_C-DCL06-a, CERT_C-DCL19-a, CERT_C-DCL22-a, CERT_C-ENV01-c, CERT_C-ERR33-c, CERT_C-EXP08-b, CERT_C-EXP34-a, CERT_C-EXP35-a, CERT_C-EXP37-a, CERT_C-EXP37-b, CERT_C-FIO24-a, CERT_C-FIO37-a, CERT_C-FIO45-a, CERT_C-FLP03-a, CERT_C-FLP32-a, CERT_C-INT10-a, CERT_C-INT31-a, CERT_C-INT31-h, CERT_C-INT31-i, CERT_C-INT31-j, CERT_C-INT31-k, CERT_C-INT31-l, CERT_C-INT31-m, CERT_C-INT31-n, CERT_C-INT33-a, CERT_C-MSC19-a, CERT_C-MSC19-b, CERT_C-MSC22-a, CERT_C-MSC33-a, CERT_C-POS30-a, CERT_C-POS44-a, CERT_C-POS54-c, CERT_C-SIG00-a, CERT_C-SIG01-a, CERT_C-SIG02-a, CERT_C-STR03-a, CERT_C-STR30-b, CERT_C-STR31-a, CERT_C-STR31-b, CERT_C-STR32-a

SEI CERT C++

CERT_CPP-ERR52-a, CERT_CPP-EXP60-a, CERT_CPP-OOP57-a, CERT_CPP-OOP57-b, CERT_CPP-STR50-b, CERT_CPP-STR50-c, CERT_CPP-STR51-a

コーディング規約

CODSTA-02, CODSTA-109, CODSTA-152, CODSTA-156_a, CODSTA-156_b, CODSTA-157, CODSTA-161_a, CODSTA-163_a, CODSTA-163_b, CODSTA-164_a, CODSTA-164_b, CODSTA-165_a, CODSTA-165_b, CODSTA-165_c, CODSTA-196, CODSTA-222, CODSTA-29

C++ コーディング規約

CODSTA-CPP-78, CODSTA-CPP-88, CODSTA-CPP-93, CODSTA-CPP-94

Common Weakness Enumeration

CWE-119-a, CWE-119-e, CWE-119-f, CWE-125-a, CWE-20-a, CWE-362-b, CWE-476-a, CWE-787-a, CWE-787-d

High Integrity C++

HICPP-1_2_1-h, HICPP-1_2_1-i, HICPP-3_5_1-b, HICPP-5_2_1-a, HICPP-5_2_1-c, HICPP-5_5_1-a, HICPP-6_3_1-a, HICPP-6_4_1-a, HICPP-9_1_1-a, HICPP-9_1_4-a

Joint Strike Fighter

JSF-020, JSF-021_b, JSF-105, JSF-115, JSF-136_a, JSF-136_b, JSF-209, JSF-209_b

MISRA C 1998

MISRA-054

MISRA C 2004

MISRA2004-14_3, MISRA2004-15_1, MISRA2004-16_10, MISRA2004-19_11_b, MISRA2004-20_7, MISRA2004-20_8_b, MISRA2004-6_3, MISRA2004-6_3_b, MISRA2004-8_7, MISRA2004-9_2_b

MISRA C++ 2008

MISRA2008-0_1_2_aa, MISRA2008-0_1_6, MISRA2008-0_3_1_a, MISRA2008-0_3_1_b, MISRA2008-0_3_1_c, MISRA2008-0_3_1_e, MISRA2008-0_3_1_h, MISRA2008-0_3_2, MISRA2008-14_6_1, MISRA2008-16_0_7_b, MISRA2008-17_0_5, MISRA2008-18_7_1_b, MISRA2008-3_4_1_a, MISRA2008-3_4_1_b, MISRA2008-5_0_16_a, MISRA2008-5_0_6_a, MISRA2008-6_2_3, MISRA2008-6_4_3_a, MISRA2008-6_4_4, MISRA2008-8_5_2_b, MISRA2008-9_3_2_b, MISRA2008-9_3_3

MISRA C 2012 (Legacy)

MISRA2012-DIR-4_11, MISRA2012-DIR-4_14_a, MISRA2012-DIR-4_1_a, MISRA2012-DIR-4_1_b, MISRA2012-DIR-4_1_c, MISRA2012-DIR-4_1_e, MISRA2012-DIR-4_1_h, MISRA2012-DIR-4_6_a, MISRA2012-DIR-4_6_b, MISRA2012-RULE-10_1_a, MISRA2012-RULE-10_3_a, MISRA2012-RULE-10_3_b, MISRA2012-RULE-10_4_a, MISRA2012-RULE-10_4_b, MISRA2012-RULE-10_5_a, MISRA2012-RULE-10_5_b, MISRA2012-RULE-10_5_c, MISRA2012-RULE-10_6, MISRA2012-RULE-10_7_a, MISRA2012-RULE-10_7_b, MISRA2012-RULE-10_8, MISRA2012-RULE-14_3_zc, MISRA2012-RULE-16_1_b, MISRA2012-RULE-16_2, MISRA2012-RULE-18_1_a, MISRA2012-RULE-1_3_a, MISRA2012-RULE-1_3_e, MISRA2012-RULE-20_9_b, MISRA2012-RULE-21_10, MISRA2012-RULE-21_12, MISRA2012-RULE-21_14, MISRA2012-RULE-21_17_a, MISRA2012-RULE-21_17_b, MISRA2012-RULE-21_18, MISRA2012-RULE-21_4_a, MISRA2012-RULE-21_5_b, MISRA2012-RULE-2_2_b, MISRA2012-RULE-8_9, MISRA2012-RULE-9_3

MISRA C 2012

MISRAC2012-DIR_4_1-a, MISRAC2012-DIR_4_1-b, MISRAC2012-DIR_4_1-c, MISRAC2012-DIR_4_1-e, MISRAC2012-DIR_4_1-h, MISRAC2012-DIR_4_11-a, MISRAC2012-DIR_4_14-a, MISRAC2012-DIR_4_6-a, MISRAC2012-DIR_4_6-b, MISRAC2012-RULE_10_1-a, MISRAC2012-RULE_10_3-a, MISRAC2012-RULE_10_3-b, MISRAC2012-RULE_10_4-a, MISRAC2012-RULE_10_4-b, MISRAC2012-RULE_10_5-a, MISRAC2012-RULE_10_5-b, MISRAC2012-RULE_10_5-c, MISRAC2012-RULE_10_6-a, MISRAC2012-RULE_10_7-a, MISRAC2012-RULE_10_7-b, MISRAC2012-RULE_10_8-a, MISRAC2012-RULE_14_3-ac, MISRAC2012-RULE_16_1-b, MISRAC2012-RULE_16_2-a, MISRAC2012-RULE_18_1-a, MISRAC2012-RULE_1_3-a, MISRAC2012-RULE_1_3-e, MISRAC2012-RULE_20_9-b, MISRAC2012-RULE_21_10-a, MISRAC2012-RULE_21_12-a, MISRAC2012-RULE_21_14-a, MISRAC2012-RULE_21_17-a, MISRAC2012-RULE_21_17-b, MISRAC2012-RULE_21_18-a, MISRAC2012-RULE_21_4-a, MISRAC2012-RULE_21_5-b, MISRAC2012-RULE_2_2-b, MISRAC2012-RULE_8_9-a, MISRAC2012-RULE_9_3-a

Object Oriented

OOP-36

最適化

OOPT-01, OPT-03

OWASP Top 10 2019

OWASP2019-API3-b, OWASP2019-API3-e, OWASP2019-API3-g

移植性

PORT-31

セキュリティ

SECURITY-01, SECURITY-02

テンプレート

TEMPL-12

削除されたルール

ルール ID

説明

CERT_C-EXP37-c

CERT C コンフィギュレーションから削除されました。他のコンフィギュレーションに関しては、CODSTA-159 を代替として使用できます。

MISRA2008-2_10_6_d

MISRA C++ 2008 コンフィギュレーションから削除されました。他のコンフィギュレーションに関しては、CODSTA-CPP-88 を代替として使用できます。

MISRA2012-RULE-1_4_a

MISRA C 2012 コンフィギュレーションから削除されました。他のコンフィギュレーションに関しては、CODSTA-216 を代替として使用できます。

MISRA2012-RULE-1_4_b

MISRA C 2012 コンフィギュレーションから削除されました。他のコンフィギュレーションに関しては、CODSTA-206 を代替として使用できます。

MISRA2012-RULE-1_4_c

MISRA C 2012 コンフィギュレーションから削除されました。他のコンフィギュレーションに関しては、CODSTA-207 を代替として使用できます。

MISRA2012-RULE-1_4_h

MISRA C 2012 コンフィギュレーションから削除されました。他のコンフィギュレーションに関しては、CODSTA-213 を代替として使用できます。

MISRA2012-RULE-1_4_i

MISRA C 2012 コンフィギュレーションから削除されました。他のコンフィギュレーションに関しては、CODSTA-208 を代替として使用できます。

MISRA2012-RULE-21_11_b

MISRA C 2012 コンフィギュレーションから削除されました。他のコンフィギュレーションに関しては、CODSTA-108_b を代替として使用できます。

MISRAC2012-RULE_1_4-a

MISRA C 2012 コンフィギュレーションから削除されました。他のコンフィギュレーションに関しては、CODSTA-216 を代替として使用できます。

MISRAC2012-RULE_1_4-b

MISRA C 2012 コンフィギュレーションから削除されました。他のコンフィギュレーションに関しては、CODSTA-206 を代替として使用できます。

MISRAC2012-RULE_1_4-c

MISRA C 2012 コンフィギュレーションから削除されました。他のコンフィギュレーションに関しては、CODSTA-207 を代替として使用できます。

MISRAC2012-RULE_1_4-h

MISRA C 2012 コンフィギュレーションから削除されました。他のコンフィギュレーションに関しては、CODSTA-213 を代替として使用できます。

MISRAC2012-RULE_1_4-i

MISRA C 2012 コンフィギュレーションから削除されました。他のコンフィギュレーションに関しては、CODSTA-208 を代替として使用できます。

MISRAC2012-RULE_21_11-b

MISRA C 2012 コンフィギュレーションから削除されました。他のコンフィギュレーションに関しては、CODSTA-108_b を代替として使用できます。

  • No labels