https://github.com/zeyi2 updated 
https://github.com/llvm/llvm-project/pull/189522

>From 2d64b22624c32e88a1c4fb719518e0a300003426 Mon Sep 17 00:00:00 2001
From: mtx <[email protected]>
Date: Tue, 31 Mar 2026 10:52:58 +0800
Subject: [PATCH 1/2] [clang-tidy] Add helper for deprecated check aliases

---
 .../clang-tidy/ClangTidyCheck.cpp             |  5 ++
 clang-tools-extra/clang-tidy/ClangTidyCheck.h |  4 ++
 .../clang-tidy/ClangTidyOptionsTest.cpp       | 71 ++++++++++++++++++-
 3 files changed, 79 insertions(+), 1 deletion(-)

diff --git a/clang-tools-extra/clang-tidy/ClangTidyCheck.cpp 
b/clang-tools-extra/clang-tidy/ClangTidyCheck.cpp
index 30ba36737571a..6d9b27b03dfa8 100644
--- a/clang-tools-extra/clang-tidy/ClangTidyCheck.cpp
+++ b/clang-tools-extra/clang-tidy/ClangTidyCheck.cpp
@@ -46,6 +46,11 @@ void ClangTidyCheck::run(const 
ast_matchers::MatchFinder::MatchResult &Result) {
   check(Result);
 }
 
+bool ClangTidyCheck::isDeprecatedAlias(StringRef CanonicalName) const {
+  return Context->isCheckEnabled(CheckName) &&
+         !Context->isCheckEnabled(CanonicalName);
+}
+
 ClangTidyCheck::OptionsView::OptionsView(
     StringRef CheckName, const ClangTidyOptions::OptionMap &CheckOptions,
     ClangTidyContext *Context)
diff --git a/clang-tools-extra/clang-tidy/ClangTidyCheck.h 
b/clang-tools-extra/clang-tidy/ClangTidyCheck.h
index 905e419cdf0ca..1641c10b75a07 100644
--- a/clang-tools-extra/clang-tidy/ClangTidyCheck.h
+++ b/clang-tools-extra/clang-tidy/ClangTidyCheck.h
@@ -497,6 +497,10 @@ class ClangTidyCheck : public 
ast_matchers::MatchFinder::MatchCallback {
     return Context->areDiagsSelfContained();
   }
   StringRef getID() const override { return CheckName; }
+
+  /// Returns true when this check instance is running under a deprecated
+  /// name and the user should be prompted to migrate to CanonicalName.
+  bool isDeprecatedAlias(StringRef CanonicalName) const;
 };
 
 /// Read a named option from the ``Context`` and parse it as a bool.
