Skip to content

Commit 423f1d1

Browse files
authored
Unconditional while loops no raising IL_INFINITE_LOOP (#3537)
* test: reproducer for issue #3460 * fix: document that unconditional loops are assumed to be intentional
1 parent 9125bee commit 423f1d1

File tree

4 files changed

+29
-2
lines changed

4 files changed

+29
-2
lines changed
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package edu.umd.cs.findbugs.detect;
2+
3+
import edu.umd.cs.findbugs.AbstractIntegrationTest;
4+
import org.junit.jupiter.api.Test;
5+
6+
class Issue3460Test extends AbstractIntegrationTest {
7+
8+
@Test
9+
void testIssue() {
10+
performAnalysis("infiniteLoop/Issue3460.class");
11+
12+
// unconditional loops are assumed to be intentional
13+
assertBugTypeCount("IL_INFINITE_LOOP", 0);
14+
}
15+
}

spotbugs/etc/messages.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2259,7 +2259,7 @@ visible), they could trigger listener notification on the event dispatch thread.
22592259
<Details>
22602260
<![CDATA[
22612261
<p>This loop doesn't seem to have a way to terminate (other than by perhaps
2262-
throwing an exception).</p>
2262+
throwing an exception). Unconditional loops such as <code>while (true) {...}</code> are assumed to be intentional and are not reported as bugs.</p>
22632263
<p>See <a href="https://cwe.mitre.org/data/definitions/835.html">CWE-835: Loop with Unreachable Exit Condition ('Infinite Loop')</a>.
22642264
</p>
22652265
]]>

spotbugs/etc/messages_fr.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -956,7 +956,7 @@ Un accesseur spécial est généré dans ce cas par la compilateur pour écrire
956956
<LongDescription>Il y a apparemment une boucle infinie dans {1}</LongDescription>
957957
<Details>
958958
<![CDATA[
959-
<p>Cette boucle ne semble pas avoir un moyen de se terminer (autrement que, peut être, en déclenchant une exception).</p>
959+
<p>Cette boucle ne semble pas avoir un moyen de se terminer (autrement que, peut être, en déclenchant une exception). Les boucles sans condition comme <code>while (true) {...}</code> sont considerées comme intentionnelles et ne sont pas reportées comme des bugs</p>
960960
]]>
961961
</Details>
962962
</BugPattern>
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package infiniteLoop;
2+
3+
public class Issue3460 {
4+
5+
public void loop() {
6+
int counter = 0;
7+
while (true) {
8+
System.out.println("Counter: " + counter);
9+
counter++;
10+
}
11+
}
12+
}

0 commit comments

Comments
 (0)