美文网首页
代码复杂度的size

代码复杂度的size

作者: 枫叶1234 | 来源:发表于2018-08-09 14:09 被阅读40次

一,HighCyclomaticComplexity(高圈复杂度)

圈复杂度由通过程序源代码的线性无关路径的数量决定。换句话说,方法的圈复杂度是通过决策点的数量来度量的,比如if、while和for语句,加上一个方法条目。
非常非常简单的说它就是统计一个函数有多少个分支(if, while,for,等等),没有的话复杂度为一,每增加一个分支复杂度加一。让很多人不解的是,无论这些分支是并列还是嵌套,统统都是加一。

void example(int a, int b, int c) // 1
{
    if (a == b)                   // 2
    {
        if (b == c)               // 3
        {
        }
        else if (a == c)          // 3
        {
        }
        else
        {
        }
    }
    for (int i = 0; i < c; i++)   // 4
    {
    }
    switch(c)
    {
        case 1:                   // 5
            break;
        case 2:                   // 6
            break;
        default:                  // 7
            break;
    }
}
CYCLOMATIC_COMPLEXITY

圈复杂度阀值, 默认 10.

二,HighNcssMethod(方法有效代码行太高)

简单解释:其实是指某个代码块中代码行数过多(只统计有效的语句),查看代码块中代码是否能拆分,公共功能能否提供一个公共接口。空语句,空块,右括号或分号后的右括号会被忽略。
有效代码行,系统只计算实际的有效语句。空语句,空块,右括号或分号后的右括号会被忽略。一个被分解成多行的语句只计算一行。

void example()          // 1
{
    if (1)              // 2
    {
    }
    else                // 3
    {
    }
}
NCSS_METHOD

有效行代码阀值, 默认 30.

三,嵌套块太深DeepNestedBlock

检查嵌套块是否超过指定的深度值.

if (1)
{               // 1
    {           // 2
        {       // 3
        }
    }
}
NESTED_BLOCK_DEPTH

深度阀值,默认值 5.

四,HighNPathComplexity(高Npath复杂性)

NPATH,通过一个函数计算非循环的执行路径,是一种客观的软件复杂度度量方式,辅助软件进行全面测试(Nejmeh,1988)。
计算非循环执行路径是说这个指标汇总了一个函数可以执行的所有方式
为了更好地理解NPATH如何计算一个JavaScript函数的复杂度指数,来看下面的例子。如前所述,NPATH使用不同的分值来计算各种控制流机制。为帮助理解,我在每个流程控制语句上以注释的形式加上了得分。

4a5e684a408d36f4b9cb7d5e126c3d56d75a147c.png

void example()
{
    // complicated code that is hard to understand
}
NPATH_COMPLEXITY

Npath复杂度阀值, 默认 200.

相关文章