[clang-tools-extra] [clang-tidy] Remove check-specific HeaderFileExtensions and Implement… (PR #80333)
Carlos Galvez via cfe-commits
cfe-commits at lists.llvm.org
Thu Feb 1 12:12:00 PST 2024
https://github.com/carlosgalvezp created https://github.com/llvm/llvm-project/pull/80333
…ationFileExtensions
Deprecated since clang-tidy 17. Use the corresponding global options instead.
Fixes #61947
>From fbb0837342a566ff928b211cbb418075a7e744fe Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Carlos=20G=C3=A1lvez?= <carlos.galvez at zenseact.com>
Date: Thu, 1 Feb 2024 20:00:45 +0000
Subject: [PATCH] [clang-tidy] Remove check-specific HeaderFileExtensions and
ImplementationFileExtensions
Deprecated since clang-tidy 17. Use the corresponding global options
instead.
Fixes #61947
---
.../DynamicStaticInitializersCheck.cpp | 22 +----------
.../bugprone/DynamicStaticInitializersCheck.h | 10 -----
.../bugprone/SuspiciousIncludeCheck.cpp | 38 ++----------------
.../bugprone/SuspiciousIncludeCheck.h | 15 -------
.../google/GlobalNamesInHeadersCheck.cpp | 22 +----------
.../google/GlobalNamesInHeadersCheck.h | 10 -----
.../google/UnnamedNamespaceInHeaderCheck.cpp | 22 +----------
.../google/UnnamedNamespaceInHeaderCheck.h | 10 -----
.../misc/DefinitionsInHeadersCheck.cpp | 39 +++----------------
.../misc/DefinitionsInHeadersCheck.h | 9 -----
.../clang-tidy/misc/UnusedUsingDeclsCheck.cpp | 17 +-------
.../misc/UseAnonymousNamespaceCheck.cpp | 22 +----------
.../misc/UseAnonymousNamespaceCheck.h | 10 -----
.../clang-tidy/utils/HeaderGuard.cpp | 4 --
.../clang-tidy/utils/HeaderGuard.h | 27 ++-----------
clang-tools-extra/docs/ReleaseNotes.rst | 31 +++++++++++++++
.../checks/bugprone/suspicious-include.rst | 24 ------------
.../checks/google/build-namespaces.rst | 15 -------
.../checks/google/global-names-in-headers.rst | 15 -------
.../clang-tidy/checks/llvm/header-guard.rst | 15 -------
.../checks/misc/definitions-in-headers.rst | 24 ------------
.../checks/misc/unused-using-decls.rst | 16 +-------
.../checks/misc/use-anonymous-namespace.rst | 16 +-------
23 files changed, 54 insertions(+), 379 deletions(-)
diff --git a/clang-tools-extra/clang-tidy/bugprone/DynamicStaticInitializersCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/DynamicStaticInitializersCheck.cpp
index 4a467120181b4..93f35cb2c1a3d 100644
--- a/clang-tools-extra/clang-tidy/bugprone/DynamicStaticInitializersCheck.cpp
+++ b/clang-tools-extra/clang-tidy/bugprone/DynamicStaticInitializersCheck.cpp
@@ -27,26 +27,8 @@ AST_MATCHER(clang::VarDecl, hasConstantDeclaration) {
DynamicStaticInitializersCheck::DynamicStaticInitializersCheck(
StringRef Name, ClangTidyContext *Context)
- : ClangTidyCheck(Name, Context) {
- std::optional<StringRef> HeaderFileExtensionsOption =
- Options.get("HeaderFileExtensions");
- RawStringHeaderFileExtensions =
- HeaderFileExtensionsOption.value_or(utils::defaultHeaderFileExtensions());
- if (HeaderFileExtensionsOption) {
- if (!utils::parseFileExtensions(RawStringHeaderFileExtensions,
- HeaderFileExtensions,
- utils::defaultFileExtensionDelimiters())) {
- this->configurationDiag("Invalid header file extension: '%0'")
- << RawStringHeaderFileExtensions;
- }
- } else
- HeaderFileExtensions = Context->getHeaderFileExtensions();
-}
-
-void DynamicStaticInitializersCheck::storeOptions(
- ClangTidyOptions::OptionMap &Opts) {
- Options.store(Opts, "HeaderFileExtensions", RawStringHeaderFileExtensions);
-}
+ : ClangTidyCheck(Name, Context),
+ HeaderFileExtensions(Context->getHeaderFileExtensions()) {}
void DynamicStaticInitializersCheck::registerMatchers(MatchFinder *Finder) {
Finder->addMatcher(
diff --git a/clang-tools-extra/clang-tidy/bugprone/DynamicStaticInitializersCheck.h b/clang-tools-extra/clang-tidy/bugprone/DynamicStaticInitializersCheck.h
index d8ac31dc3b850..66ed2828502b6 100644
--- a/clang-tools-extra/clang-tidy/bugprone/DynamicStaticInitializersCheck.h
+++ b/clang-tools-extra/clang-tidy/bugprone/DynamicStaticInitializersCheck.h
@@ -15,26 +15,16 @@
namespace clang::tidy::bugprone {
/// Finds dynamically initialized static variables in header files.
-///
-/// The check supports these options:
-/// - `HeaderFileExtensions`: a semicolon-separated list of filename
-/// extensions of header files (The filename extensions should not contain
-/// "." prefix). ";h;hh;hpp;hxx" by default.
-//
-/// For extension-less header files, using an empty string or leaving an
-/// empty string between ";" if there are other filename extensions.
class DynamicStaticInitializersCheck : public ClangTidyCheck {
public:
DynamicStaticInitializersCheck(StringRef Name, ClangTidyContext *Context);
bool isLanguageVersionSupported(const LangOptions &LangOpts) const override {
return LangOpts.CPlusPlus && !LangOpts.ThreadsafeStatics;
}
- void storeOptions(ClangTidyOptions::OptionMap &Opts) override;
void registerMatchers(ast_matchers::MatchFinder *Finder) override;
void check(const ast_matchers::MatchFinder::MatchResult &Result) override;
private:
- StringRef RawStringHeaderFileExtensions;
FileExtensionsSet HeaderFileExtensions;
};
diff --git a/clang-tools-extra/clang-tidy/bugprone/SuspiciousIncludeCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/SuspiciousIncludeCheck.cpp
index 43d53f0b6020a..61d89cf308130 100644
--- a/clang-tools-extra/clang-tidy/bugprone/SuspiciousIncludeCheck.cpp
+++ b/clang-tools-extra/clang-tidy/bugprone/SuspiciousIncludeCheck.cpp
@@ -37,41 +37,9 @@ class SuspiciousIncludePPCallbacks : public PPCallbacks {
SuspiciousIncludeCheck::SuspiciousIncludeCheck(StringRef Name,
ClangTidyContext *Context)
- : ClangTidyCheck(Name, Context) {
- std::optional<StringRef> ImplementationFileExtensionsOption =
- Options.get("ImplementationFileExtensions");
- RawStringImplementationFileExtensions =
- ImplementationFileExtensionsOption.value_or(
- utils::defaultImplementationFileExtensions());
- if (ImplementationFileExtensionsOption) {
- if (!utils::parseFileExtensions(RawStringImplementationFileExtensions,
- ImplementationFileExtensions,
- utils::defaultFileExtensionDelimiters())) {
- this->configurationDiag("Invalid implementation file extension: '%0'")
- << RawStringImplementationFileExtensions;
- }
- } else
- ImplementationFileExtensions = Context->getImplementationFileExtensions();
-
- std::optional<StringRef> HeaderFileExtensionsOption =
- Options.get("HeaderFileExtensions");
- RawStringHeaderFileExtensions =
- HeaderFileExtensionsOption.value_or(utils::defaultHeaderFileExtensions());
- if (HeaderFileExtensionsOption) {
- if (!utils::parseFileExtensions(RawStringHeaderFileExtensions,
- HeaderFileExtensions,
- utils::defaultFileExtensionDelimiters())) {
- this->configurationDiag("Invalid header file extension: '%0'")
- << RawStringHeaderFileExtensions;
- }
- } else
- HeaderFileExtensions = Context->getHeaderFileExtensions();
-}
-
-void SuspiciousIncludeCheck::storeOptions(ClangTidyOptions::OptionMap &Opts) {
- Options.store(Opts, "ImplementationFileExtensions",
- RawStringImplementationFileExtensions);
- Options.store(Opts, "HeaderFileExtensions", RawStringHeaderFileExtensions);
+ : ClangTidyCheck(Name, Context),
+ HeaderFileExtensions(Context->getHeaderFileExtensions()),
+ ImplementationFileExtensions(Context->getImplementationFileExtensions()) {
}
void SuspiciousIncludeCheck::registerPPCallbacks(
diff --git a/clang-tools-extra/clang-tidy/bugprone/SuspiciousIncludeCheck.h b/clang-tools-extra/clang-tidy/bugprone/SuspiciousIncludeCheck.h
index 0cc1639678a28..1167b5a4593f7 100644
--- a/clang-tools-extra/clang-tidy/bugprone/SuspiciousIncludeCheck.h
+++ b/clang-tools-extra/clang-tidy/bugprone/SuspiciousIncludeCheck.h
@@ -21,16 +21,6 @@ namespace clang::tidy::bugprone {
/// #include "bar.c" // warning
/// #include "baz.h" // no diagnostic
///
-/// The check supports these options:
-/// - `HeaderFileExtensions`: a semicolon-separated list of filename
-/// extensions of header files (The filename extensions should not contain
-/// "." prefix) ";h;hh;hpp;hxx" by default. For extension-less header
-/// files, using an empty string or leaving an empty string between ";" if
-/// there are other filename extensions.
-///
-/// - `ImplementationFileExtensions`: likewise, a semicolon-separated list of
-/// filename extensions of implementation files. "c;cc;cpp;cxx" by default.
-///
/// For the user-facing documentation see:
/// http://clang.llvm.org/extra/clang-tidy/checks/bugprone/suspicious-include.html
class SuspiciousIncludeCheck : public ClangTidyCheck {
@@ -38,14 +28,9 @@ class SuspiciousIncludeCheck : public ClangTidyCheck {
SuspiciousIncludeCheck(StringRef Name, ClangTidyContext *Context);
void registerPPCallbacks(const SourceManager &SM, Preprocessor *PP,
Preprocessor *ModuleExpanderPP) override;
- void storeOptions(ClangTidyOptions::OptionMap &Opts) override;
FileExtensionsSet HeaderFileExtensions;
FileExtensionsSet ImplementationFileExtensions;
-
-private:
- StringRef RawStringHeaderFileExtensions;
- StringRef RawStringImplementationFileExtensions;
};
} // namespace clang::tidy::bugprone
diff --git a/clang-tools-extra/clang-tidy/google/GlobalNamesInHeadersCheck.cpp b/clang-tools-extra/clang-tidy/google/GlobalNamesInHeadersCheck.cpp
index 59031b4e1eec5..d40b4c1a1c3f7 100644
--- a/clang-tools-extra/clang-tidy/google/GlobalNamesInHeadersCheck.cpp
+++ b/clang-tools-extra/clang-tidy/google/GlobalNamesInHeadersCheck.cpp
@@ -18,26 +18,8 @@ namespace clang::tidy::google::readability {
GlobalNamesInHeadersCheck::GlobalNamesInHeadersCheck(StringRef Name,
ClangTidyContext *Context)
- : ClangTidyCheck(Name, Context) {
- std::optional<StringRef> HeaderFileExtensionsOption =
- Options.get("HeaderFileExtensions");
- RawStringHeaderFileExtensions =
- HeaderFileExtensionsOption.value_or(utils::defaultHeaderFileExtensions());
- if (HeaderFileExtensionsOption) {
- if (!utils::parseFileExtensions(RawStringHeaderFileExtensions,
- HeaderFileExtensions,
- utils::defaultFileExtensionDelimiters())) {
- this->configurationDiag("Invalid header file extension: '%0'")
- << RawStringHeaderFileExtensions;
- }
- } else
- HeaderFileExtensions = Context->getHeaderFileExtensions();
-}
-
-void GlobalNamesInHeadersCheck::storeOptions(
- ClangTidyOptions::OptionMap &Opts) {
- Options.store(Opts, "HeaderFileExtensions", RawStringHeaderFileExtensions);
-}
+ : ClangTidyCheck(Name, Context),
+ HeaderFileExtensions(Context->getHeaderFileExtensions()) {}
void GlobalNamesInHeadersCheck::registerMatchers(
ast_matchers::MatchFinder *Finder) {
diff --git a/clang-tools-extra/clang-tidy/google/GlobalNamesInHeadersCheck.h b/clang-tools-extra/clang-tidy/google/GlobalNamesInHeadersCheck.h
index 625a1918fef16..70a0a4c0cda00 100644
--- a/clang-tools-extra/clang-tidy/google/GlobalNamesInHeadersCheck.h
+++ b/clang-tools-extra/clang-tidy/google/GlobalNamesInHeadersCheck.h
@@ -17,25 +17,15 @@ namespace clang::tidy::google::readability {
/// Flag global namespace pollution in header files.
/// Right now it only triggers on using declarations and directives.
///
-/// The check supports these options:
-/// - `HeaderFileExtensions`: a semicolon-separated list of filename
-/// extensions of header files (the filename extensions should not contain
-/// "." prefix). ";h;hh;hpp;hxx" by default.
-///
-/// For extension-less header files, using an empty string or leaving an
-/// empty string between ";" if there are other filename extensions.
-///
/// For the user-facing documentation see:
/// http://clang.llvm.org/extra/clang-tidy/checks/google/global-names-in-headers.html
class GlobalNamesInHeadersCheck : public ClangTidyCheck {
public:
GlobalNamesInHeadersCheck(StringRef Name, ClangTidyContext *Context);
- void storeOptions(ClangTidyOptions::OptionMap &Opts) override;
void registerMatchers(ast_matchers::MatchFinder *Finder) override;
void check(const ast_matchers::MatchFinder::MatchResult &Result) override;
private:
- StringRef RawStringHeaderFileExtensions;
FileExtensionsSet HeaderFileExtensions;
};
diff --git a/clang-tools-extra/clang-tidy/google/UnnamedNamespaceInHeaderCheck.cpp b/clang-tools-extra/clang-tidy/google/UnnamedNamespaceInHeaderCheck.cpp
index 59766a1a3fd48..34ddd7623bf5e 100644
--- a/clang-tools-extra/clang-tidy/google/UnnamedNamespaceInHeaderCheck.cpp
+++ b/clang-tools-extra/clang-tidy/google/UnnamedNamespaceInHeaderCheck.cpp
@@ -17,26 +17,8 @@ namespace clang::tidy::google::build {
UnnamedNamespaceInHeaderCheck::UnnamedNamespaceInHeaderCheck(
StringRef Name, ClangTidyContext *Context)
- : ClangTidyCheck(Name, Context) {
- std::optional<StringRef> HeaderFileExtensionsOption =
- Options.get("HeaderFileExtensions");
- RawStringHeaderFileExtensions =
- HeaderFileExtensionsOption.value_or(utils::defaultHeaderFileExtensions());
- if (HeaderFileExtensionsOption) {
- if (!utils::parseFileExtensions(RawStringHeaderFileExtensions,
- HeaderFileExtensions,
- utils::defaultFileExtensionDelimiters())) {
- this->configurationDiag("Invalid header file extension: '%0'")
- << RawStringHeaderFileExtensions;
- }
- } else
- HeaderFileExtensions = Context->getHeaderFileExtensions();
-}
-
-void UnnamedNamespaceInHeaderCheck::storeOptions(
- ClangTidyOptions::OptionMap &Opts) {
- Options.store(Opts, "HeaderFileExtensions", RawStringHeaderFileExtensions);
-}
+ : ClangTidyCheck(Name, Context),
+ HeaderFileExtensions(Context->getHeaderFileExtensions()) {}
void UnnamedNamespaceInHeaderCheck::registerMatchers(
ast_matchers::MatchFinder *Finder) {
diff --git a/clang-tools-extra/clang-tidy/google/UnnamedNamespaceInHeaderCheck.h b/clang-tools-extra/clang-tidy/google/UnnamedNamespaceInHeaderCheck.h
index 8a16e750385fd..55b735c0d141b 100644
--- a/clang-tools-extra/clang-tidy/google/UnnamedNamespaceInHeaderCheck.h
+++ b/clang-tools-extra/clang-tidy/google/UnnamedNamespaceInHeaderCheck.h
@@ -16,14 +16,6 @@ namespace clang::tidy::google::build {
/// Finds anonymous namespaces in headers.
///
-/// The check supports these options:
-/// - `HeaderFileExtensions`: a semicolon-separated list of filename
-/// extensions of header files (The filename extensions should not contain
-/// "." prefix). ";h;hh;hpp;hxx" by default.
-///
-/// For extension-less header files, using an empty string or leaving an
-/// empty string between ";" if there are other filename extensions.
-///
/// https://google.github.io/styleguide/cppguide.html#Namespaces
///
/// Corresponding cpplint.py check name: 'build/namespaces'.
@@ -36,12 +28,10 @@ class UnnamedNamespaceInHeaderCheck : public ClangTidyCheck {
bool isLanguageVersionSupported(const LangOptions &LangOpts) const override {
return LangOpts.CPlusPlus;
}
- void storeOptions(ClangTidyOptions::OptionMap &Opts) override;
void registerMatchers(ast_matchers::MatchFinder *Finder) override;
void check(const ast_matchers::MatchFinder::MatchResult &Result) override;
private:
- StringRef RawStringHeaderFileExtensions;
FileExtensionsSet HeaderFileExtensions;
};
diff --git a/clang-tools-extra/clang-tidy/misc/DefinitionsInHeadersCheck.cpp b/clang-tools-extra/clang-tidy/misc/DefinitionsInHeadersCheck.cpp
index 2c07b30429f96..21008bc144b91 100644
--- a/clang-tools-extra/clang-tidy/misc/DefinitionsInHeadersCheck.cpp
+++ b/clang-tools-extra/clang-tidy/misc/DefinitionsInHeadersCheck.cpp
@@ -28,45 +28,16 @@ AST_MATCHER_P(NamedDecl, usesHeaderFileExtension, FileExtensionsSet,
DefinitionsInHeadersCheck::DefinitionsInHeadersCheck(StringRef Name,
ClangTidyContext *Context)
: ClangTidyCheck(Name, Context),
- UseHeaderFileExtension(Options.get("UseHeaderFileExtension", true)) {
- std::optional<StringRef> HeaderFileExtensionsOption =
- Options.get("HeaderFileExtensions");
- RawStringHeaderFileExtensions =
- HeaderFileExtensionsOption.value_or(utils::defaultHeaderFileExtensions());
- if (HeaderFileExtensionsOption) {
- if (!utils::parseFileExtensions(RawStringHeaderFileExtensions,
- HeaderFileExtensions,
- utils::defaultFileExtensionDelimiters())) {
- this->configurationDiag("Invalid header file extension: '%0'")
- << RawStringHeaderFileExtensions;
- }
- } else
- HeaderFileExtensions = Context->getHeaderFileExtensions();
-}
-
-void DefinitionsInHeadersCheck::storeOptions(
- ClangTidyOptions::OptionMap &Opts) {
- Options.store(Opts, "UseHeaderFileExtension", UseHeaderFileExtension);
- Options.store(Opts, "HeaderFileExtensions", RawStringHeaderFileExtensions);
-}
+ HeaderFileExtensions(Context->getHeaderFileExtensions()) {}
void DefinitionsInHeadersCheck::registerMatchers(MatchFinder *Finder) {
auto DefinitionMatcher =
anyOf(functionDecl(isDefinition(), unless(isDeleted())),
varDecl(isDefinition()));
- if (UseHeaderFileExtension) {
- Finder->addMatcher(namedDecl(DefinitionMatcher,
- usesHeaderFileExtension(HeaderFileExtensions))
- .bind("name-decl"),
- this);
- } else {
- Finder->addMatcher(
- namedDecl(DefinitionMatcher,
- anyOf(usesHeaderFileExtension(HeaderFileExtensions),
- unless(isExpansionInMainFile())))
- .bind("name-decl"),
- this);
- }
+ Finder->addMatcher(namedDecl(DefinitionMatcher,
+ usesHeaderFileExtension(HeaderFileExtensions))
+ .bind("name-decl"),
+ this);
}
void DefinitionsInHeadersCheck::check(const MatchFinder::MatchResult &Result) {
diff --git a/clang-tools-extra/clang-tidy/misc/DefinitionsInHeadersCheck.h b/clang-tools-extra/clang-tidy/misc/DefinitionsInHeadersCheck.h
index e0095494d339b..ebb55d5c0e55b 100644
--- a/clang-tools-extra/clang-tidy/misc/DefinitionsInHeadersCheck.h
+++ b/clang-tools-extra/clang-tidy/misc/DefinitionsInHeadersCheck.h
@@ -20,12 +20,6 @@ namespace clang::tidy::misc {
/// The check supports these options:
/// - `UseHeaderFileExtension`: Whether to use file extension to distinguish
/// header files. True by default.
-/// - `HeaderFileExtensions`: a semicolon-separated list of filename
-/// extensions of header files (The filename extension should not contain
-/// "." prefix). ";h;hh;hpp;hxx" by default.
-///
-/// For extension-less header files, using an empty string or leaving an
-/// empty string between ";" if there are other filename extensions.
///
/// For the user-facing documentation see:
/// http://clang.llvm.org/extra/clang-tidy/checks/misc/definitions-in-headers.html
@@ -35,13 +29,10 @@ class DefinitionsInHeadersCheck : public ClangTidyCheck {
bool isLanguageVersionSupported(const LangOptions &LangOpts) const override {
return LangOpts.CPlusPlus11;
}
- void storeOptions(ClangTidyOptions::OptionMap &Opts) override;
void registerMatchers(ast_matchers::MatchFinder *Finder) override;
void check(const ast_matchers::MatchFinder::MatchResult &Result) override;
private:
- const bool UseHeaderFileExtension;
- StringRef RawStringHeaderFileExtensions;
FileExtensionsSet HeaderFileExtensions;
};
diff --git a/clang-tools-extra/clang-tidy/misc/UnusedUsingDeclsCheck.cpp b/clang-tools-extra/clang-tidy/misc/UnusedUsingDeclsCheck.cpp
index 59e487bab3119..90b317527ee41 100644
--- a/clang-tools-extra/clang-tidy/misc/UnusedUsingDeclsCheck.cpp
+++ b/clang-tools-extra/clang-tidy/misc/UnusedUsingDeclsCheck.cpp
@@ -39,21 +39,8 @@ static bool shouldCheckDecl(const Decl *TargetDecl) {
UnusedUsingDeclsCheck::UnusedUsingDeclsCheck(StringRef Name,
ClangTidyContext *Context)
- : ClangTidyCheck(Name, Context) {
- std::optional<StringRef> HeaderFileExtensionsOption =
- Options.get("HeaderFileExtensions");
- RawStringHeaderFileExtensions =
- HeaderFileExtensionsOption.value_or(utils::defaultHeaderFileExtensions());
- if (HeaderFileExtensionsOption) {
- if (!utils::parseFileExtensions(RawStringHeaderFileExtensions,
- HeaderFileExtensions,
- utils::defaultFileExtensionDelimiters())) {
- this->configurationDiag("Invalid header file extension: '%0'")
- << RawStringHeaderFileExtensions;
- }
- } else
- HeaderFileExtensions = Context->getHeaderFileExtensions();
-}
+ : ClangTidyCheck(Name, Context),
+ HeaderFileExtensions(Context->getHeaderFileExtensions()) {}
void UnusedUsingDeclsCheck::registerMatchers(MatchFinder *Finder) {
Finder->addMatcher(usingDecl(isExpansionInMainFile()).bind("using"), this);
diff --git a/clang-tools-extra/clang-tidy/misc/UseAnonymousNamespaceCheck.cpp b/clang-tools-extra/clang-tidy/misc/UseAnonymousNamespaceCheck.cpp
index a6337f5bab834..05b470141f1f7 100644
--- a/clang-tools-extra/clang-tidy/misc/UseAnonymousNamespaceCheck.cpp
+++ b/clang-tools-extra/clang-tidy/misc/UseAnonymousNamespaceCheck.cpp
@@ -31,26 +31,8 @@ AST_MATCHER(VarDecl, isStaticDataMember) { return Node.isStaticDataMember(); }
UseAnonymousNamespaceCheck::UseAnonymousNamespaceCheck(
StringRef Name, ClangTidyContext *Context)
- : ClangTidyCheck(Name, Context) {
- std::optional<StringRef> HeaderFileExtensionsOption =
- Options.get("HeaderFileExtensions");
- RawStringHeaderFileExtensions =
- HeaderFileExtensionsOption.value_or(utils::defaultHeaderFileExtensions());
- if (HeaderFileExtensionsOption) {
- if (!utils::parseFileExtensions(RawStringHeaderFileExtensions,
- HeaderFileExtensions,
- utils::defaultFileExtensionDelimiters())) {
- this->configurationDiag("Invalid header file extension: '%0'")
- << RawStringHeaderFileExtensions;
- }
- } else
- HeaderFileExtensions = Context->getHeaderFileExtensions();
-}
-
-void UseAnonymousNamespaceCheck::storeOptions(
- ClangTidyOptions::OptionMap &Opts) {
- Options.store(Opts, "HeaderFileExtensions", RawStringHeaderFileExtensions);
-}
+ : ClangTidyCheck(Name, Context),
+ HeaderFileExtensions(Context->getHeaderFileExtensions()) {}
void UseAnonymousNamespaceCheck::registerMatchers(MatchFinder *Finder) {
Finder->addMatcher(
diff --git a/clang-tools-extra/clang-tidy/misc/UseAnonymousNamespaceCheck.h b/clang-tools-extra/clang-tidy/misc/UseAnonymousNamespaceCheck.h
index 4a5a867623872..3f73ce7c398af 100644
--- a/clang-tools-extra/clang-tidy/misc/UseAnonymousNamespaceCheck.h
+++ b/clang-tools-extra/clang-tidy/misc/UseAnonymousNamespaceCheck.h
@@ -17,14 +17,6 @@ namespace clang::tidy::misc {
/// Warns when using 'static' functions or variables at global scope, and
/// suggests moving them to an anonymous namespace.
///
-/// The check supports these options:
-/// - `HeaderFileExtensions`: a semicolon-separated list of filename
-/// extensions of header files (The filename extension should not contain
-/// "." prefix). ";h;hh;hpp;hxx" by default.
-///
-/// For extension-less header files, using an empty string or leaving an
-/// empty string between ";" if there are other filename extensions.
-///
/// For the user-facing documentation see:
/// http://clang.llvm.org/extra/clang-tidy/checks/misc/use-anonymous-namespace.html
class UseAnonymousNamespaceCheck : public ClangTidyCheck {
@@ -33,12 +25,10 @@ class UseAnonymousNamespaceCheck : public ClangTidyCheck {
bool isLanguageVersionSupported(const LangOptions &LangOpts) const override {
return LangOpts.CPlusPlus;
}
- void storeOptions(ClangTidyOptions::OptionMap &Opts) override;
void registerMatchers(ast_matchers::MatchFinder *Finder) override;
void check(const ast_matchers::MatchFinder::MatchResult &Result) override;
private:
- StringRef RawStringHeaderFileExtensions;
FileExtensionsSet HeaderFileExtensions;
};
diff --git a/clang-tools-extra/clang-tidy/utils/HeaderGuard.cpp b/clang-tools-extra/clang-tidy/utils/HeaderGuard.cpp
index 0625eb38c8cdf..afe70dc8e6d5b 100644
--- a/clang-tools-extra/clang-tidy/utils/HeaderGuard.cpp
+++ b/clang-tools-extra/clang-tidy/utils/HeaderGuard.cpp
@@ -269,10 +269,6 @@ class HeaderGuardPPCallbacks : public PPCallbacks {
};
} // namespace
-void HeaderGuardCheck::storeOptions(ClangTidyOptions::OptionMap &Opts) {
- Options.store(Opts, "HeaderFileExtensions", RawStringHeaderFileExtensions);
-}
-
void HeaderGuardCheck::registerPPCallbacks(const SourceManager &SM,
Preprocessor *PP,
Preprocessor *ModuleExpanderPP) {
diff --git a/clang-tools-extra/clang-tidy/utils/HeaderGuard.h b/clang-tools-extra/clang-tidy/utils/HeaderGuard.h
index b1ce7839f36a3..eff75d6ff26a2 100644
--- a/clang-tools-extra/clang-tidy/utils/HeaderGuard.h
+++ b/clang-tools-extra/clang-tidy/utils/HeaderGuard.h
@@ -15,32 +15,12 @@
namespace clang::tidy::utils {
/// Finds and fixes header guards.
-/// The check supports these options:
-/// - `HeaderFileExtensions`: a semicolon-separated list of filename
-/// extensions of header files (The filename extension should not contain
-/// "." prefix). ";h;hh;hpp;hxx" by default.
-///
-/// For extension-less header files, using an empty string or leaving an
-/// empty string between ";" if there are other filename extensions.
class HeaderGuardCheck : public ClangTidyCheck {
public:
HeaderGuardCheck(StringRef Name, ClangTidyContext *Context)
- : ClangTidyCheck(Name, Context) {
- std::optional<StringRef> HeaderFileExtensionsOption =
- Options.get("HeaderFileExtensions");
- RawStringHeaderFileExtensions = HeaderFileExtensionsOption.value_or(
- utils::defaultHeaderFileExtensions());
- if (HeaderFileExtensionsOption) {
- if (!utils::parseFileExtensions(
- RawStringHeaderFileExtensions, HeaderFileExtensions,
- utils::defaultFileExtensionDelimiters())) {
- this->configurationDiag("Invalid header file extension: '%0'")
- << RawStringHeaderFileExtensions;
- }
- } else
- HeaderFileExtensions = Context->getHeaderFileExtensions();
- }
- void storeOptions(ClangTidyOptions::OptionMap &Opts) override;
+ : ClangTidyCheck(Name, Context),
+ HeaderFileExtensions(Context->getHeaderFileExtensions()) {}
+
void registerPPCallbacks(const SourceManager &SM, Preprocessor *PP,
Preprocessor *ModuleExpanderPP) override;
@@ -65,7 +45,6 @@ class HeaderGuardCheck : public ClangTidyCheck {
StringRef OldGuard = StringRef()) = 0;
private:
- std::string RawStringHeaderFileExtensions;
FileExtensionsSet HeaderFileExtensions;
};
diff --git a/clang-tools-extra/docs/ReleaseNotes.rst b/clang-tools-extra/docs/ReleaseNotes.rst
index 2a7749d71405c..69d6d1790161c 100644
--- a/clang-tools-extra/docs/ReleaseNotes.rst
+++ b/clang-tools-extra/docs/ReleaseNotes.rst
@@ -106,6 +106,37 @@ New check aliases
Changes in existing checks
^^^^^^^^^^^^^^^^^^^^^^^^^^
+- Improved :doc:`bugprone-suspicious-include
+ <clang-tidy/checks/bugprone/suspicious-include>` check by replacing the local
+ options `HeaderFileExtensions` and `ImplementationFileExtensions` by the
+ global options of the same name.
+
+- Improved :doc:`google-build-namespaces
+ <clang-tidy/checks/google/build-namespaces>` check by replacing the local
+ option `HeaderFileExtensions` by the global option of the same name.
+
+- Improved :doc:`google-global-names-in-headers
+ <clang-tidy/checks/google/global-names-in-headers>` check by replacing the local
+ option `HeaderFileExtensions` by the global option of the same name.
+
+- Improved :doc:`llvm-header-guard
+ <clang-tidy/checks/llvm/header-guard>` check by replacing the local
+ option `HeaderFileExtensions` by the global option of the same name.
+
+- Improved :doc:`misc-definitions-in-headers
+ <clang-tidy/checks/misc/definitions-in-headers>` check by replacing the local
+ option `HeaderFileExtensions` by the global option of the same name.
+ Additionally, the option `UseHeaderFileExtensions` is removed, so that the
+ check uses the `HeaderFileExtensions` option unconditionally.
+
+- Improved :doc:`misc-unused-using-decls
+ <clang-tidy/checks/misc/unused-using-decls>` check by replacing the local
+ option `HeaderFileExtensions` by the global option of the same name.
+
+- Improved :doc:`misc-use-anonymous-namespace
+ <clang-tidy/checks/misc/misc-use-anonymous-namespace>` check by replacing the local
+ option `HeaderFileExtensions` by the global option of the same name.
+
- Improved :doc:`modernize-avoid-c-arrays
<clang-tidy/checks/modernize/avoid-c-arrays>` check by introducing the new
`AllowStringArrays` option, enabling the exclusion of array types with deduced
diff --git a/clang-tools-extra/docs/clang-tidy/checks/bugprone/suspicious-include.rst b/clang-tools-extra/docs/clang-tidy/checks/bugprone/suspicious-include.rst
index 7abcc13164a76..669654fdd435f 100644
--- a/clang-tools-extra/docs/clang-tidy/checks/bugprone/suspicious-include.rst
+++ b/clang-tools-extra/docs/clang-tidy/checks/bugprone/suspicious-include.rst
@@ -14,27 +14,3 @@ Examples:
#include "Pterodactyl.h" // OK, .h files tend not to have definitions.
#include "Velociraptor.cpp" // Warning, filename is suspicious.
#include_next <stdio.c> // Warning, filename is suspicious.
-
-Options
--------
-.. option:: HeaderFileExtensions
-
- Note: this option is deprecated, it will be removed in :program:`clang-tidy`
- version 19. Please use the global configuration option
- `HeaderFileExtensions`.
-
- Default value: ``";h;hh;hpp;hxx"``
- A semicolon-separated list of filename extensions of header files (the
- filename extensions should not contain a "." prefix). For extension-less
- header files, use an empty string or leave an empty string between ";"
- if there are other filename extensions.
-
-.. option:: ImplementationFileExtensions
-
- Note: this option is deprecated, it will be removed in :program:`clang-tidy`
- version 19. Please use the global configuration option
- `ImplementationFileExtensions`.
-
- Default value: ``"c;cc;cpp;cxx"``
- Likewise, a semicolon-separated list of filename extensions of
- implementation files.
diff --git a/clang-tools-extra/docs/clang-tidy/checks/google/build-namespaces.rst b/clang-tools-extra/docs/clang-tidy/checks/google/build-namespaces.rst
index 59b5673dbf63e..b421d992d63a6 100644
--- a/clang-tools-extra/docs/clang-tidy/checks/google/build-namespaces.rst
+++ b/clang-tools-extra/docs/clang-tidy/checks/google/build-namespaces.rst
@@ -11,18 +11,3 @@ Finds anonymous namespaces in headers.
https://google.github.io/styleguide/cppguide.html#Namespaces
Corresponding cpplint.py check name: `build/namespaces`.
-
-Options
--------
-
-.. option:: HeaderFileExtensions
-
- Note: this option is deprecated, it will be removed in :program:`clang-tidy`
- version 19. Please use the global configuration option
- `HeaderFileExtensions`.
-
- A comma-separated list of filename extensions of header files (the filename
- extensions should not include "." prefix). Default is "h,hh,hpp,hxx".
- For header files without an extension, use an empty string (if there are no
- other desired extensions) or leave an empty element in the list. E.g.,
- "h,hh,hpp,hxx," (note the trailing comma).
diff --git a/clang-tools-extra/docs/clang-tidy/checks/google/global-names-in-headers.rst b/clang-tools-extra/docs/clang-tidy/checks/google/global-names-in-headers.rst
index e71ac46cdb35c..4a071a9dc163a 100644
--- a/clang-tools-extra/docs/clang-tidy/checks/google/global-names-in-headers.rst
+++ b/clang-tools-extra/docs/clang-tidy/checks/google/global-names-in-headers.rst
@@ -8,18 +8,3 @@ Flag global namespace pollution in header files. Right now it only triggers on
The relevant style guide section is
https://google.github.io/styleguide/cppguide.html#Namespaces.
-
-Options
--------
-
-.. option:: HeaderFileExtensions
-
- Note: this option is deprecated, it will be removed in :program:`clang-tidy`
- version 19. Please use the global configuration option
- `HeaderFileExtensions`.
-
- A comma-separated list of filename extensions of header files (the filename
- extensions should not contain "." prefix). Default is "h".
- For header files without an extension, use an empty string (if there are no
- other desired extensions) or leave an empty element in the list. E.g.,
- "h,hh,hpp,hxx," (note the trailing comma).
diff --git a/clang-tools-extra/docs/clang-tidy/checks/llvm/header-guard.rst b/clang-tools-extra/docs/clang-tidy/checks/llvm/header-guard.rst
index 725ef637f3f78..74eb10ba6fcf9 100644
--- a/clang-tools-extra/docs/clang-tidy/checks/llvm/header-guard.rst
+++ b/clang-tools-extra/docs/clang-tidy/checks/llvm/header-guard.rst
@@ -4,18 +4,3 @@ llvm-header-guard
=================
Finds and fixes header guards that do not adhere to LLVM style.
-
-Options
--------
-
-.. option:: HeaderFileExtensions
-
- Note: this option is deprecated, it will be removed in :program:`clang-tidy`
- version 19. Please use the global configuration option
- `HeaderFileExtensions`.
-
- A comma-separated list of filename extensions of header files (the filename
- extensions should not include "." prefix). Default is "h,hh,hpp,hxx".
- For header files without an extension, use an empty string (if there are no
- other desired extensions) or leave an empty element in the list. E.g.,
- "h,hh,hpp,hxx," (note the trailing comma).
diff --git a/clang-tools-extra/docs/clang-tidy/checks/misc/definitions-in-headers.rst b/clang-tools-extra/docs/clang-tidy/checks/misc/definitions-in-headers.rst
index 9c90bf10217f4..821f3c0f1df15 100644
--- a/clang-tools-extra/docs/clang-tidy/checks/misc/definitions-in-headers.rst
+++ b/clang-tools-extra/docs/clang-tidy/checks/misc/definitions-in-headers.rst
@@ -92,27 +92,3 @@ When :program:`clang-tidy` is invoked with the `--fix-notes` option, this check
provides fixes that automatically add the ``inline`` keyword to discovered
functions. Please note that the addition of the ``inline`` keyword to variables
is not currently supported by this check.
-
-Options
--------
-
-.. option:: HeaderFileExtensions
-
- Note: this option is deprecated, it will be removed in :program:`clang-tidy`
- version 19. Please use the global configuration option
- `HeaderFileExtensions`.
-
- A comma-separated list of filename extensions of header files (the filename
- extensions should not include "." prefix). Default is "h,hh,hpp,hxx".
- For header files without an extension, use an empty string (if there are no
- other desired extensions) or leave an empty element in the list. E.g.,
- "h,hh,hpp,hxx," (note the trailing comma).
-
-.. option:: UseHeaderFileExtension
-
- Note: this option is deprecated, it will be removed in :program:`clang-tidy`
- version 19. The check will unconditionally use the global option
- `HeaderFileExtensions`.
-
- When `true`, the check will use the file extension to distinguish header
- files. Default is `true`.
diff --git a/clang-tools-extra/docs/clang-tidy/checks/misc/unused-using-decls.rst b/clang-tools-extra/docs/clang-tidy/checks/misc/unused-using-decls.rst
index 11b4450e37f51..29cd5a23589c0 100644
--- a/clang-tools-extra/docs/clang-tidy/checks/misc/unused-using-decls.rst
+++ b/clang-tools-extra/docs/clang-tidy/checks/misc/unused-using-decls.rst
@@ -7,7 +7,7 @@ Finds unused ``using`` declarations.
Unused ``using``` declarations in header files will not be diagnosed since these
using declarations are part of the header's public API. Allowed header file
-extensions can be configured via the `HeaderFileExtensions` option (see below).
+extensions can be configured via the global option `HeaderFileExtensions`.
Example:
@@ -16,17 +16,3 @@ Example:
// main.cpp
namespace n { class C; }
using n::C; // Never actually used.
-
-Options
--------
-
-.. option:: HeaderFileExtensions
-
- Note: this option is deprecated, it will be removed in :program:`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, use an empty string or leave an
- empty string between "," if there are other filename extensions.
diff --git a/clang-tools-extra/docs/clang-tidy/checks/misc/use-anonymous-namespace.rst b/clang-tools-extra/docs/clang-tidy/checks/misc/use-anonymous-namespace.rst
index b825e9562dafc..09501270fb623 100644
--- a/clang-tools-extra/docs/clang-tidy/checks/misc/use-anonymous-namespace.rst
+++ b/clang-tools-extra/docs/clang-tidy/checks/misc/use-anonymous-namespace.rst
@@ -15,7 +15,7 @@ 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 `HeaderFileExtensions` option (see below).
+ via the global option `HeaderFileExtensions`.
* ``const`` or ``constexpr`` variables, since they already have implicit internal
linkage in C++.
@@ -33,18 +33,4 @@ Examples:
int x;
} // namespace
-Options
--------
-
-.. option:: HeaderFileExtensions
-
- Note: this option is deprecated, it will be removed in :program:`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 <https://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1012>`_
More information about the cfe-commits
mailing list