Versions Compared

Key

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

Do not use a semicolon on the same line as after an if, for, or while statement condition because this it typically indicates programmer error and can result in unexpected behavior.

Noncompliant Code Example

In this noncompliant code example, a semicolon is used on the same line as immediately following an if statement. condition:

Code Block
bgColor#FFcccc

if (a == b); {
  /* ... */
}

The statements in the apparent body of the if statement are always evaluated regardless of the result of the condition expression.

Compliant Solution

It is likely, in this example, that the semicolon was accidentally inserted.This compliant solution eliminates the semicolon and ensures that the body of the if statement is executed only when the condition expression is true:

Code Block
bgColor#ccccff

if (a == b) {
  /* ... */
}

Related Guidelines

Applicability

Placing a semicolon immediately following an if, for, or while condition may result in unexpected behavior.

Automated Detection

CERT C Secure Coding Standard

EXP15-C.
ToolVersionCheckerDescription
Parasoft Jtest
Include Page
Parasoft_V
Parasoft_V
CERT.MSC51.NSIF
Do not place a semicolon
on the same line as
immediately after an if, for, or while
statement
condition

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="98dd8373-b9ef-47a0-a9c9-21eda01a05f3"><ac:plain-text-body><![CDATA[

[ISO/IEC TR 24772:2010

http://www.aitcnet.org/isai/]

"Likely Incorrect Expression [java:KOA]"

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

Bibliography

PVS-Studio

Include Page
PVS-Studio_V
PVS-Studio_V

V6063
SonarQube
Include Page
SonarQube_V
SonarQube_V
EmptyStatementUsageCheck


Bibliography

[Hatton 1995]

§2

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="664c59a3-19c1-449e-aa89-39fcc1a5ba58"><ac:plain-text-body><![CDATA[

[java:Hatton 1995]

Section 2

.7.2, "Errors of

omission

Omission and

addition"

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

Addition"


...

Image Added Image Added Image AddedImage Removed      49. Miscellaneous (MSC)      MSC07-J. Do not assume infinite heap space