bugprone-infinite-loop¶
查找明显的无限循环(循环条件变量根本没有改变)。
查找无限循环是众所周知的不可能(停机问题)。但是,可以检测一些明显的无限循环,例如,如果循环条件没有改变。此检查检测此类循环。如果循环不包含任何循环退出语句(break
、continue
、goto
、return
、throw
或对作为 [[noreturn]]
调用的函数的调用)并且以下所有条件都对条件中的每个变量成立
它是一个局部变量。
它没有引用或指针别名。
它不是结构体或类成员。
此外,条件中不能包含对函数的调用以将循环视为无限循环,因为函数可能会对不同的调用返回不同的值。
例如,以下循环被认为是无限循环 i 在循环体中没有改变
int i = 0, j = 0;
while (i < 10) {
++j;
}