Visual Studio中的圈复杂度

时间:2018-10-03 12:00:17

标签: c# visual-studio code-metrics cyclomatic-complexity

我使用Visual Studio代码度量标准进行了一些测试。正如我可以计算出的圈复杂度一样,每个ifwhilefor-运算符都用1来增加复杂度。我有下一个简单的方法:

static bool ContainsNegative(int a, int b, int c, int d)
    {
        if (a < 0 || b < 0 || c < 0 || d < 0) return false;
        return true;
    }

但是,其复杂度为5,而不是2(方法1为{+1)if)。 我的问题是-这是因为代码指标将if运算符中的每个条件计算为不同的if?即我的方法等效于:

static bool ContainsNegative(int a, int b, int c, int d)
    {
        if (a < 0) return false;
        if (b < 0) return false;
        if (c < 0) return false;
        if (d < 0) return false;
        return true;
    }

以下是显示结果的屏幕: Cyclomatic Complexity in Visual Studio

还存在一个列表,其中包含所有详细描述的规则?

谢谢!

1 个答案:

答案 0 :(得分:1)

循环复杂度可测量通过函数的路径数。如您所建议,这意味着在每个条件下为每个控制流语句添加1,再为每个逻辑NOT,AND和OR添加1。

5的值告诉您,为了获得100%的功能代码覆盖率,您将需要5个单元测试。