C and C++


LANG.STRUCT.DECL.FNEST : ネストされた関数宣言

要旨

関数定義の中に関数宣言があります。

プロパティ

クラス名 Nested Function Declaration
日本語クラス名 ネストされた関数宣言
クラス分類 スタイル (style)
ニーモニック LANG.STRUCT.DECL.FNEST
カテゴリー
Misra2004 Misra2004:8.6 Functions shall be declared at file scope
AUTOSARC++14 AUTOSARC++14:M3-1-2 Functions shall not be declared at block scope.
MisraC++2008 MisraC++2008:3-1-2 Functions shall not be declared at block scope.
MisraC++2023 MisraC++2023:6.0.1 Block scope declarations shall not be visually ambiguous
CWE CWE:710 Improper Adherence to Coding Standards
CERT-CPP CERT-CPP:DCL53-CPP Do not write syntactically ambiguous declarations
JSF++ JSF++:107 Functions shall always be declared at file scope.
対応言語 C および C++ で利用可能です。
有効/無効設定 このワーニングクラスのチェックはデフォルトで無効になっており、プロジェクトには非正規の C向けAST が必要になります。有効にするにはプロジェクト設定ファイル (configuration file) に以下の WARNING_FILTER ルールと RETAIN_UNNORMALIZED_C_AST 設定を追加してください。
RETAIN_UNNORMALIZED_C_AST = Yes
WARNING_FILTER += allow class="Nested Function Declaration"
注:非正規化された AST を継続して使用した場合、使用ディスク容量が増加し解析時間が長くなる可能性があります。

int lang_struct_decl_fnest(int i){
    int g(int x); /* 'Nested Function Declaration' warning issued here */
    return g(i);
}

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

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