[clang-tidy] Support relative paths in run-clang-tidy.py
authorGabor Horvath <xazax.hun@gmail.com>
Mon, 6 Nov 2017 10:36:02 +0000 (10:36 +0000)
committerGabor Horvath <xazax.hun@gmail.com>
Mon, 6 Nov 2017 10:36:02 +0000 (10:36 +0000)
Unfortunately, these python scripts are not tested currently. I did the testing
manually on LLVM by editing the CMake generated compilation database to
contain relative paths for some of the files.

Differential Revision: https://reviews.llvm.org/D39603

llvm-svn: 317468

clang-tools-extra/clang-tidy/tool/run-clang-tidy.py

index 7792c5a..15b21d7 100755 (executable)
@@ -68,6 +68,12 @@ def find_compilation_database(path):
   return os.path.realpath(result)
 
 
+def make_absolute(f, directory):
+  if os.path.isabs(f):
+    return f
+  return os.path.normpath(os.path.join(directory, f))
+
+
 def get_tidy_invocation(f, clang_tidy_binary, checks, tmpdir, build_path,
                         header_filter, extra_arg, extra_arg_before, quiet):
   """Gets a command line for clang-tidy."""
@@ -223,7 +229,8 @@ def main():
 
   # Load the database and extract all files.
   database = json.load(open(os.path.join(build_path, db_path)))
-  files = [entry['file'] for entry in database]
+  files = [make_absolute(entry['file'], entry['directory'])
+           for entry in database]
 
   max_task = args.j
   if max_task == 0: