[libvirt PATCH 08/10] clang-tidy: Make list of checks explicit

Tim Wiederhake twiederh at redhat.com
Fri Feb 12 13:25:32 UTC 2021


Preparation for next patch.

Signed-off-by: Tim Wiederhake <twiederh at redhat.com>
---
 scripts/run-clang-tidy.py | 24 ++++++++++++++++++++----
 1 file changed, 20 insertions(+), 4 deletions(-)

diff --git a/scripts/run-clang-tidy.py b/scripts/run-clang-tidy.py
index 1d1038df0f..945a1f75d4 100755
--- a/scripts/run-clang-tidy.py
+++ b/scripts/run-clang-tidy.py
@@ -75,6 +75,7 @@ def run_clang_tidy(item):
     cmd = (
         "clang-tidy",
         "--warnings-as-errors=*",
+        "--checks=-*,%s" % ",".join(checks),
         "-p",
         item["directory"],
         item["file"])
@@ -90,7 +91,7 @@ def run_clang_tidy(item):
     }
 
 
-def cache_name(item):
+def cache_name(item, checks):
     if not args.cache:
         return None
 
@@ -117,6 +118,7 @@ def cache_name(item):
 
     hashsum = hashlib.sha256()
     hashsum.update(item["command"].encode())
+    hashsum.update("\n".join(checks).encode())
     hashsum.update(result.stdout.encode())
 
     basename = "".join([c if c.isalnum() else "_" for c in item["output"]])
@@ -145,7 +147,7 @@ def cache_write(filename, result):
         json.dump(result, f)
 
 
-def worker():
+def worker(checks):
     while True:
         item = items.get()
         if args.timeout and args.timeout < time.time():
@@ -156,7 +158,7 @@ def worker():
 
         os.chdir(item["directory"])
 
-        cache = cache_name(item)
+        cache = cache_name(item, checks)
         result = cache_read(cache)
         with lock:
             print(item["file"], "" if result is None else "(from cache)")
@@ -177,9 +179,19 @@ def worker():
         items.task_done()
 
 
+def list_checks():
+    output = subprocess.check_output(
+        ["clang-tidy", "-checks=*", "-list-checks"],
+        universal_newlines=True).split("\n")[1:]
+
+    output = [line.strip() for line in output]
+    return output
+
+
 args = parse_args()
 items = queue.Queue()
 lock = threading.Lock()
+checks = list_checks()
 findings = list()
 
 if args.cache:
@@ -189,8 +201,12 @@ if args.cache:
 if args.timeout:
     args.timeout = time.time() + args.timeout * 60
 
+print("Enabled checks:")
+for check in checks:
+    print("    %s" % check)
+
 for _ in range(args.thread_num):
-    threading.Thread(target=worker, daemon=True).start()
+    threading.Thread(target=worker, daemon=True, args=[checks]).start()
 
 with open(os.path.join(args.build_dir, "compile_commands.json")) as f:
     compile_commands = json.load(f)
-- 
2.26.2




More information about the libvir-list mailing list