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:


// Bad
static void foo();
static int x;

// Good
namespace {
  void foo();
  int x;
} // namespace



Note: this option is deprecated, it will be removed in clang-tidy version 19. Please use the global configuration option HeaderFileExtensions.

A semicolon-separated list of filename extensions of header files (the filename extensions should not include “.” prefix). Default is “;h;hh;hpp;hxx”. For extension-less header files, using an empty string or leaving an empty string between “;” if there are other filename extensions.

[1] Undeprecating static