C and C++


LANG.STRUCT.RFNR : noreturn属性のついた関数またはメソッドのリターン

要旨

Control returns from a function or method that is declared with one of the following.

プロパティ

クラス名 Return from noreturn
日本語クラス名 noreturn属性のついた関数またはメソッドのリターン
クラス分類 セキュリティ (security)
ニーモニック LANG.STRUCT.RFNR
カテゴリー
MisraC2023 MisraC2023:17.9 A function declared with a _Noreturn function specifier shall not return to its caller
Misra2012 Misra2012:17.9 A function declared with a _Noreturn function specifier shall not return to its caller
AUTOSARC++14 AUTOSARC++14:A7-6-1 Functions declared with the [[noreturn]] attribute shall not return.
MisraC++2023 MisraC++2023:9.6.4 A function declared with the [[noreturn]] attribute shall not return
CERT-CPP CERT-CPP:MSC53-CPP Do not return from a function declared [[noreturn]]
対応言語 C および C++ で利用可能です。
有効/無効設定 このワーニングクラスのチェックはデフォルトで有効になっています。チェックを無効にするにはプロジェクト設定ファイル (configuration file)に以下の WARNING_FILTER ルールを追加してください。
WARNING_FILTER += discard class="Return from noreturn"

#include <cstdlib>

int return_ok(int x){                                        // ok: does not have noreturn attribute
    return x;
}

[[noreturn]] int explicit_return(int x){
    return x;                             // 'Return from noreturn' warning issued here
}

int i = 0;

[[noreturn]] void implicit_return(int x){
    i += x;
}                                         // 'Return from noreturn' warning issued here
                                          // control returns from this function, even though there is no explicit return statement


[[noreturn]] void no_return(int x){                          // ok: there is no execution path on which control returns from this function
    if (x > 0){
        while (x > 0){continue;}
    }
    else if (x > -10){
        throw "Bad x value";
    }
    else {
        std::exit(0);
    }
}

関連のある設定ファイルパラメータ

設定ファイルの以下のパラメータがこのワーニングクラスのチェックに影響します。