 
                            ...
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 | Detectable | RepairableRemediation Cost | Priority | Level | 
|---|---|---|---|---|---|---|
| DCL59-CPP | Medium | Unlikely | Yes | MediumNo | P4 | L3 | 
Automated Detection
| Tool | Version | Checker | Description | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Astrée | 
 | unnamed-namespace-header | Fully checked | ||||||||||||
| Axivion Bauhaus Suite | 
 | CertC++-DCL59 | |||||||||||||
| Clang | 
 | cert-dcl59-cpp | Checked by clang-tidy | ||||||||||||
| CodeSonar | 
 | LANG.STRUCT.DECL.ANH | Anonymous Namespace in Header File | ||||||||||||
| Helix QAC | 
 | C++2518 | |||||||||||||
| Klocwork | 
 | MISRA.NAMESPACE.UNMD | |||||||||||||
| LDRA tool suite | 
 | 286 S, 512 S | Fully implemented | ||||||||||||
| Parasoft C/C++test | 
 | CERT_CPP-DCL59-a | There shall be no unnamed namespaces in header files | ||||||||||||
| Polyspace Bug Finder | 
 | CERT C++: DCL59-CPP | Checks for unnamed namespaces in header files (rule fully covered) | ||||||||||||
| RuleChecker | 
 | unnamed-namespace-header | Fully checked | ||||||||||||
| SonarQube C/C++ Plugin | 
 | UnnamedNamespaceInHeaderPRQA QA-C++ | |||||||||||||
| PVS-Studio | PRQA QA-C++
 | PRQA QA-C++
 | 
 | 2518 | PRQA QA-C | 9.1 | 2518V1068 | 
Related Vulnerabilities
Search for vulnerabilities resulting from the violation of this rule on the CERT website.
...
Bibliography
| [ISO/IEC 14882-2014] | Subclause 3.2, "One Definition Rule" | 
...