[clang-tools-extra] [clang-tidy] Remove global options IgnoreMacros and StrictMode (PR #157049)
Carlos Galvez via cfe-commits
cfe-commits at lists.llvm.org
Fri Sep 5 11:39:39 PDT 2025
https://github.com/carlosgalvezp updated https://github.com/llvm/llvm-project/pull/157049
>From 6cb7d9b7a1c1ab17f8a6aa10414a5dbd06ee83ab Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Carlos=20G=C3=A1lvez?= <carlos.galvez at zenseact.com>
Date: Fri, 5 Sep 2025 08:09:21 +0000
Subject: [PATCH 1/2] [clang-tidy] Remove global options IgnoreMacros and
StrictMode
They had been marked as deprecated since clang-tidy 20.x. After 2
releases, it's now time to fully remove support for them.
Fixes #156885
---
clang-tools-extra/clang-tidy/ClangTidyCheck.cpp | 12 ------------
.../clang-tidy/bugprone/ArgumentCommentCheck.cpp | 2 +-
.../clang-tidy/bugprone/LambdaFunctionNameCheck.cpp | 3 +--
.../clang-tidy/bugprone/SuspiciousEnumUsageCheck.cpp | 2 +-
.../cppcoreguidelines/AvoidDoWhileCheck.cpp | 2 +-
.../cppcoreguidelines/ProTypeConstCastCheck.cpp | 2 +-
.../ProTypeStaticCastDowncastCheck.cpp | 2 +-
.../clang-tidy/misc/UnusedParametersCheck.cpp | 2 +-
.../clang-tidy/modernize/MakeSmartPtrCheck.cpp | 2 +-
.../clang-tidy/modernize/TypeTraitsCheck.cpp | 2 +-
.../clang-tidy/modernize/UseBoolLiteralsCheck.cpp | 2 +-
.../modernize/UseDefaultMemberInitCheck.cpp | 2 +-
.../modernize/UseDesignatedInitializersCheck.cpp | 3 +--
.../clang-tidy/modernize/UseEqualsDefaultCheck.cpp | 2 +-
.../clang-tidy/modernize/UseEqualsDeleteCheck.cpp | 2 +-
.../clang-tidy/modernize/UseStdFormatCheck.cpp | 2 +-
.../clang-tidy/modernize/UseStdPrintCheck.cpp | 2 +-
.../clang-tidy/modernize/UseUsingCheck.cpp | 2 +-
.../InefficientStringConcatenationCheck.cpp | 2 +-
.../clang-tidy/readability/AvoidConstParamsInDecls.h | 2 +-
.../readability/AvoidReturnWithVoidValueCheck.cpp | 5 ++---
.../clang-tidy/readability/ConstReturnTypeCheck.h | 2 +-
.../InconsistentDeclarationParameterNameCheck.h | 2 +-
.../clang-tidy/readability/RedundantCastingCheck.cpp | 2 +-
.../readability/RedundantDeclarationCheck.cpp | 2 +-
.../readability/RedundantInlineSpecifierCheck.h | 2 +-
.../readability/RedundantSmartptrGetCheck.h | 2 +-
.../readability/UppercaseLiteralSuffixCheck.cpp | 2 +-
.../clangd/unittests/ConfigCompileTests.cpp | 6 +-----
.../clangd/unittests/ConfigYAMLTests.cpp | 4 +---
clang-tools-extra/docs/ReleaseNotes.rst | 5 +++++
.../function-cognitive-complexity-flags.cpp | 9 ---------
.../Inputs/config-files/4/44/.clang-tidy | 2 +-
.../Inputs/config-files/4/key-dict/.clang-tidy | 3 +--
.../infrastructure/deprecation-global-option.cpp | 3 ---
.../test/clang-tidy/infrastructure/verify-config.cpp | 6 ++----
36 files changed, 39 insertions(+), 70 deletions(-)
delete mode 100644 clang-tools-extra/test/clang-tidy/infrastructure/deprecation-global-option.cpp
diff --git a/clang-tools-extra/clang-tidy/ClangTidyCheck.cpp b/clang-tools-extra/clang-tidy/ClangTidyCheck.cpp
index 341343e90822b..88abcb6946779 100644
--- a/clang-tools-extra/clang-tidy/ClangTidyCheck.cpp
+++ b/clang-tools-extra/clang-tidy/ClangTidyCheck.cpp
@@ -62,11 +62,6 @@ ClangTidyCheck::OptionsView::get(StringRef LocalName) const {
return std::nullopt;
}
-static const llvm::StringSet<> DeprecatedGlobalOptions{
- "StrictMode",
- "IgnoreMacros",
-};
-
static ClangTidyOptions::OptionMap::const_iterator
findPriorityOption(const ClangTidyOptions::OptionMap &Options,
StringRef NamePrefix, StringRef LocalName,
@@ -78,13 +73,6 @@ findPriorityOption(const ClangTidyOptions::OptionMap &Options,
}
auto IterLocal = Options.find((NamePrefix + LocalName).str());
auto IterGlobal = Options.find(LocalName);
- // FIXME: temporary solution for deprecation warnings, should be removed
- // after 22.x. Warn configuration deps on deprecation global options.
- if (IterLocal == Options.end() && IterGlobal != Options.end() &&
- DeprecatedGlobalOptions.contains(LocalName))
- Context->configurationDiag(
- "global option '%0' is deprecated, please use '%1%0' instead.")
- << LocalName << NamePrefix;
if (IterLocal == Options.end())
return IterGlobal;
if (IterGlobal == Options.end())
diff --git a/clang-tools-extra/clang-tidy/bugprone/ArgumentCommentCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/ArgumentCommentCheck.cpp
index b843e317c471d..15e7b53ed5be0 100644
--- a/clang-tools-extra/clang-tidy/bugprone/ArgumentCommentCheck.cpp
+++ b/clang-tools-extra/clang-tidy/bugprone/ArgumentCommentCheck.cpp
@@ -32,7 +32,7 @@ AST_MATCHER(Decl, isFromStdNamespaceOrSystemHeader) {
ArgumentCommentCheck::ArgumentCommentCheck(StringRef Name,
ClangTidyContext *Context)
: ClangTidyCheck(Name, Context),
- StrictMode(Options.getLocalOrGlobal("StrictMode", false)),
+ StrictMode(Options.get("StrictMode", false)),
IgnoreSingleArgument(Options.get("IgnoreSingleArgument", false)),
CommentBoolLiterals(Options.get("CommentBoolLiterals", false)),
CommentIntegerLiterals(Options.get("CommentIntegerLiterals", false)),
diff --git a/clang-tools-extra/clang-tidy/bugprone/LambdaFunctionNameCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/LambdaFunctionNameCheck.cpp
index 6d5c470616d1d..8517d2bac0d59 100644
--- a/clang-tools-extra/clang-tidy/bugprone/LambdaFunctionNameCheck.cpp
+++ b/clang-tools-extra/clang-tidy/bugprone/LambdaFunctionNameCheck.cpp
@@ -64,8 +64,7 @@ AST_MATCHER(CXXMethodDecl, isInLambda) { return Node.getParent()->isLambda(); }
LambdaFunctionNameCheck::LambdaFunctionNameCheck(StringRef Name,
ClangTidyContext *Context)
: ClangTidyCheck(Name, Context),
- IgnoreMacros(
- Options.getLocalOrGlobal("IgnoreMacros", DefaultIgnoreMacros)) {}
+ IgnoreMacros(Options.get("IgnoreMacros", DefaultIgnoreMacros)) {}
void LambdaFunctionNameCheck::storeOptions(ClangTidyOptions::OptionMap &Opts) {
Options.store(Opts, "IgnoreMacros", IgnoreMacros);
diff --git a/clang-tools-extra/clang-tidy/bugprone/SuspiciousEnumUsageCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/SuspiciousEnumUsageCheck.cpp
index 2fca7ae2e7eee..f2067bec001cc 100644
--- a/clang-tools-extra/clang-tidy/bugprone/SuspiciousEnumUsageCheck.cpp
+++ b/clang-tools-extra/clang-tidy/bugprone/SuspiciousEnumUsageCheck.cpp
@@ -106,7 +106,7 @@ static bool isPossiblyBitMask(const EnumDecl *EnumDec) {
SuspiciousEnumUsageCheck::SuspiciousEnumUsageCheck(StringRef Name,
ClangTidyContext *Context)
: ClangTidyCheck(Name, Context),
- StrictMode(Options.getLocalOrGlobal("StrictMode", false)) {}
+ StrictMode(Options.get("StrictMode", false)) {}
void SuspiciousEnumUsageCheck::storeOptions(ClangTidyOptions::OptionMap &Opts) {
Options.store(Opts, "StrictMode", StrictMode);
diff --git a/clang-tools-extra/clang-tidy/cppcoreguidelines/AvoidDoWhileCheck.cpp b/clang-tools-extra/clang-tidy/cppcoreguidelines/AvoidDoWhileCheck.cpp
index 8f2846b74c24e..d623e05e15cc0 100644
--- a/clang-tools-extra/clang-tidy/cppcoreguidelines/AvoidDoWhileCheck.cpp
+++ b/clang-tools-extra/clang-tidy/cppcoreguidelines/AvoidDoWhileCheck.cpp
@@ -15,7 +15,7 @@ namespace clang::tidy::cppcoreguidelines {
AvoidDoWhileCheck::AvoidDoWhileCheck(StringRef Name, ClangTidyContext *Context)
: ClangTidyCheck(Name, Context),
- IgnoreMacros(Options.getLocalOrGlobal("IgnoreMacros", false)) {}
+ IgnoreMacros(Options.get("IgnoreMacros", false)) {}
void AvoidDoWhileCheck::storeOptions(ClangTidyOptions::OptionMap &Opts) {
Options.store(Opts, "IgnoreMacros", IgnoreMacros);
diff --git a/clang-tools-extra/clang-tidy/cppcoreguidelines/ProTypeConstCastCheck.cpp b/clang-tools-extra/clang-tidy/cppcoreguidelines/ProTypeConstCastCheck.cpp
index 8c44c1bfb62b6..b234c2a041d8c 100644
--- a/clang-tools-extra/clang-tidy/cppcoreguidelines/ProTypeConstCastCheck.cpp
+++ b/clang-tools-extra/clang-tidy/cppcoreguidelines/ProTypeConstCastCheck.cpp
@@ -32,7 +32,7 @@ static bool hasVolatileQualifier(QualType Type) {
ProTypeConstCastCheck::ProTypeConstCastCheck(StringRef Name,
ClangTidyContext *Context)
: ClangTidyCheck(Name, Context),
- StrictMode(Options.getLocalOrGlobal("StrictMode", false)) {}
+ StrictMode(Options.get("StrictMode", false)) {}
void ProTypeConstCastCheck::storeOptions(ClangTidyOptions::OptionMap &Opts) {
Options.store(Opts, "StrictMode", StrictMode);
diff --git a/clang-tools-extra/clang-tidy/cppcoreguidelines/ProTypeStaticCastDowncastCheck.cpp b/clang-tools-extra/clang-tidy/cppcoreguidelines/ProTypeStaticCastDowncastCheck.cpp
index 2a89de27760fe..14616ee8514f7 100644
--- a/clang-tools-extra/clang-tidy/cppcoreguidelines/ProTypeStaticCastDowncastCheck.cpp
+++ b/clang-tools-extra/clang-tidy/cppcoreguidelines/ProTypeStaticCastDowncastCheck.cpp
@@ -17,7 +17,7 @@ namespace clang::tidy::cppcoreguidelines {
ProTypeStaticCastDowncastCheck::ProTypeStaticCastDowncastCheck(
StringRef Name, ClangTidyContext *Context)
: ClangTidyCheck(Name, Context),
- StrictMode(Options.getLocalOrGlobal("StrictMode", true)) {}
+ StrictMode(Options.get("StrictMode", true)) {}
void ProTypeStaticCastDowncastCheck::storeOptions(
ClangTidyOptions::OptionMap &Opts) {
diff --git a/clang-tools-extra/clang-tidy/misc/UnusedParametersCheck.cpp b/clang-tools-extra/clang-tidy/misc/UnusedParametersCheck.cpp
index 737551637ea9e..503f62f946e81 100644
--- a/clang-tools-extra/clang-tidy/misc/UnusedParametersCheck.cpp
+++ b/clang-tools-extra/clang-tidy/misc/UnusedParametersCheck.cpp
@@ -136,7 +136,7 @@ UnusedParametersCheck::~UnusedParametersCheck() = default;
UnusedParametersCheck::UnusedParametersCheck(StringRef Name,
ClangTidyContext *Context)
: ClangTidyCheck(Name, Context),
- StrictMode(Options.getLocalOrGlobal("StrictMode", false)),
+ StrictMode(Options.get("StrictMode", false)),
IgnoreVirtual(Options.get("IgnoreVirtual", false)) {}
void UnusedParametersCheck::storeOptions(ClangTidyOptions::OptionMap &Opts) {
diff --git a/clang-tools-extra/clang-tidy/modernize/MakeSmartPtrCheck.cpp b/clang-tools-extra/clang-tidy/modernize/MakeSmartPtrCheck.cpp
index ac8476bb2f8a4..b3e29b3273a82 100644
--- a/clang-tools-extra/clang-tidy/modernize/MakeSmartPtrCheck.cpp
+++ b/clang-tools-extra/clang-tidy/modernize/MakeSmartPtrCheck.cpp
@@ -46,7 +46,7 @@ MakeSmartPtrCheck::MakeSmartPtrCheck(StringRef Name, ClangTidyContext *Context,
Options.get("MakeSmartPtrFunctionHeader", "<memory>")),
MakeSmartPtrFunctionName(
Options.get("MakeSmartPtrFunction", MakeSmartPtrFunctionName)),
- IgnoreMacros(Options.getLocalOrGlobal("IgnoreMacros", true)),
+ IgnoreMacros(Options.get("IgnoreMacros", true)),
IgnoreDefaultInitialization(
Options.get("IgnoreDefaultInitialization", true)) {}
diff --git a/clang-tools-extra/clang-tidy/modernize/TypeTraitsCheck.cpp b/clang-tools-extra/clang-tidy/modernize/TypeTraitsCheck.cpp
index 472128201acc2..15bd0a6760ec1 100644
--- a/clang-tools-extra/clang-tidy/modernize/TypeTraitsCheck.cpp
+++ b/clang-tools-extra/clang-tidy/modernize/TypeTraitsCheck.cpp
@@ -220,7 +220,7 @@ static bool checkTemplatedDecl(NestedNameSpecifier NNS,
TypeTraitsCheck::TypeTraitsCheck(StringRef Name, ClangTidyContext *Context)
: ClangTidyCheck(Name, Context),
- IgnoreMacros(Options.getLocalOrGlobal("IgnoreMacros", false)) {}
+ IgnoreMacros(Options.get("IgnoreMacros", false)) {}
void TypeTraitsCheck::check(const MatchFinder::MatchResult &Result) {
auto EmitValueWarning = [this, &Result](const NestedNameSpecifierLoc &QualLoc,
diff --git a/clang-tools-extra/clang-tidy/modernize/UseBoolLiteralsCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseBoolLiteralsCheck.cpp
index 339462093a6d6..dfcfc925b5231 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseBoolLiteralsCheck.cpp
+++ b/clang-tools-extra/clang-tidy/modernize/UseBoolLiteralsCheck.cpp
@@ -18,7 +18,7 @@ namespace clang::tidy::modernize {
UseBoolLiteralsCheck::UseBoolLiteralsCheck(StringRef Name,
ClangTidyContext *Context)
: ClangTidyCheck(Name, Context),
- IgnoreMacros(Options.getLocalOrGlobal("IgnoreMacros", true)) {}
+ IgnoreMacros(Options.get("IgnoreMacros", true)) {}
void UseBoolLiteralsCheck::storeOptions(ClangTidyOptions::OptionMap &Opts) {
Options.store(Opts, "IgnoreMacros", IgnoreMacros);
diff --git a/clang-tools-extra/clang-tidy/modernize/UseDefaultMemberInitCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseDefaultMemberInitCheck.cpp
index 9ad6dcefbc1bb..e950fd1c77da5 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseDefaultMemberInitCheck.cpp
+++ b/clang-tools-extra/clang-tidy/modernize/UseDefaultMemberInitCheck.cpp
@@ -197,7 +197,7 @@ UseDefaultMemberInitCheck::UseDefaultMemberInitCheck(StringRef Name,
ClangTidyContext *Context)
: ClangTidyCheck(Name, Context),
UseAssignment(Options.get("UseAssignment", false)),
- IgnoreMacros(Options.getLocalOrGlobal("IgnoreMacros", true)) {}
+ IgnoreMacros(Options.get("IgnoreMacros", true)) {}
void UseDefaultMemberInitCheck::storeOptions(
ClangTidyOptions::OptionMap &Opts) {
diff --git a/clang-tools-extra/clang-tidy/modernize/UseDesignatedInitializersCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseDesignatedInitializersCheck.cpp
index bb8fb2404a9a5..e9e750ad4e933 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseDesignatedInitializersCheck.cpp
+++ b/clang-tools-extra/clang-tidy/modernize/UseDesignatedInitializersCheck.cpp
@@ -108,8 +108,7 @@ UseDesignatedInitializersCheck::UseDesignatedInitializersCheck(
IgnoreSingleElementAggregatesDefault)),
RestrictToPODTypes(
Options.get(RestrictToPODTypesName, RestrictToPODTypesDefault)),
- IgnoreMacros(
- Options.getLocalOrGlobal(IgnoreMacrosName, IgnoreMacrosDefault)),
+ IgnoreMacros(Options.get(IgnoreMacrosName, IgnoreMacrosDefault)),
StrictCStandardCompliance(Options.get(StrictCStandardComplianceName,
StrictCStandardComplianceDefault)),
StrictCppStandardCompliance(
diff --git a/clang-tools-extra/clang-tidy/modernize/UseEqualsDefaultCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseEqualsDefaultCheck.cpp
index b361ae4456538..f0c541eaca0a0 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseEqualsDefaultCheck.cpp
+++ b/clang-tools-extra/clang-tidy/modernize/UseEqualsDefaultCheck.cpp
@@ -210,7 +210,7 @@ static bool bodyEmpty(const ASTContext *Context, const CompoundStmt *Body) {
UseEqualsDefaultCheck::UseEqualsDefaultCheck(StringRef Name,
ClangTidyContext *Context)
: ClangTidyCheck(Name, Context),
- IgnoreMacros(Options.getLocalOrGlobal("IgnoreMacros", true)) {}
+ IgnoreMacros(Options.get("IgnoreMacros", true)) {}
void UseEqualsDefaultCheck::storeOptions(ClangTidyOptions::OptionMap &Opts) {
Options.store(Opts, "IgnoreMacros", IgnoreMacros);
diff --git a/clang-tools-extra/clang-tidy/modernize/UseEqualsDeleteCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseEqualsDeleteCheck.cpp
index 9561cc71183d9..cf4e4f09c6a90 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseEqualsDeleteCheck.cpp
+++ b/clang-tools-extra/clang-tidy/modernize/UseEqualsDeleteCheck.cpp
@@ -47,7 +47,7 @@ static const char DeletedNotPublic[] = "DeletedNotPublic";
UseEqualsDeleteCheck::UseEqualsDeleteCheck(StringRef Name,
ClangTidyContext *Context)
: ClangTidyCheck(Name, Context),
- IgnoreMacros(Options.getLocalOrGlobal("IgnoreMacros", true)) {}
+ IgnoreMacros(Options.get("IgnoreMacros", true)) {}
void UseEqualsDeleteCheck::storeOptions(ClangTidyOptions::OptionMap &Opts) {
Options.store(Opts, "IgnoreMacros", IgnoreMacros);
diff --git a/clang-tools-extra/clang-tidy/modernize/UseStdFormatCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseStdFormatCheck.cpp
index 5cabc6df21da9..081ec305f3b2a 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseStdFormatCheck.cpp
+++ b/clang-tools-extra/clang-tidy/modernize/UseStdFormatCheck.cpp
@@ -23,7 +23,7 @@ AST_MATCHER(StringLiteral, isOrdinary) { return Node.isOrdinary(); }
UseStdFormatCheck::UseStdFormatCheck(StringRef Name, ClangTidyContext *Context)
: ClangTidyCheck(Name, Context),
- StrictMode(Options.getLocalOrGlobal("StrictMode", false)),
+ StrictMode(Options.get("StrictMode", false)),
StrFormatLikeFunctions(utils::options::parseStringList(
Options.get("StrFormatLikeFunctions", ""))),
ReplacementFormatFunction(
diff --git a/clang-tools-extra/clang-tidy/modernize/UseStdPrintCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseStdPrintCheck.cpp
index aad5a4778b3af..b1e3ee6e2ba85 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseStdPrintCheck.cpp
+++ b/clang-tools-extra/clang-tidy/modernize/UseStdPrintCheck.cpp
@@ -23,7 +23,7 @@ AST_MATCHER(StringLiteral, isOrdinary) { return Node.isOrdinary(); }
UseStdPrintCheck::UseStdPrintCheck(StringRef Name, ClangTidyContext *Context)
: ClangTidyCheck(Name, Context), PP(nullptr),
- StrictMode(Options.getLocalOrGlobal("StrictMode", false)),
+ StrictMode(Options.get("StrictMode", false)),
PrintfLikeFunctions(utils::options::parseStringList(
Options.get("PrintfLikeFunctions", ""))),
FprintfLikeFunctions(utils::options::parseStringList(
diff --git a/clang-tools-extra/clang-tidy/modernize/UseUsingCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseUsingCheck.cpp
index e307339bd83aa..4037e8c1ea2fd 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseUsingCheck.cpp
+++ b/clang-tools-extra/clang-tidy/modernize/UseUsingCheck.cpp
@@ -34,7 +34,7 @@ static constexpr llvm::StringLiteral DeclStmtName = "decl-stmt";
UseUsingCheck::UseUsingCheck(StringRef Name, ClangTidyContext *Context)
: ClangTidyCheck(Name, Context),
- IgnoreMacros(Options.getLocalOrGlobal("IgnoreMacros", true)),
+ IgnoreMacros(Options.get("IgnoreMacros", true)),
IgnoreExternC(Options.get("IgnoreExternC", false)) {}
void UseUsingCheck::storeOptions(ClangTidyOptions::OptionMap &Opts) {
diff --git a/clang-tools-extra/clang-tidy/performance/InefficientStringConcatenationCheck.cpp b/clang-tools-extra/clang-tidy/performance/InefficientStringConcatenationCheck.cpp
index 2b1e67d1d4a2f..a3f412d9e3415 100644
--- a/clang-tools-extra/clang-tidy/performance/InefficientStringConcatenationCheck.cpp
+++ b/clang-tools-extra/clang-tidy/performance/InefficientStringConcatenationCheck.cpp
@@ -21,7 +21,7 @@ void InefficientStringConcatenationCheck::storeOptions(
InefficientStringConcatenationCheck::InefficientStringConcatenationCheck(
StringRef Name, ClangTidyContext *Context)
: ClangTidyCheck(Name, Context),
- StrictMode(Options.getLocalOrGlobal("StrictMode", false)) {}
+ StrictMode(Options.get("StrictMode", false)) {}
void InefficientStringConcatenationCheck::registerMatchers(
MatchFinder *Finder) {
diff --git a/clang-tools-extra/clang-tidy/readability/AvoidConstParamsInDecls.h b/clang-tools-extra/clang-tidy/readability/AvoidConstParamsInDecls.h
index 57bac2b39bb32..1fc57779111df 100644
--- a/clang-tools-extra/clang-tidy/readability/AvoidConstParamsInDecls.h
+++ b/clang-tools-extra/clang-tidy/readability/AvoidConstParamsInDecls.h
@@ -19,7 +19,7 @@ class AvoidConstParamsInDecls : public ClangTidyCheck {
public:
AvoidConstParamsInDecls(StringRef Name, ClangTidyContext *Context)
: ClangTidyCheck(Name, Context),
- IgnoreMacros(Options.getLocalOrGlobal("IgnoreMacros", true)) {}
+ IgnoreMacros(Options.get("IgnoreMacros", true)) {}
void storeOptions(ClangTidyOptions::OptionMap &Opts) override;
void registerMatchers(ast_matchers::MatchFinder *Finder) override;
diff --git a/clang-tools-extra/clang-tidy/readability/AvoidReturnWithVoidValueCheck.cpp b/clang-tools-extra/clang-tidy/readability/AvoidReturnWithVoidValueCheck.cpp
index f077040a35295..d283111a4de1a 100644
--- a/clang-tools-extra/clang-tidy/readability/AvoidReturnWithVoidValueCheck.cpp
+++ b/clang-tools-extra/clang-tidy/readability/AvoidReturnWithVoidValueCheck.cpp
@@ -23,9 +23,8 @@ static const bool StrictModeDefault = true;
AvoidReturnWithVoidValueCheck::AvoidReturnWithVoidValueCheck(
StringRef Name, ClangTidyContext *Context)
: ClangTidyCheck(Name, Context),
- IgnoreMacros(
- Options.getLocalOrGlobal(IgnoreMacrosName, IgnoreMacrosDefault)),
- StrictMode(Options.getLocalOrGlobal(StrictModeName, StrictModeDefault)) {}
+ IgnoreMacros(Options.get(IgnoreMacrosName, IgnoreMacrosDefault)),
+ StrictMode(Options.get(StrictModeName, StrictModeDefault)) {}
void AvoidReturnWithVoidValueCheck::registerMatchers(MatchFinder *Finder) {
Finder->addMatcher(
diff --git a/clang-tools-extra/clang-tidy/readability/ConstReturnTypeCheck.h b/clang-tools-extra/clang-tidy/readability/ConstReturnTypeCheck.h
index e329b3d8496a1..a36c6f4b67e5a 100644
--- a/clang-tools-extra/clang-tidy/readability/ConstReturnTypeCheck.h
+++ b/clang-tools-extra/clang-tidy/readability/ConstReturnTypeCheck.h
@@ -22,7 +22,7 @@ class ConstReturnTypeCheck : public ClangTidyCheck {
public:
ConstReturnTypeCheck(StringRef Name, ClangTidyContext *Context)
: ClangTidyCheck(Name, Context),
- IgnoreMacros(Options.getLocalOrGlobal("IgnoreMacros", true)) {}
+ IgnoreMacros(Options.get("IgnoreMacros", true)) {}
void storeOptions(ClangTidyOptions::OptionMap &Opts) override;
void registerMatchers(ast_matchers::MatchFinder *Finder) override;
void check(const ast_matchers::MatchFinder::MatchResult &Result) override;
diff --git a/clang-tools-extra/clang-tidy/readability/InconsistentDeclarationParameterNameCheck.h b/clang-tools-extra/clang-tidy/readability/InconsistentDeclarationParameterNameCheck.h
index 0c5ead860c161..a7810bd25f69c 100644
--- a/clang-tools-extra/clang-tidy/readability/InconsistentDeclarationParameterNameCheck.h
+++ b/clang-tools-extra/clang-tidy/readability/InconsistentDeclarationParameterNameCheck.h
@@ -25,7 +25,7 @@ class InconsistentDeclarationParameterNameCheck : public ClangTidyCheck {
InconsistentDeclarationParameterNameCheck(StringRef Name,
ClangTidyContext *Context)
: ClangTidyCheck(Name, Context),
- IgnoreMacros(Options.getLocalOrGlobal("IgnoreMacros", true)),
+ IgnoreMacros(Options.get("IgnoreMacros", true)),
Strict(Options.get("Strict", false)) {}
void storeOptions(ClangTidyOptions::OptionMap &Opts) override;
diff --git a/clang-tools-extra/clang-tidy/readability/RedundantCastingCheck.cpp b/clang-tools-extra/clang-tidy/readability/RedundantCastingCheck.cpp
index 768540e05c759..acc834ae25c60 100644
--- a/clang-tools-extra/clang-tidy/readability/RedundantCastingCheck.cpp
+++ b/clang-tools-extra/clang-tidy/readability/RedundantCastingCheck.cpp
@@ -93,7 +93,7 @@ static const Decl *getSourceExprDecl(const Expr *SourceExpr) {
RedundantCastingCheck::RedundantCastingCheck(StringRef Name,
ClangTidyContext *Context)
: ClangTidyCheck(Name, Context),
- IgnoreMacros(Options.getLocalOrGlobal("IgnoreMacros", true)),
+ IgnoreMacros(Options.get("IgnoreMacros", true)),
IgnoreTypeAliases(Options.get("IgnoreTypeAliases", false)) {}
void RedundantCastingCheck::storeOptions(ClangTidyOptions::OptionMap &Opts) {
diff --git a/clang-tools-extra/clang-tidy/readability/RedundantDeclarationCheck.cpp b/clang-tools-extra/clang-tidy/readability/RedundantDeclarationCheck.cpp
index 053892dffc7b6..e86e866209e9a 100644
--- a/clang-tools-extra/clang-tidy/readability/RedundantDeclarationCheck.cpp
+++ b/clang-tools-extra/clang-tidy/readability/RedundantDeclarationCheck.cpp
@@ -26,7 +26,7 @@ AST_MATCHER(FunctionDecl, doesDeclarationForceExternallyVisibleDefinition) {
RedundantDeclarationCheck::RedundantDeclarationCheck(StringRef Name,
ClangTidyContext *Context)
: ClangTidyCheck(Name, Context),
- IgnoreMacros(Options.getLocalOrGlobal("IgnoreMacros", true)) {}
+ IgnoreMacros(Options.get("IgnoreMacros", true)) {}
void RedundantDeclarationCheck::storeOptions(
ClangTidyOptions::OptionMap &Opts) {
diff --git a/clang-tools-extra/clang-tidy/readability/RedundantInlineSpecifierCheck.h b/clang-tools-extra/clang-tidy/readability/RedundantInlineSpecifierCheck.h
index cc0bfa9685d0c..63b1b46bb7e09 100644
--- a/clang-tools-extra/clang-tidy/readability/RedundantInlineSpecifierCheck.h
+++ b/clang-tools-extra/clang-tidy/readability/RedundantInlineSpecifierCheck.h
@@ -22,7 +22,7 @@ class RedundantInlineSpecifierCheck : public ClangTidyCheck {
public:
RedundantInlineSpecifierCheck(StringRef Name, ClangTidyContext *Context)
: ClangTidyCheck(Name, Context),
- StrictMode(Options.getLocalOrGlobal("StrictMode", false)) {}
+ StrictMode(Options.get("StrictMode", false)) {}
void registerMatchers(ast_matchers::MatchFinder *Finder) override;
void check(const ast_matchers::MatchFinder::MatchResult &Result) override;
std::optional<TraversalKind> getCheckTraversalKind() const override {
diff --git a/clang-tools-extra/clang-tidy/readability/RedundantSmartptrGetCheck.h b/clang-tools-extra/clang-tidy/readability/RedundantSmartptrGetCheck.h
index ffe8df8857dfe..1f90e4fb4a8be 100644
--- a/clang-tools-extra/clang-tidy/readability/RedundantSmartptrGetCheck.h
+++ b/clang-tools-extra/clang-tidy/readability/RedundantSmartptrGetCheck.h
@@ -26,7 +26,7 @@ class RedundantSmartptrGetCheck : public ClangTidyCheck {
public:
RedundantSmartptrGetCheck(StringRef Name, ClangTidyContext *Context)
: ClangTidyCheck(Name, Context),
- IgnoreMacros(Options.getLocalOrGlobal("IgnoreMacros", true)) {}
+ IgnoreMacros(Options.get("IgnoreMacros", true)) {}
bool isLanguageVersionSupported(const LangOptions &LangOpts) const override {
return LangOpts.CPlusPlus;
}
diff --git a/clang-tools-extra/clang-tidy/readability/UppercaseLiteralSuffixCheck.cpp b/clang-tools-extra/clang-tidy/readability/UppercaseLiteralSuffixCheck.cpp
index e66e1c52b5979..dac4cb556aa75 100644
--- a/clang-tools-extra/clang-tidy/readability/UppercaseLiteralSuffixCheck.cpp
+++ b/clang-tools-extra/clang-tidy/readability/UppercaseLiteralSuffixCheck.cpp
@@ -181,7 +181,7 @@ UppercaseLiteralSuffixCheck::UppercaseLiteralSuffixCheck(
: ClangTidyCheck(Name, Context),
NewSuffixes(
utils::options::parseStringList(Options.get("NewSuffixes", ""))),
- IgnoreMacros(Options.getLocalOrGlobal("IgnoreMacros", true)) {}
+ IgnoreMacros(Options.get("IgnoreMacros", true)) {}
void UppercaseLiteralSuffixCheck::storeOptions(
ClangTidyOptions::OptionMap &Opts) {
diff --git a/clang-tools-extra/clangd/unittests/ConfigCompileTests.cpp b/clang-tools-extra/clangd/unittests/ConfigCompileTests.cpp
index 0e411b2034178..a9b462980dd4e 100644
--- a/clang-tools-extra/clangd/unittests/ConfigCompileTests.cpp
+++ b/clang-tools-extra/clangd/unittests/ConfigCompileTests.cpp
@@ -347,14 +347,10 @@ TEST_F(ConfigCompileTests, Tidy) {
Tidy.Add.emplace_back("llvm-*");
Tidy.Remove.emplace_back("llvm-include-order");
Tidy.Remove.emplace_back("readability-*");
- Tidy.CheckOptions.emplace_back(
- std::make_pair(std::string("StrictMode"), std::string("true")));
Tidy.CheckOptions.emplace_back(std::make_pair(
std::string("example-check.ExampleOption"), std::string("0")));
EXPECT_TRUE(compileAndApply());
- EXPECT_EQ(Conf.Diagnostics.ClangTidy.CheckOptions.size(), 2U);
- EXPECT_EQ(Conf.Diagnostics.ClangTidy.CheckOptions.lookup("StrictMode"),
- "true");
+ EXPECT_EQ(Conf.Diagnostics.ClangTidy.CheckOptions.size(), 1U);
EXPECT_EQ(Conf.Diagnostics.ClangTidy.CheckOptions.lookup(
"example-check.ExampleOption"),
"0");
diff --git a/clang-tools-extra/clangd/unittests/ConfigYAMLTests.cpp b/clang-tools-extra/clangd/unittests/ConfigYAMLTests.cpp
index d94e706ca05de..c332dcc417fe1 100644
--- a/clang-tools-extra/clangd/unittests/ConfigYAMLTests.cpp
+++ b/clang-tools-extra/clangd/unittests/ConfigYAMLTests.cpp
@@ -66,7 +66,6 @@ CompileFlags: { Add: [foo, bar] }
Diagnostics:
ClangTidy:
CheckOptions:
- IgnoreMacros: true
example-check.ExampleOption: 0
UnusedIncludes: Strict
)yaml";
@@ -83,8 +82,7 @@ CompileFlags: { Add: [foo, bar] }
ASSERT_TRUE(Results[2].Index.Background);
EXPECT_EQ("Skip", **Results[2].Index.Background);
EXPECT_THAT(Results[3].Diagnostics.ClangTidy.CheckOptions,
- ElementsAre(PairVal("IgnoreMacros", "true"),
- PairVal("example-check.ExampleOption", "0")));
+ ElementsAre(PairVal("example-check.ExampleOption", "0")));
EXPECT_TRUE(Results[3].Diagnostics.UnusedIncludes);
EXPECT_EQ("Strict", **Results[3].Diagnostics.UnusedIncludes);
}
diff --git a/clang-tools-extra/docs/ReleaseNotes.rst b/clang-tools-extra/docs/ReleaseNotes.rst
index 32e4dfb8aa329..13ee726f3016e 100644
--- a/clang-tools-extra/docs/ReleaseNotes.rst
+++ b/clang-tools-extra/docs/ReleaseNotes.rst
@@ -126,6 +126,11 @@ Improvements to clang-tidy
- Improved :program:`clang-tidy` option `-quiet` by suppressing diagnostic
count messages.
+- Removed :program:`clang-tidy`'s global options `IgnoreMacros` and
+ `StrictMode`, which were documented as deprecated since
+ :program:`clang-tidy` 20. Users should use the check-specific options of the
+ same name instead.
+
New checks
^^^^^^^^^^
diff --git a/clang-tools-extra/test/clang-tidy/checkers/readability/function-cognitive-complexity-flags.cpp b/clang-tools-extra/test/clang-tidy/checkers/readability/function-cognitive-complexity-flags.cpp
index 35040f3241560..196f3181141f9 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/readability/function-cognitive-complexity-flags.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/readability/function-cognitive-complexity-flags.cpp
@@ -11,16 +11,10 @@
// RUN: {readability-function-cognitive-complexity.Threshold: 0, \
// RUN: readability-function-cognitive-complexity.IgnoreMacros: "true", \
// RUN: readability-function-cognitive-complexity.DescribeBasicIncrements: "false"}}'
-// RUN: %check_clang_tidy -check-suffix=GLOBAL-IGNORE-MACROS %s readability-function-cognitive-complexity %t -- \
-// RUN: -config='{CheckOptions: \
-// RUN: {readability-function-cognitive-complexity.Threshold: 0, \
-// RUN: IgnoreMacros: "true", \
-// RUN: readability-function-cognitive-complexity.DescribeBasicIncrements: "false"}}'
void func_of_complexity_4() {
// CHECK-NOTES: :[[@LINE-1]]:6: warning: function 'func_of_complexity_4' has cognitive complexity of 4 (threshold 0) [readability-function-cognitive-complexity]
// CHECK-NOTES-IGNORE-MACROS: :[[@LINE-2]]:6: warning: function 'func_of_complexity_4' has cognitive complexity of 4 (threshold 0) [readability-function-cognitive-complexity]
- // CHECK-NOTES-GLOBAL-IGNORE-MACROS: :[[@LINE-3]]:6: warning: function 'func_of_complexity_4' has cognitive complexity of 4 (threshold 0) [readability-function-cognitive-complexity]
if (1) {
if (1) {
}
@@ -43,7 +37,6 @@ void function_with_macro() {
// CHECK-NOTES: :[[@LINE-1]]:6: warning: function 'function_with_macro' has cognitive complexity of 11 (threshold 0) [readability-function-cognitive-complexity]
// CHECK-NOTES-THRESHOLD5: :[[@LINE-2]]:6: warning: function 'function_with_macro' has cognitive complexity of 11 (threshold 5) [readability-function-cognitive-complexity]
// CHECK-NOTES-IGNORE-MACROS: :[[@LINE-3]]:6: warning: function 'function_with_macro' has cognitive complexity of 1 (threshold 0) [readability-function-cognitive-complexity]
- // CHECK-NOTES-GLOBAL-IGNORE-MACROS: :[[@LINE-4]]:6: warning: function 'function_with_macro' has cognitive complexity of 11 (threshold 0) [readability-function-cognitive-complexity]
MacroOfComplexity10;
@@ -62,7 +55,6 @@ void function_with_macro() {
void func_macro_1() {
// CHECK-NOTES: :[[@LINE-1]]:6: warning: function 'func_macro_1' has cognitive complexity of 2 (threshold 0) [readability-function-cognitive-complexity]
// CHECK-NOTES-IGNORE-MACROS: :[[@LINE-2]]:6: warning: function 'func_macro_1' has cognitive complexity of 1 (threshold 0) [readability-function-cognitive-complexity]
- // CHECK-NOTES-GLOBAL-IGNORE-MACROS: :[[@LINE-3]]:6: warning: function 'func_macro_1' has cognitive complexity of 2 (threshold 0) [readability-function-cognitive-complexity]
if (1) {
}
@@ -72,7 +64,6 @@ void func_macro_1() {
void func_macro_2() {
// CHECK-NOTES: :[[@LINE-1]]:6: warning: function 'func_macro_2' has cognitive complexity of 4 (threshold 0) [readability-function-cognitive-complexity]
// CHECK-NOTES-IGNORE-MACROS: :[[@LINE-2]]:6: warning: function 'func_macro_2' has cognitive complexity of 1 (threshold 0) [readability-function-cognitive-complexity]
- // CHECK-NOTES-GLOBAL-IGNORE-MACROS: :[[@LINE-3]]:6: warning: function 'func_macro_2' has cognitive complexity of 4 (threshold 0) [readability-function-cognitive-complexity]
if (1) {
}
diff --git a/clang-tools-extra/test/clang-tidy/infrastructure/Inputs/config-files/4/44/.clang-tidy b/clang-tools-extra/test/clang-tidy/infrastructure/Inputs/config-files/4/44/.clang-tidy
index eb92c1146d6a8..fb5ba6fcad599 100644
--- a/clang-tools-extra/test/clang-tidy/infrastructure/Inputs/config-files/4/44/.clang-tidy
+++ b/clang-tools-extra/test/clang-tidy/infrastructure/Inputs/config-files/4/44/.clang-tidy
@@ -2,5 +2,5 @@ InheritParentConfig: true
Checks: 'llvm-qualified-auto'
CheckOptions:
modernize-loop-convert.MaxCopySize: '20'
+ modernize-use-using.IgnoreMacros: 'false'
llvm-qualified-auto.AddConstToQualified: 'true'
- IgnoreMacros: 'false'
diff --git a/clang-tools-extra/test/clang-tidy/infrastructure/Inputs/config-files/4/key-dict/.clang-tidy b/clang-tools-extra/test/clang-tidy/infrastructure/Inputs/config-files/4/key-dict/.clang-tidy
index 3abef4360d8d6..fb5ba6fcad599 100644
--- a/clang-tools-extra/test/clang-tidy/infrastructure/Inputs/config-files/4/key-dict/.clang-tidy
+++ b/clang-tools-extra/test/clang-tidy/infrastructure/Inputs/config-files/4/key-dict/.clang-tidy
@@ -2,6 +2,5 @@ InheritParentConfig: true
Checks: 'llvm-qualified-auto'
CheckOptions:
modernize-loop-convert.MaxCopySize: '20'
+ modernize-use-using.IgnoreMacros: 'false'
llvm-qualified-auto.AddConstToQualified: 'true'
- IgnoreMacros: 'false'
-
diff --git a/clang-tools-extra/test/clang-tidy/infrastructure/deprecation-global-option.cpp b/clang-tools-extra/test/clang-tidy/infrastructure/deprecation-global-option.cpp
deleted file mode 100644
index 4c9854d221832..0000000000000
--- a/clang-tools-extra/test/clang-tidy/infrastructure/deprecation-global-option.cpp
+++ /dev/null
@@ -1,3 +0,0 @@
-// RUN: clang-tidy %s --config="{CheckOptions:{StrictMode: true}}" -checks="-*,modernize-use-std-format" | FileCheck %s
-
-// CHECK: warning: global option 'StrictMode' is deprecated, please use 'modernize-use-std-format.StrictMode' instead. [clang-tidy-config]
diff --git a/clang-tools-extra/test/clang-tidy/infrastructure/verify-config.cpp b/clang-tools-extra/test/clang-tidy/infrastructure/verify-config.cpp
index 30d49336bb4df..ed3febee5940e 100644
--- a/clang-tools-extra/test/clang-tidy/infrastructure/verify-config.cpp
+++ b/clang-tools-extra/test/clang-tidy/infrastructure/verify-config.cpp
@@ -5,15 +5,14 @@
// RUN: --checks='-*,bad*glob,llvm*,llvm-includeorder,my-made-up-check' --config='{Checks: "readability-else-after-ret", \
// RUN: HeaderFileExtensions: ["h", "hh", "hpp"], \
// RUN: ImplementationFileExtensions: ["c", "cc", "hpp"], \
-// RUN: CheckOptions: {IgnoreMacros: true, \
-// RUN: StriceMode: true, \
+// RUN: CheckOptions: {InvalidOption: true, \
// RUN: modernize-lop-convert.UseCxx20ReverseRanges: true \
// RUN: }}' 2>&1 | FileCheck %s \
// RUN: -check-prefix=CHECK-VERIFY -implicit-check-not='{{warning|error}}:'
// CHECK-VERIFY-DAG: command-line option '-config': warning: unknown check 'readability-else-after-ret'; did you mean 'readability-else-after-return' [-verify-config]
// CHECK-VERIFY-DAG: command-line option '-config': warning: unknown check option 'modernize-lop-convert.UseCxx20ReverseRanges'; did you mean 'modernize-loop-convert.UseCxx20ReverseRanges' [-verify-config]
-// CHECK-VERIFY-DAG: command-line option '-config': warning: unknown check option 'StriceMode'; did you mean 'StrictMode' [-verify-config]
+// CHECK-VERIFY-DAG: command-line option '-config': warning: unknown check option 'InvalidOption' [-verify-config]
// CHECK-VERIFY-DAG: command-line option '-config': warning: HeaderFileExtension 'hpp' is the same as ImplementationFileExtension 'hpp' [-verify-config]
// CHECK-VERIFY: command-line option '-checks': warning: check glob 'bad*glob' doesn't match any known check [-verify-config]
// CHECK-VERIFY: command-line option '-checks': warning: unknown check 'llvm-includeorder'; did you mean 'llvm-include-order' [-verify-config]
@@ -37,4 +36,3 @@
// RUN: echo -e 'Checks: "-*,clang-analyzer-optin.cplusplus.UninitializedObject"\nCheckOptions:\n clang-analyzer-optin.cplusplus.UninitializedObject.Pedantic: true' > %t.MyClangTidyConfigCSABad
// RUN: not clang-tidy --verify-config --config-file=%t.MyClangTidyConfigCSABad 2>&1 | FileCheck %s -check-prefix=CHECK-VERIFY-CSA-BAD -implicit-check-not='{{warnings|error}}'
// CHECK-VERIFY-CSA-BAD: command-line option '-config': warning: unknown check option 'clang-analyzer-optin.cplusplus.UninitializedObject.Pedantic'; did you mean 'clang-analyzer-optin.cplusplus.UninitializedObject:Pedantic' [-verify-config]
-
>From 155b12c83045bd64099afdf1933dcd8397d7711f Mon Sep 17 00:00:00 2001
From: Carlos Galvez <carlosgalvezp at gmail.com>
Date: Fri, 5 Sep 2025 20:39:31 +0200
Subject: [PATCH 2/2] Update clang-tools-extra/docs/ReleaseNotes.rst
Co-authored-by: Baranov Victor <bar.victor.2002 at gmail.com>
---
clang-tools-extra/docs/ReleaseNotes.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/clang-tools-extra/docs/ReleaseNotes.rst b/clang-tools-extra/docs/ReleaseNotes.rst
index 13ee726f3016e..3507c634426b9 100644
--- a/clang-tools-extra/docs/ReleaseNotes.rst
+++ b/clang-tools-extra/docs/ReleaseNotes.rst
@@ -128,7 +128,7 @@ Improvements to clang-tidy
- Removed :program:`clang-tidy`'s global options `IgnoreMacros` and
`StrictMode`, which were documented as deprecated since
- :program:`clang-tidy` 20. Users should use the check-specific options of the
+ :program:`clang-tidy-20`. Users should use the check-specific options of the
same name instead.
New checks
More information about the cfe-commits
mailing list