[clang-tools-extra] [run-clang-tidy.py] Add -directory-filter option to run-clang-tidy.py (PR #89302)

via cfe-commits cfe-commits at lists.llvm.org
Thu Apr 18 13:28:28 PDT 2024


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang-tidy

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

Author: FailCake (edunad)

<details>
<summary>Changes</summary>

Similar to https://github.com/llvm/llvm-project/pull/82416, but it allows you to filter full directories without the need of a complex regex in `-source-filter`

For example:
```
python run-clang-tidy.py -fix -p \"build\" -j 12 -directory-filter build -directory-filter bin -directory-filter tests
```

To filter out `bin`, `build` and `tests` folders

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


1 Files Affected:

- (modified) clang-tools-extra/clang-tidy/tool/run-clang-tidy.py (+10-1) 


``````````diff
diff --git a/clang-tools-extra/clang-tidy/tool/run-clang-tidy.py b/clang-tools-extra/clang-tidy/tool/run-clang-tidy.py
index 1bd4a5b283091c..4ef9b0a8ebf5e2 100755
--- a/clang-tools-extra/clang-tidy/tool/run-clang-tidy.py
+++ b/clang-tools-extra/clang-tidy/tool/run-clang-tidy.py
@@ -307,6 +307,14 @@ def main():
         "source files from compilation database to output "
         "diagnostics from.",
     )
+    parser.add_argument(
+        "-directory-filter",
+        dest="directory_filter",
+        action="append",
+        default=[],
+        help="List of directories matching the names of the "
+        "compilation database to filter.",
+    )
     parser.add_argument(
         "-line-filter",
         default=None,
@@ -488,6 +496,7 @@ def main():
 
     # Build up a big regexy filter from all command line arguments.
     file_name_re = re.compile("|".join(args.files))
+    directory_filters_re = re.compile("|".join(args.directory_filters))
 
     return_code = 0
     try:
@@ -514,7 +523,7 @@ def main():
 
         # Fill the queue with files.
         for name in files:
-            if file_name_re.search(name):
+            if file_name_re.search(name) and not directory_filters_re.search(name):
                 task_queue.put(name)
 
         # Wait for all threads to be done.

``````````

</details>


https://github.com/llvm/llvm-project/pull/89302


More information about the cfe-commits mailing list