メインコンテンツ

AUTOSAR C++14 Rule A8-4-2

All exit paths from a function with non-void return type shall have an explicit return statement with an expression

説明

ルール定義

All exit paths from a function with non-void return type shall have an explicit return statement with an expression.

根拠

void 以外の戻り値の型を使用する関数から return ステートメントを省略すると、その関数は未定義の値を返します。未定義の値により、コード実行時に未定義の動作が発生し、予期しない結果になる可能性があります。

Polyspace 実装

void 以外の戻り値の型を使用する関数のすべての実行パスに return ステートメントが含まれていない場合、Polyspace® はルール違反を報告します。

トラブルシューティング

ルール違反が想定されるものの、Polyspace から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。

すべて展開する

int launch_angle (int mass) {
    if (mass < 50) {
        return 15;
    } else if (mass < 100) {
        return 45;
    } else {
        return 90; 
    }
} //Compliant

bool admission (bool has_ticket, bool valid_date) {
    if (has_ticket && valid_date) {
        return true;
    }
} //Noncompliant

この例では、関数 launch_angle については、すべての実行パスに return ステートメントが含まれているため、Polyspace はルール違反を報告しません。関数 admission については、if ステートメントの外部に return ステートメントがないため、Polyspace はルール違反を報告します。

チェック情報

グループ: 宣言子
カテゴリ: Required、Automated

バージョン履歴

R2019a で導入