2012-05-10 64 views
0

我必须找到此代码的控制流图和圈复杂度,然后建议一些白盒测试用例和黑盒测试用例。但是我无法为代码制作CFG。控制流程图和圈复杂度

希望对测试用例有所帮助。

private void downShift(int index) 
{ 
    // index of "child", which will be either index * 2 or index * 2 + 1 
    int childIndex; 

    // temp storage for item at index where shifting begins 
    Comparable temp = theItems[index]; 

    // shift items, as needed 
    while (index * 2 <= theSize) 
    { 
     // set childIndex to "left" child 
     childIndex = index * 2; 

     // move to "right" child if "right" child < "left" child 
     if (childIndex != theSize && theItems[childIndex + 1].compareTo(theItems[childIndex]) < 0) 
      childIndex++; 

     if (theItems[childIndex].compareTo(temp) < 0) 
     { 
     // shift "child" down if child < temp 
      theItems[index] = theItems[childIndex]; 
     } 
     else 
     { 
      // shifting complete 
      break; 
     } 

     // increment index 
     index = childIndex; 
    } 

    // position item that was originally at index where shifting began 
    theItems[index] = temp; 
} 

回答

1

这里的基本圈复杂度为4:而如果+ + +是否1.如果您考虑扩展圈复杂度是由完成的理解或CMTJava,您还需要添加1合取,所以它会为5.无条件控制语句(如break)不会影响圈复杂度值。