指令数
每个函数的指令数目
描述
此度量会测量函数体中的指令数目。
此度量的建议上限为 50。要获得更模块化的代码,请尝试为此度量强制应用一个上限。
要对度量强制应用某些限制,请参阅使用 Polyspace 计算代码复杂度度量。
计算详细信息
此度量是按照以下规则计算的:
以分号 (
;) 结尾的简单语句就是一条指令。如果语句为空,则不会将其视为指令。如果以下任一条件为 true,则将变量声明视为一条指令:
变量为非静态且已初始化。例如:
静态变量的声明不被视为语句。在 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等控制流语句均被视为一条指令。代码块的开头和结尾的花括号不会被视为指令。以下块被视为一条指令:
{ int var = 1; }标签自身不会被视为指令。以下代码显示了两条指令。
case标签自身不会被视为指令。switch (1) { // Instruction 1: switch case 0: case 1: case 2: default: break; // Instruction 2: break }
不计算编译器在需要时生成的隐式构造函数的指令数。例如,如果将构造函数声明为 =default,则 Polyspace® 不会计算该构造函数的指令数。
示例
度量信息
| 组:函数 |
缩写:STMT |
| HIS 度量:是 |