圈复杂度
函数体中线性无关路径的数量
描述
此度量计算函数中的决策点数量,并在总数上加 1。决策点是使程序分支到两条路径的语句。
此度量的建议上限为 10。如果圈复杂度太高,则代码将难以阅读并且可能会导致更多橙色检查。因此,请尝试限制此度量的值。
要对度量强制应用某些限制,请参阅使用 Polyspace 计算代码复杂度度量。
计算详细信息
此度量计算使用以下规则来标识决策点:
一个
if
语句是一个决策点。for
和while
语句视为一个决策点,即使没有条件评估(例如在无限循环中)也是如此。布尔合并
(&&, ||)
不被视为决策点。case
语句不被视为决策点,除非后跟break
语句。例如,以下代码的圈复杂度为 3:switch(num) { case 0: case 1: break; case 2: break; case 3: case 4: }
如果您指定
-consider-switch-as-single-decision
选项,Polyspace® 会将整个switch-case
语句视为一个决策点,因此前面代码的圈复杂度将变为 2。在以下预处理后进行计算:
展开宏。
应用条件编译。将忽略预处理指令隐藏的块。
示例
度量信息
组:函数 |
缩写:VG |
HIS 度量:是 |