计算C函数中所有可能执行路径的数目

计算C函数中所有可能执行路径的数目,c,metric,C,Metric,我正在拼命寻找一种方法来轻松计算C函数中所有可能执行路径的数量 例如,对于下面的函数,我希望得到3的结果(如果基于'I'得到的值有机会输入任何'if'语句) 使用逗号运算符作为 int test(void) { int ways = 0; if (++ways, i>0) x = x + 1; else if (++ways, i>10) x = x + 2; else { x = x + 3; ++ways;

我正在拼命寻找一种方法来轻松计算C函数中所有可能执行路径的数量

例如,对于下面的函数,我希望得到3的结果(如果基于'I'得到的值有机会输入任何'if'语句)


使用逗号运算符作为

int test(void)
{
   int ways = 0;
   if (++ways, i>0)
     x = x + 1;
   else if (++ways, i>10)
     x = x + 2;
   else
   {
     x = x + 3;
     ++ways;
   }
   return ways;
}

McCabes工具集可能正是您想要的。我看到您的方法的一个问题是,如果我们有嵌套的条件语句,它就不起作用。例如,如果我们在第一个if中放入另一个if语句,它将给出一个结果2,而不是正确的4。@limp;您需要在每个条件表达式中放入
++ways
int test(void)
{
   int ways = 0;
   if (++ways, i>0)
     x = x + 1;
   else if (++ways, i>10)
     x = x + 2;
   else
   {
     x = x + 3;
     ++ways;
   }
   return ways;
}