AUTOSAR C++14 Rule A15-4-4
説明
ルール定義
A declaration of non-throwing function shall contain noexcept specification.
根拠
指定子の noexcept または noexcept(true) を使用して、例外を発生させない関数を指定すると、コンパイラはそれらの関数に対して特定の最適化 (例外処理プロセスの省略など) を実行できます。関数の例外指定を指定することにより、その関数では例外を発生させないという意図を明確に伝達できます。
指定子の noexcept を使用して、例外を発生させない関数を指定します。関数の例外指定がテンプレート引数によって異なる場合は noexcept(<condition>) を使用します。関数の例外指定が不明な場合は、例外が発生すると仮定します。
Polyspace 実装
Polyspace® は以下が当てはまる場合に、関数、クラス、関数テンプレート、クラス コンストラクターなどの呼び出し可能なエンティティの定義にフラグを設定します。
呼び出し可能なエンティティが定義されます。Polyspace は、宣言されているが定義されていない関数にフラグを設定しません。また、Polyspace は、少なくとも 1 つのインスタンス化を含む関数またはクラス テンプレートをチェックします。
呼び出し可能なエンティティは例外を発生させません。クラスと関数のテンプレートの場合は、少なくとも 1 つのインスタンス化で例外が発生しません。呼び出し可能なエンティティの例外をチェックするとき Polyspace は、定義のない外部関数が
noexcept(true)として機能することを前提とします。呼び出し可能なエンティティで例外が発生するかどうかを Polyspace がチェックする方法の詳細については、AUTOSAR C++14 Rule A15-4-2の Polyspace 実装のセクションを参照してください。呼び出し可能なエンティティには例外指定がありません。
トラブルシューティング
ルール違反が想定されるものの、Polyspace から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。
例
チェック情報
| グループ: Exception handling |
| カテゴリ: Required、Automated |