...
This noncompliant code example implements an idle task that continuously executes a loop without executing any instructions within the loop. An optimizing compiler or JIT could remove the while
loop in this example.
Code Block | ||
---|---|---|
| ||
public int nop() {
while (true) {}
}
|
...
This compliant solution avoids use of a meaningless infinite loop by invoking Thread.sleep()
within the while
loop. The loop body contains semantically meaningful operations and consequently cannot be optimized away.
Code Block | ||
---|---|---|
| ||
public final int DURATION=10000; // inIn milliseconds public void nop() throws InterruptedException { while (true) { // Useful operations Thread.sleep(DURATION); } } |
...
This compliant solution invokes Thread.yield()
, which causes the thread running this method to consistently defer to other threads.:
Code Block | ||
---|---|---|
| ||
public void nop() {
while (true) {
Thread.yield();
}
}
|
Risk Assessment
Rule | Severity | Likelihood | Remediation Cost | Priority | Level |
---|---|---|---|---|---|
MSC01-J |
Low |
Unlikely |
Medium | P2 | L3 |
Related Guidelines
Automated Detection
Tool | Version | Checker | Description | ||||||
---|---|---|---|---|---|---|---|---|---|
Parasoft Jtest |
| CERT.MSC01.EB | Avoid control statements with empty bodies | ||||||
SonarQube | 3.10 | S2189 |
Bibliography
...