Randomizing the order of files to scan has no impact for local use of the
script. The same holds true for use in the CI, if the amount of cached
files is big enough for the entire scan to finish before timeout.

If the cache is empty or not filled enough to ensure timely completion,
randomizing the order of files makes it more likely to spent time on caching
new files rather than hashing already cached files to check for the presence
of a cache file.

Signed-off-by: Tim Wiederhake <twied...@redhat.com>
---
 scripts/run-clang-tidy.py | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/scripts/run-clang-tidy.py b/scripts/run-clang-tidy.py
index 54eb0ea584..1d1038df0f 100755
--- a/scripts/run-clang-tidy.py
+++ b/scripts/run-clang-tidy.py
@@ -6,6 +6,7 @@ import json
 import multiprocessing
 import os
 import queue
+import random
 import re
 import shlex
 import subprocess
@@ -61,6 +62,11 @@ def parse_args():
         dest="allow_timeout",
         action="store_true",
         help="Do not treat timeout as failure if set")
+    parser.add_argument(
+        "--shuffle-input",
+        dest="shuffle_input",
+        action="store_true",
+        help="Randomize order of files to check")
 
     return parser.parse_args()
 
@@ -188,6 +194,8 @@ for _ in range(args.thread_num):
 
 with open(os.path.join(args.build_dir, "compile_commands.json")) as f:
     compile_commands = json.load(f)
+    if args.shuffle_input:
+        random.shuffle(compile_commands)
     for compile_command in compile_commands:
         items.put(compile_command)
 
-- 
2.26.2

Reply via email to