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 <twiederh@xxxxxxxxxx> --- 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