misc-use-anonymous-namespace¶
Finds instances of static functions or variables declared at global scope
that could instead be moved into an anonymous namespace.
Anonymous namespaces are the “superior alternative” according to the C++
Standard. static was proposed for deprecation, but later un-deprecated to
keep C compatibility [1]. static is an overloaded term with different meanings in
different contexts, so it can create confusion.
The following uses of static will not be diagnosed:
- Functions or variables in header files, since anonymous namespaces in headers is considered an antipattern. Allowed header file extensions can be configured via the global option HeaderFileExtensions. 
- constor- constexprvariables, since they already have implicit internal linkage in C++.
Examples:
// Bad
static void foo();
static int x;
// Good
namespace {
  void foo();
  int x;
} // namespace