You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 49 Next »

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:

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

Compliant Solution

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

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

Risk Assessment

Errors of omission can result in unintended program flow.

Recommendation

Severity

Likelihood

Remediation Cost

Priority

Level

EXP15-C

High

Likely

Low

P27

L1


Automated Detection

Tool

Version

Checker

Description

Astrée
24.04
empty-bodyFully checked
Axivion Bauhaus Suite

7.2.0

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

2024.1

C3109
Klocwork
2024.1

SEMICOL


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

2023.1

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

R2024a

CERT C: Rec. EXP15-CChecks for semicolon on same line as for, if or while statement (rule fully covered)
PRQA QA-C
Unable to render {include} The included page could not be found.
3109
PVS-Studio

7.30

V529, V715
SonarQube C/C++ Plugin
3.11
S1116
RuleChecker
24.04
empty-bodyFully checked

Related Guidelines

Bibliography

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



  • No labels