2e51e703c3
Add supernode vertex cache to account for long delta chains and modifications in the same module being independent of scanning of the nodes in the next iteration of the pulling mechanism.
57 lines
1.9 KiB
Python
Executable File
57 lines
1.9 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import argparse
|
|
import os
|
|
import subprocess
|
|
import sys
|
|
|
|
CLANG_TIDY_DIFF = "./tools/github/clang-tidy/clang-tidy-diff.py"
|
|
|
|
|
|
def check_clang_tidy():
|
|
try:
|
|
subprocess.run(["clang-tidy", "--version"], check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
|
except FileNotFoundError:
|
|
print("clang-tidy is not installed. Please install clang-tidy and try again.", file=sys.stderr)
|
|
sys.exit(1)
|
|
except subprocess.CalledProcessError:
|
|
print("Error while checking clang-tidy version.", file=sys.stderr)
|
|
sys.exit(1)
|
|
|
|
if not os.path.exists(CLANG_TIDY_DIFF):
|
|
print(f"Error can't find '{CLANG_TIDY_DIFF}'.", file=sys.stderr)
|
|
sys.exit(1)
|
|
|
|
|
|
def run_clang_tidy_on_files(compile_commands_path):
|
|
process1 = subprocess.Popen("git diff -U0 HEAD".split(), stdout=subprocess.PIPE)
|
|
process2 = subprocess.Popen(
|
|
f"{CLANG_TIDY_DIFF} -p1 -j 8 -path {compile_commands_path}".split(),
|
|
stdin=process1.stdout,
|
|
stdout=subprocess.PIPE,
|
|
)
|
|
process1.stdout.close() # Close the output pipe of the first process
|
|
output, err_output = process2.communicate() # Get the output from the second process
|
|
if process2.returncode != 0:
|
|
print("Error occurred in clang-tidy-diff command:")
|
|
if output:
|
|
print(output.decode().strip())
|
|
if err_output:
|
|
print(err_output.decode().strip(), file=sys.stderr)
|
|
sys.exit(1)
|
|
|
|
|
|
def main():
|
|
check_clang_tidy()
|
|
|
|
parser = argparse.ArgumentParser(description="Run clang-tidy on specified files.")
|
|
# parser.add_argument("file_paths", nargs="+", type=str, help="Paths to files to be checked.")
|
|
parser.add_argument("--compile_commands_path", type=str, required=True, help="Path to compile_commands.json.")
|
|
args = parser.parse_args()
|
|
|
|
run_clang_tidy_on_files(args.compile_commands_path)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|