bugprone-infinite-loop

查找明显的无限循环(循环条件变量根本没有改变)。

查找无限循环是众所周知的不可能(停机问题)。但是,可以检测一些明显的无限循环,例如,如果循环条件没有改变。此检查检测此类循环。如果循环不包含任何循环退出语句(breakcontinuegotoreturnthrow 或对作为 [[noreturn]] 调用的函数的调用)并且以下所有条件都对条件中的每个变量成立

此外,条件中不能包含对函数的调用以将循环视为无限循环,因为函数可能会对不同的调用返回不同的值。

例如,以下循环被认为是无限循环 i 在循环体中没有改变

int i = 0, j = 0;
while (i < 10) {
  ++j;
}