GitHub
CERT Secure Coding

MSC51-J. Do not place a semicolon immediately following an if, for, or while condition

Do not use a semicolon after an if , for , or while condition because it typically indicates programmer error and can result in unexpected behavior.

Noncompliant Code Example

In this noncompliant code example, a semicolon is used immediately following an if condition:

Non-compliant code
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

This compliant solution eliminates the semicolon and ensures that the body of the if statement is executed only when the condition expression is true:

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

Applicability

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

Automated Detection

ToolVersionCheckerDescription
Parasoft Jtest
2025.2
CERT.MSC51.NSIFDo not place a semicolon immediately after an if, for, or while condition
PVS-Studio

7.42

V6063
Security Reviewer - Static Reviewer

6.02

CWE570P1Full Implementation
SonarQube
9.9
EmptyStatementUsageCheck

Bibliography

[ Hatton 1995 ]§2.7.2, "Errors of Omission and Addition"