Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Parasoft Jtest 2021.1

...

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
bgColor#FFCCCC

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
bgColor#ccccff

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
bgColor#ccccff

public void nop() {
  while (true) {
    Thread.yield();
  }
}

Risk Assessment

Rule

Severity

Likelihood

Remediation Cost

Priority

Level

MSC01-J

low

Low

unlikely

Unlikely

medium

Medium

P2

L3

Related Guidelines

Bibliography

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="c35693db-ad36-4442-8e78-e553c121309a"><ac:plain-text-body><![CDATA[

[[API 2006

https://www.securecoding.cert.org/confluence/display/java/AA.+Java+References#AA.JavaReferences-API06]]

]]></ac:plain-text-body></ac:structured-macro>

Automated Detection

ToolVersionCheckerDescription
Parasoft Jtest
Include Page
Parasoft_V
Parasoft_V
CERT.MSC01.EBAvoid control statements with empty bodies
SonarQube3.10S2189

Bibliography


...

Image Added Image Added Image Removed      49. Miscellaneous (MSC)