我使用Visual Studio代码度量标准进行了一些测试。正如我可以计算出的圈复杂度一样,每个if
,while
,for
-运算符都用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;
}
还存在一个列表,其中包含所有详细描述的规则?
谢谢!
答案 0 :(得分:1)
循环复杂度可测量通过函数的路径数。如您所建议,这意味着在每个条件下为每个控制流语句添加1,再为每个逻辑NOT,AND和OR添加1。
5的值告诉您,为了获得100%的功能代码覆盖率,您将需要5个单元测试。