• Imagix 4D ユーザガイド
  • 目次

[到達不能な文] レポート

到達不能な文のレポートは、制御フローで到達不能な関数定義内の行を示します。これらの到達不能な文が存在することは、いくつかのロジックが誤っているか、欠けている可能性があることを示すかもしれません。以下はその例です:

#define TRUE 1
#define TEST TRUE

void funcA () {
    int condition1, condition2;
    if (TEST) {
        funcB();
    } else {
        not_reached_due_to_condition();
    }
    while (condition1) {
        if (condition2)
            return;
        else continue;
        occurs_after_control_transfer();
    }
    return;
}

文が到達不能であると判定されるケースは次の通りです:

  • 条件が静的にtrueまたはfalseに評価され、他のブランチにコードがある場合
  • 制御がgoto、break、またはcontinueなどで転送された後にコードが発生する場合
上記の例では、それぞれのケースに1つずつインスタンスがあります。生成されるレポートでは、これらの2つの文をそれぞれ到達不能としてリストアップします。

到達不能な文

設定
        ポインタ式の解析:                                     単純なポインタ式
        タスク定義で解析する:                                 オフ
        ユニオン/ビットフィールド・メンバーを個別に解析する:  分離
        標準Cライブラリ関数をインラインで解析する:            オン
        前回の解析で共有設定を調整する:                       オン

funcA()                                           unreach_stmt.c
          9 not_reached_due_to_condition();

         15 occurs_after_control_transfer();