命令の数
関数ごとの指示の数
説明
このメトリクスは関数本体内の命令の数を測定します。
このメトリクスの推奨上限は 50 です。さらにモジュール化されたコードについては、このメトリクスの上限を適用するようにしてください。
メトリクスに制限を適用するには、Polyspace を使用したコード複雑度メトリクスの計算を参照してください。
計算の詳細
メトリクスは、次のルールを使って計算されます。
セミコロン (
;) で終わる単純なステートメントが 1 つの命令です。ステートメントが空の場合、命令としてカウントされません。変数宣言が 1 つの命令としてカウントされるのは、以下の条件のいずれかを満たす場合です。
変数が非静的で、初期化されている。次に例を示します。
静的変数の宣言はステートメントとしてカウントされない。これらは、コンパイル時に C++ で初期化される可能性があります。int var = 0;
変数がコンストラクターなどの関数呼び出しによって初期化されている。次に例を示します。
class A { public: A(); A(int in) { /*..*/ } }; //... A obj(5); //Calls A::A(int). This is considered a single instruction.
if、for、break、goto、return、switch、while、do-whileなどの制御フロー ステートメントは 1 つの命令としてカウントされます。コード ブロックの開始と終了を示す中かっこは、命令としてカウントされません。次のブロックは 1 つの命令としてカウントされます。
{ int var = 1; }ラベル自体は命令としてカウントされません。次のコードは 2 つの命令を示しています。
caseラベル自体は命令としてカウントされません。switch (1) { // Instruction 1: switch case 0: case 1: case 2: default: break; // Instruction 2: break }
必要に応じてコンパイラにより生成される暗黙的なコンストラクターについては、命令の数は計算されません。たとえば、コンストラクターを =default として宣言すると、Polyspace® はこのコンストラクターの命令の数を計算しません。
例
メトリクス情報
| グループ: 関数 |
頭字語: STMT |
| HIS メトリクス:あり |