Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Defining an unnamed namespace within a header file can cause data integrity violations and performance problems but is unlikely to go unnoticed with sufficient testing. One-definition rule violations result in undefined behavior.

Rule

Severity

Likelihood

Remediation Cost

Priority

Level

DCL59-CPP

Medium

Unlikely

Medium

P4

L3

Automated Detection 

Tool

Version

Checker

Description

Astrée

Include Page
Astrée_V
Astrée_V

unnamed-namespace-header
Fully checked
Axivion Bauhaus Suite

Include Page
Axivion Bauhaus Suite_V
Axivion Bauhaus Suite_V

CertC++-DCL59
Clang
Include Page
Clang_V
Clang_V
cert-dcl59-cpp
Checked by clang-tidy
CodeSonar
Include Page
CodeSonar_V
CodeSonar_V

LANG.STRUCT.DECL.ANH

Anonymous Namespace in Header File

Helix QAC

Include Page
Helix QAC_V
Helix QAC_V

C++2518
Klocwork
Include Page
Klocwork_V
Klocwork_V

MISRA.NAMESPACE.UNMD


LDRA tool suite
Include Page
LDRA_V
LDRA_V

286 S, 512 S

Fully implemented

Parasoft C/C++test
9.5CODSTA-74 
Include Page
Parasoft_V
Parasoft_V
CERT_CPP-DCL59-a

There shall be no unnamed namespaces in header files

Polyspace Bug Finder

Include Page
Polyspace Bug Finder_V
Polyspace Bug Finder_V

CERT C++: DCL59-CPPChecks for unnamed namespaces in header files (rule fully covered)
RuleChecker
Include Page
RuleChecker_V
RuleChecker_V
unnamed-namespace-header
Fully checked
SonarQube C/C++ Plugin
Include Page
SonarQube C/C++ Plugin_V
SonarQube C/C++ Plugin_V
UnnamedNamespaceInHeader
 PRQA QA-C++

PVS-Studio

Include Page

PRQA QA-C++

PVS-Studio_V

PRQA QA-C++

PVS-Studio_V

2518

  PRQA QA-C 9.1 2518 
V1068

Related Vulnerabilities

Search for vulnerabilities resulting from the violation of this rule on the CERT website.

Related Guidelines

Bibliography

[ISO/IEC 14882-2014]

Subclause 3.2, "One Definition Rule"
Subclause 7.1.2, "Function Specifiers"
Subclause 7.3.1, "Namespace Definition"

...


...