llvmorg-github-actions[bot] wrote:

<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-clang-tools-extra

Author: Zeyi Xu (zeyi2)

<details>
<summary>Changes</summary>



---
Full diff: https://github.com/llvm/llvm-project/pull/237924.diff


3 Files Affected:

- (modified) clang-tools-extra/clang-tidy/misc/IncludeCleanerCheck.cpp (+4-2) 
- (modified) clang-tools-extra/docs/ReleaseNotes.md (+5) 
- (modified) clang-tools-extra/unittests/clang-tidy/IncludeCleanerTest.cpp 
(+15) 


``````````diff
diff --git a/clang-tools-extra/clang-tidy/misc/IncludeCleanerCheck.cpp 
b/clang-tools-extra/clang-tidy/misc/IncludeCleanerCheck.cpp
index 0097ea54ba5482..fc13b8aef2d8b2 100644
--- a/clang-tools-extra/clang-tidy/misc/IncludeCleanerCheck.cpp
+++ b/clang-tools-extra/clang-tidy/misc/IncludeCleanerCheck.cpp
@@ -111,8 +111,10 @@ bool IncludeCleanerCheck::shouldIgnore(const 
include_cleaner::Header &H) {
       return R.match(H.standard().name());
     case include_cleaner::Header::Verbatim:
       return R.match(H.verbatim().trim("<>\""));
-    case include_cleaner::Header::Physical:
-      return R.match(H.physical().getFileEntry().tryGetRealPathName());
+    case include_cleaner::Header::Physical: {
+      const StringRef Path = H.physical().getFileEntry().tryGetRealPathName();
+      return R.match(Path) || R.match(llvm::sys::path::convert_to_slash(Path));
+    }
     }
     llvm_unreachable("Unknown Header kind.");
   });
diff --git a/clang-tools-extra/docs/ReleaseNotes.md 
b/clang-tools-extra/docs/ReleaseNotes.md
index 679ca9ecbb4a39..63e036e123cb8c 100644
--- a/clang-tools-extra/docs/ReleaseNotes.md
+++ b/clang-tools-extra/docs/ReleaseNotes.md
@@ -274,6 +274,11 @@ infrastructure are described first, followed by 
tool-specific sections.
     instantiations, where the suggested `const` would break the move for
     instantiations with real move semantics.
 
+- Improved {doc}`misc-include-cleaner
+  <clang-tidy/checks/misc/include-cleaner>` check by matching
+  {option}`IgnoreHeaders` patterns containing `/` against header paths on
+  Windows.
+
 - Fixed an infinite loop in {doc}`misc-multiple-inheritance
   <clang-tidy/checks/misc/multiple-inheritance>` when checking a class that
   inherits from itself or has a circular inheritance graph.
diff --git a/clang-tools-extra/unittests/clang-tidy/IncludeCleanerTest.cpp 
b/clang-tools-extra/unittests/clang-tidy/IncludeCleanerTest.cpp
index 00576916492e16..ff75f9008e489f 100644
--- a/clang-tools-extra/unittests/clang-tidy/IncludeCleanerTest.cpp
+++ b/clang-tools-extra/unittests/clang-tidy/IncludeCleanerTest.cpp
@@ -89,6 +89,21 @@ TEST(IncludeCleanerCheckTest, SuppressUnusedIncludes) {
             "#pragma once"}}));
 }
 
+TEST(IncludeCleanerCheckTest, SuppressUnusedIncludesForwardSlashPattern) {
+  const char *Code = R"(
+#include "foo/qux.h"
+)";
+
+  std::vector<ClangTidyError> Errors;
+  ClangTidyOptions Opts;
+  Opts.CheckOptions["test-check-0.IgnoreHeaders"] = ".*/qux\\.h";
+  EXPECT_EQ(Code, runCheckOnCode<IncludeCleanerCheck>(
+                      Code, &Errors, "file.cpp", {}, Opts,
+                      {{appendPathFileSystemIndependent({"foo", "qux.h"}),
+                        "#pragma once"}}));
+  EXPECT_THAT(Errors.size(), testing::Eq(0U));
+}
+
 TEST(IncludeCleanerCheckTest, BasicMissingIncludes) {
   const char *PreCode = R"(
 #include "bar.h"

``````````

</details>


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

Reply via email to