[未使用変数] レポート
[未使用変数] レポートは、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)
|
|