diff --git a/clang-tools-extra/unittests/clang-tidy/ClangTidyOptionsTest.cpp 
b/clang-tools-extra/unittests/clang-tidy/ClangTidyOptionsTest.cpp
index aee3313f2263b..f6b5a2031b95e 100644
--- a/clang-tools-extra/unittests/clang-tidy/ClangTidyOptionsTest.cpp
+++ b/clang-tools-extra/unittests/clang-tidy/ClangTidyOptionsTest.cpp
@@ -298,7 +298,9 @@ TEST(ParseConfiguration, CollectDiags) {
 namespace {
 class TestCheck : public ClangTidyCheck {
 public:
-  TestCheck(ClangTidyContext *Context) : ClangTidyCheck("test", Context) {}
+  TestCheck(ClangTidyContext *Context) : TestCheck("test", Context) {}
+  TestCheck(StringRef Name, ClangTidyContext *Context)
+      : ClangTidyCheck(Name, Context) {}
 
   template <typename... Args> auto getLocal(Args &&... Arguments) {
     return Options.get(std::forward<Args>(Arguments)...);
@@ -317,6 +319,10 @@ class TestCheck : public ClangTidyCheck {
   auto getIntGlobal(Args &&... Arguments) {
     return Options.getLocalOrGlobal<IntType>(std::forward<Args>(Arguments)...);
   }
+
+  bool usesDeprecatedAlias(StringRef CanonicalName) const {
+    return isDeprecatedAlias(CanonicalName);
+  }
 };
 
 #define CHECK_VAL(Value, Expected)                                             
\
@@ -359,6 +365,69 @@ TEST(CheckOptionsValidation, MissingOptions) {
   EXPECT_TRUE(DiagConsumer.take().empty());
 }
 
+TEST(CheckOptionsValidation, DeprecatedAliasHelper) {
+  ClangTidyOptions Options;
+  Options.Checks = "performance-faster-string-find";
+
+  ClangTidyContext Context(std::make_unique<DefaultOptionsProvider>(
+      ClangTidyGlobalOptions(), Options));
+  TestCheck TestCheck("performance-faster-string-find", &Context);
+
+  EXPECT_TRUE(TestCheck.usesDeprecatedAlias(
+      "performance-prefer-single-char-overloads"));
+}
+
+TEST(CheckOptionsValidation, DeprecatedAliasHelperDisabledByCanonicalCheck) {
+  ClangTidyOptions Options;
+  Options.Checks =
+      
"performance-faster-string-find,performance-prefer-single-char-overloads";
+
+  ClangTidyContext Context(std::make_unique<DefaultOptionsProvider>(
+      ClangTidyGlobalOptions(), Options));
+  TestCheck TestCheck("performance-faster-string-find", &Context);
+
+  EXPECT_FALSE(TestCheck.usesDeprecatedAlias(
+      "performance-prefer-single-char-overloads"));
+}
+
+TEST(CheckOptionsValidation, DeprecatedAliasHelperEnabledByWildcardAlias) {
+  ClangTidyOptions Options;
+  Options.Checks = "performance-faster*";
+
+  ClangTidyContext Context(std::make_unique<DefaultOptionsProvider>(
+      ClangTidyGlobalOptions(), Options));
+  TestCheck TestCheck("performance-faster-string-find", &Context);
+
+  EXPECT_TRUE(TestCheck.usesDeprecatedAlias(
+      "performance-prefer-single-char-overloads"));
+}
+
+TEST(CheckOptionsValidation,
+     DeprecatedAliasHelperDisabledByWildcardAliasAndCanonicalCheck) {
+  ClangTidyOptions Options;
+  Options.Checks =
+      "performance-faster*,performance-prefer-single-char-overloads";
+
+  ClangTidyContext Context(std::make_unique<DefaultOptionsProvider>(
+      ClangTidyGlobalOptions(), Options));
+  TestCheck TestCheck("performance-faster-string-find", &Context);
+
+  EXPECT_FALSE(TestCheck.usesDeprecatedAlias(
+      "performance-prefer-single-char-overloads"));
+}
+
+TEST(CheckOptionsValidation, DeprecatedAliasHelperDisabledByWildcard) {
+  ClangTidyOptions Options;
+  Options.Checks = "performance-*";
+
+  ClangTidyContext Context(std::make_unique<DefaultOptionsProvider>(
+      ClangTidyGlobalOptions(), Options));
+  TestCheck TestCheck("performance-faster-string-find", &Context);
+
+  EXPECT_FALSE(TestCheck.usesDeprecatedAlias(
+      "performance-prefer-single-char-overloads"));
+}
+
 TEST(CheckOptionsValidation, ValidIntOptions) {
   ClangTidyOptions Options;
   auto &CheckOptions = Options.CheckOptions;

>From 128d43065648bff917abbc35a48ab6982a1b521c Mon Sep 17 00:00:00 2001
From: mtx <[email protected]>
Date: Sat, 4 Apr 2026 12:48:52 +0800
Subject: [PATCH 2/2] better?

---
 .../clang-tidy/ClangTidyCheck.cpp             |  5 --
 clang-tools-extra/clang-tidy/ClangTidyCheck.h |  4 --
 .../clang-tidy/utils/CheckUtils.h             | 19 +++++++
 .../clang-tidy/ClangTidyOptionsTest.cpp       | 49 +++++++++----------
 4 files changed, 41 insertions(+), 36 deletions(-)
 create mode 100644 clang-tools-extra/clang-tidy/utils/CheckUtils.h

diff --git a/clang-tools-extra/clang-tidy/ClangTidyCheck.cpp 
b/clang-tools-extra/clang-tidy/ClangTidyCheck.cpp
index 6d9b27b03dfa8..30ba36737571a 100644
--- a/clang-tools-extra/clang-tidy/ClangTidyCheck.cpp
+++ b/clang-tools-extra/clang-tidy/ClangTidyCheck.cpp
@@ -46,11 +46,6 @@ void ClangTidyCheck::run(const 
ast_matchers::MatchFinder::MatchResult &Result) {
   check(Result);
 }
 
-bool ClangTidyCheck::isDeprecatedAlias(StringRef CanonicalName) const {
-  return Context->isCheckEnabled(CheckName) &&
-         !Context->isCheckEnabled(CanonicalName);
-}
-
 ClangTidyCheck::OptionsView::OptionsView(
     StringRef CheckName, const ClangTidyOptions::OptionMap &CheckOptions,
     ClangTidyContext *Context)
diff --git a/clang-tools-extra/clang-tidy/ClangTidyCheck.h 
b/clang-tools-extra/clang-tidy/ClangTidyCheck.h
index 1641c10b75a07..905e419cdf0ca 100644
--- a/clang-tools-extra/clang-tidy/ClangTidyCheck.h
+++ b/clang-tools-extra/clang-tidy/ClangTidyCheck.h
@@ -497,10 +497,6 @@ class ClangTidyCheck : public 
ast_matchers::MatchFinder::MatchCallback {
     return Context->areDiagsSelfContained();
   }
   StringRef getID() const override { return CheckName; }
-
-  /// Returns true when this check instance is running under a deprecated
-  /// name and the user should be prompted to migrate to CanonicalName.
-  bool isDeprecatedAlias(StringRef CanonicalName) const;
 };
 
 /// Read a named option from the ``Context`` and parse it as a bool.
diff --git a/clang-tools-extra/clang-tidy/utils/CheckUtils.h 
b/clang-tools-extra/clang-tidy/utils/CheckUtils.h
new file mode 100644
index 0000000000000..e7809debcc925
--- /dev/null
+++ b/clang-tools-extra/clang-tidy/utils/CheckUtils.h
@@ -0,0 +1,19 @@
+#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_UTILS_CHECKUTILS_H
+#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_UTILS_CHECKUTILS_H
+
+#include "../ClangTidyDiagnosticConsumer.h"
+
+namespace clang::tidy::utils {
+
+/// Returns true when a check is running under a deprecated name and the user
+/// should be prompted to migrate to CanonicalName.
+inline bool isDeprecatedAlias(const ClangTidyContext &Context,
+                              StringRef DeprecatedName,
+                              StringRef CanonicalName) {
+  return Context.isCheckEnabled(DeprecatedName) &&
+         !Context.isCheckEnabled(CanonicalName);
+}
+
+} // namespace clang::tidy::utils
+
+#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_UTILS_CHECKUTILS_H
diff --git a/clang-tools-extra/unittests/clang-tidy/ClangTidyOptionsTest.cpp 
b/clang-tools-extra/unittests/clang-tidy/ClangTidyOptionsTest.cpp
index f6b5a2031b95e..af1da978741b9 100644
--- a/clang-tools-extra/unittests/clang-tidy/ClangTidyOptionsTest.cpp
+++ b/clang-tools-extra/unittests/clang-tidy/ClangTidyOptionsTest.cpp
@@ -1,6 +1,7 @@
 #include "ClangTidyOptions.h"
 #include "ClangTidyCheck.h"
 #include "ClangTidyDiagnosticConsumer.h"
+#include "utils/CheckUtils.h"
 #include "llvm/ADT/StringExtras.h"
 #include "llvm/Support/ScopedPrinter.h"
 #include "llvm/Testing/Annotations/Annotations.h"
@@ -298,9 +299,7 @@ TEST(ParseConfiguration, CollectDiags) {
 namespace {
 class TestCheck : public ClangTidyCheck {
 public:
-  TestCheck(ClangTidyContext *Context) : TestCheck("test", Context) {}
-  TestCheck(StringRef Name, ClangTidyContext *Context)
-      : ClangTidyCheck(Name, Context) {}
+  TestCheck(ClangTidyContext *Context) : ClangTidyCheck("test", Context) {}
 
   template <typename... Args> auto getLocal(Args &&... Arguments) {
     return Options.get(std::forward<Args>(Arguments)...);
@@ -319,10 +318,6 @@ class TestCheck : public ClangTidyCheck {
   auto getIntGlobal(Args &&... Arguments) {
     return Options.getLocalOrGlobal<IntType>(std::forward<Args>(Arguments)...);
   }
-
-  bool usesDeprecatedAlias(StringRef CanonicalName) const {
-    return isDeprecatedAlias(CanonicalName);
-  }
 };
 
 #define CHECK_VAL(Value, Expected)                                             
\
@@ -365,67 +360,67 @@ TEST(CheckOptionsValidation, MissingOptions) {
   EXPECT_TRUE(DiagConsumer.take().empty());
 }
 
-TEST(CheckOptionsValidation, DeprecatedAliasHelper) {
+TEST(CheckOptionsValidation, DeprecatedAliasUtils) {
   ClangTidyOptions Options;
   Options.Checks = "performance-faster-string-find";
 
   ClangTidyContext Context(std::make_unique<DefaultOptionsProvider>(
       ClangTidyGlobalOptions(), Options));
-  TestCheck TestCheck("performance-faster-string-find", &Context);
 
-  EXPECT_TRUE(TestCheck.usesDeprecatedAlias(
-      "performance-prefer-single-char-overloads"));
+  EXPECT_TRUE(
+      utils::isDeprecatedAlias(Context, "performance-faster-string-find",
+                               "performance-prefer-single-char-overloads"));
 }
 
-TEST(CheckOptionsValidation, DeprecatedAliasHelperDisabledByCanonicalCheck) {
+TEST(CheckOptionsValidation, DeprecatedAliasUtilsDisabledByCanonicalCheck) {
   ClangTidyOptions Options;
   Options.Checks =
       
"performance-faster-string-find,performance-prefer-single-char-overloads";
 
   ClangTidyContext Context(std::make_unique<DefaultOptionsProvider>(
       ClangTidyGlobalOptions(), Options));
-  TestCheck TestCheck("performance-faster-string-find", &Context);
 
-  EXPECT_FALSE(TestCheck.usesDeprecatedAlias(
-      "performance-prefer-single-char-overloads"));
+  EXPECT_FALSE(
+      utils::isDeprecatedAlias(Context, "performance-faster-string-find",
+                               "performance-prefer-single-char-overloads"));
 }
 
-TEST(CheckOptionsValidation, DeprecatedAliasHelperEnabledByWildcardAlias) {
+TEST(CheckOptionsValidation, DeprecatedAliasUtilsEnabledByWildcardAlias) {
   ClangTidyOptions Options;
   Options.Checks = "performance-faster*";
 
   ClangTidyContext Context(std::make_unique<DefaultOptionsProvider>(
       ClangTidyGlobalOptions(), Options));
-  TestCheck TestCheck("performance-faster-string-find", &Context);
 
-  EXPECT_TRUE(TestCheck.usesDeprecatedAlias(
-      "performance-prefer-single-char-overloads"));
+  EXPECT_TRUE(
+      utils::isDeprecatedAlias(Context, "performance-faster-string-find",
+                               "performance-prefer-single-char-overloads"));
 }
 
 TEST(CheckOptionsValidation,
-     DeprecatedAliasHelperDisabledByWildcardAliasAndCanonicalCheck) {
+     DeprecatedAliasUtilsDisabledByWildcardAliasAndCanonicalCheck) {
   ClangTidyOptions Options;
   Options.Checks =
       "performance-faster*,performance-prefer-single-char-overloads";
 
   ClangTidyContext Context(std::make_unique<DefaultOptionsProvider>(
       ClangTidyGlobalOptions(), Options));
-  TestCheck TestCheck("performance-faster-string-find", &Context);
 
-  EXPECT_FALSE(TestCheck.usesDeprecatedAlias(
-      "performance-prefer-single-char-overloads"));
+  EXPECT_FALSE(
+      utils::isDeprecatedAlias(Context, "performance-faster-string-find",
+                               "performance-prefer-single-char-overloads"));
 }
 
-TEST(CheckOptionsValidation, DeprecatedAliasHelperDisabledByWildcard) {
+TEST(CheckOptionsValidation, DeprecatedAliasUtilsDisabledByWildcard) {
   ClangTidyOptions Options;
   Options.Checks = "performance-*";
 
   ClangTidyContext Context(std::make_unique<DefaultOptionsProvider>(
       ClangTidyGlobalOptions(), Options));
-  TestCheck TestCheck("performance-faster-string-find", &Context);
 
-  EXPECT_FALSE(TestCheck.usesDeprecatedAlias(
-      "performance-prefer-single-char-overloads"));
+  EXPECT_FALSE(
+      utils::isDeprecatedAlias(Context, "performance-faster-string-find",
+                               "performance-prefer-single-char-overloads"));
 }
 
 TEST(CheckOptionsValidation, ValidIntOptions) {

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to