GitHub
CERT Secure Coding

EXP15-C. Do not place a semicolon on the same line as an if, for, or while statement

Do not use a semicolon on the same line as an if , for , or while statement because 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 an if statement:

Non-compliant code
if (a == b); {
  /* ... */
}

Compliant Solution

It is likely, in this example, that the semicolon was accidentally inserted:

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

Risk Assessment

Errors of omission can result in unintended program flow.

Recommendation Severity Likelihood Detectable Repairable Priority Level
EXP15-C High Likely Yes Yes P27 L1

Automated Detection

Tool

Version

Checker

Description

Astrée
25.10
empty-bodyFully checked
Axivion Bauhaus Suite

7.2.0

CertC-EXP15Fully implemented
CodeSonar
9.1p0
LANG.STRUCT.EBSEmpty branch statement
Helix QAC

2025.2

C3109
Klocwork
2025.2

SEMICOL


LDRA tool suite
9.7.1
11 S, 12 S, 428 SFully Implemented
Parasoft C/C++test

2025.2

CERT_C-EXP15-aSuspicious use of semicolon
PC-lint Plus

1.4

721, 722

Partially supported: reports missing body from if, for, or while with semi-colon immediately following predicate

Polyspace Bug Finder

R2025b

CERT C: Rec. EXP15-CChecks for semicolon on same line as for, if or while statement (rule fully covered)
PVS-Studio

7.42

V529 , V715
SonarQube C/C++ Plugin
3.11
S1116
RuleChecker
25.10
empty-bodyFully checked
SEI CERT Oracle Coding Standard for JavaMSC51-J. Do not place a semicolon immediately following an if, for, or while condition
ISO/IEC TR 24772:2013Likely Incorrect Expression [KOA]
MITRE CWECWE-480 , Use of incorrect operator

Bibliography

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