【发布时间】:2018-11-29 18:59:21
【问题描述】:
我想计算以下代码的圈复杂度。
int test(int a, int b)
{
int result = 0;
if (a == 0 && b == 0)
result = -1;
else
result = a * b;
return result;
}
Mathwork 的 Polyspace 工具计算的值为 2。 Eclipse 的 Visual Studio 和 Metrics 插件显示 3。哪个是正确的?
【问题讨论】:
-
答案是 2,像这样的例子可以在 wikipedia 中看到:“如果代码有一个单条件 IF 语句,那么将有两条路径通过代码:一个在IF 语句的计算结果为 TRUE,另一个计算结果为 FALSE,因此复杂度为 2"
-
我想知道如果不是填充变量
result,而是输入return -1和return a*b,eclipse 和Visual Studio 会报告什么 -
@AnderBiguri 当我使用
return -1和return a*b时,VS 和 Eclipse 都显示相同的值“3”。但是,如果我将第 4 行更改为if (a == 0),它们会显示“2”。 -
任何解释为什么 Visual Studio 和 Eclipse 报告“3”?
标签: java c# c visual-studio static-code-analysis