主要内容

调用层数

控制流语句的嵌套深度

描述

此度量指定函数中的控制流语句(例如 ifswitchforwhile)的最大嵌套深度。Polyspace®0 开始进行嵌套深度计数,并且每增加一个嵌套层级,此度量就会递增。无控制流语句的函数的调用层数为 0。

通过使用新的命令行选项 -start-level-from-one,您可以从 1 而不是 0 开始进行调用层数计数。

此度量的建议上限为 4。为提高代码的可读性,请尝试为此度量强制应用一个上限。

要对度量强制应用某些限制,请参阅使用 Polyspace 计算代码复杂度度量

示例

全部展开

int foo(int x,int y)
{
    int flag = 0;
    if (x <= 0)
        /* Call level 1*/
        flag = 1;
    else
    {
        if (x <= y )
            /* Call level 2*/
            flag = 1;
        else
            flag = -1;
    }
    return flag;
}

在此示例中,foo 的调用层数为 2。Polyspace 将 else-if 语句视为嵌套 if 语句。例如,请参考以下代码:

int func(int x, int y)
{
	int flag = 0;
	if(x <= 0) {
		/* Call level 1*/
		flag = 1;
	} else
		if(x <= y) {
			/* Call level 2*/
			flag = 1;
		} else
			if(x == y) {
				/* Call level 3*/
				flag = 1;
			} else {
				flag = -1;
			}
	return flag;
}
在此示例中,func 的调用层数为 3。

int foo(int x,int y, int bound)
{
    int count = 0;
    if (x <= y)
        /* Call level 1*/
        count = 1;
    else
        while(x>y) {
            /* Call level 2*/
            x--;
            if(count< bound) {
                /* Call level 3*/
                count++;
            }
        }
    return count;
}

在此示例中,foo 的调用层数为 3。

度量信息

:函数
缩写LEVEL
HIS 度量:是

版本历史记录

全部展开