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

[未使用変数] レポート

[未使用変数] レポートは、5 つのレポートで構成されるものと考えることができます。つまり、設定も読み取られもしない変数、未使用の変数、もしくは設定、初期化、読み取りがそれぞれ実行される変数に限定して、レビューを行うか否かを選択することが可能です。これら5つの選択項目により、コード内の異なる種類の潜在的な問題を特定できます。例として次のようなソースコードを取りあげます。

int globalA, globalB;

int func2(int paramX, int paramY) {
    paramY = globalB;
    globalA = paramY;
    return globalB;
}

int func1(void) {
    int localW = 1;
    int localX, localY, localZ;
    return func2(localX, localY);
}

レポート結果は、適用する選択項目に大きく左右されます。[未使用変数] に設定すると、ソースコードで読み取られたり、設定されたりしない変数を検出します。レポートには、宣言された場所に関する情報とあわせて、各変数がリスト表示されます。これらは不完全な宣言である可能性もありますが、細部までレビューを行うことで、チェックの対象となるソフトウェアで名前の不一致などの重大な問題が露呈することがあります。

Variables That Are Never Used

Settings:
        Usage Type:        never used
        Global Variables:  displayed
        Static Variables:  displayed
        Local Variables:   displayed
        Code Range:        all

Summary
  Variables       Total  Set Only Read Only    Unused
Global                2         1         1         0
Static                0         0         0         0
Local                 6         2         2         1


Variable                                          File (Line)

localZ                                            unused_vars.c (12)

[初期化専用変数] に設定した場合には、最初だけ値が代入され、それ以降はソースコード内で使用されない変数を検出します。これらの潜在的な原因は、[未使用変数] に類似しますが、初期化によって不完全な宣言が発生する可能性は低くなることが予想されます。

Variables That Are Initialized Only

Settings:
        Usage Type:        initialized only
        Global Variables:  displayed
        Static Variables:  displayed
        Local Variables:   displayed
        Code Range:        all

Summary
  Variables       Total  Set Only Read Only    Unused
Global                2         1         1         0
Static                0         0         0         0
Local                 6         2         2         1


Variable                                          File (Line)

localW                                            unused_vars.c (11)

[セット専用変数] では、重要なデータの不使用を示すことがあります。この場合、変数の範囲によってフィルタリングすることが可能です。ここでは、システムの一部だけをチェックする場合のように、レポートからグローバル変数が除外されます。

Variables That Are Set Only (including Initialized Only)

Settings:
        Usage Type:        set only
        Global Variables:  omitted
        Static Variables:  displayed
        Local Variables:   displayed
        Code Range:        all

Summary
  Variables       Total  Set Only Read Only    Unused
Static                0         0         0         0
Local                 6         2         2         1


Variable                                          File (Line)

localW                                            unused_vars.c (11)
paramX                                            unused_vars.c (4)

読み取られる変数に限定して表示するようレポートを設定することにより、読み取られる際に予期しない結果に繋がる、初期化されていない変数などの問題を発見することができます。

Variables Which Are Read Only
Settings:
        Usage Type:        read only
        Global Variables:  displayed
        Static Variables:  displayed
        Local Variables:   displayed
Summary
  Variables       Total  Set Only Read Only    Unused
Global                2         1         1         0
Static                0         0         0         0
Local                 6         2         2         1
Variable                           File (Line)
globalA                            unused_vars.c (2)
localW                             unused_vars.c (12)
paramX                             unused_vars.c (4)

[不要なセットと読み取りの両方] を選択すると、最も完成度の高い結果が出力されます。その用途が疑わしいあらゆる変数をリストアップすることで、他の選択項目でレポートされた変数すべてを効果的にまとめ上げます。

これを実行する場合コード範囲は [タスクのみ] に設定されることに注意してください。タスクを定義 したのち、それらの定義を使用し、特定のタスクあるいは一連のタスク内の変数の使用に関する解析に焦点を当てます。以下のごく小さなコード例には、1つしかタスクが記述されていないため、[タスクのみ] を選択したとしても、ここでは大きな影響が生じることはありません。他のレポートは、タスク間における変数のフローやデータ共有を中心に処理します。

Variables That Are Either Set Only (including Initialized Only), Read Only, or Never Used

Settings:
        Usage Type:        non-complete (not both set and read)
        Global Variables:  omitted
        Static Variables:  displayed
        Local Variables:   displayed
        Code Range:        tasks only

Task Definitions
Tasks are from Auto Task Generation: Any root functions
Name                Members  Graph  Root
autotask 1 - func1        2    [+]  func1

Summary
  Variables       Total  Set Only Read Only    Unused
Static                0         0         0         0
Local                 6         2         2         1


Variable                                          File (Line)

localW                                            unused_vars.c (11)
localX                                            unused_vars.c (12)
localY                                            unused_vars.c (12)
localZ                                            unused_vars.c (12)
paramX                                            unused_vars.c (4)