[PATCH] D32294: [clang-tidy] run-clang-tidy.py: check if clang-apply-replacements succeeds
Jakub Kuderski via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Apr 20 12:32:02 PDT 2017
kuhar updated this revision to Diff 96001.
kuhar added a comment.
Use python3 printing. Move exception handling out of apply_fixes.
Now, the code prints the following on failure:
Applying fixes ...
Error applying fixes. Is clang-apply-replacements binary correctly specified?
Traceback (most recent call last):
File "/home/kuhar/projects/llvm/tools/clang/tools/extra/clang-tidy/tool/run-clang-tidy.py", line 217, in main
apply_fixes(args, tmpdir)
File "/home/kuhar/projects/llvm/tools/clang/tools/extra/clang-tidy/tool/run-clang-tidy.py", line 98, in apply_fixes
subprocess.call(invocation)
File "/usr/lib/python2.7/subprocess.py", line 523, in call
return Popen(*popenargs, **kwargs).wait()
File "/usr/lib/python2.7/subprocess.py", line 711, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1343, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
I hope that suggesting problem with clang-apply-replacements binary and printing stack trace is more useful.
https://reviews.llvm.org/D32294
Files:
clang-tidy/tool/run-clang-tidy.py
Index: clang-tidy/tool/run-clang-tidy.py
===================================================================
--- clang-tidy/tool/run-clang-tidy.py
+++ clang-tidy/tool/run-clang-tidy.py
@@ -34,6 +34,7 @@
http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html
"""
+from __future__ import print_function
import argparse
import json
import multiprocessing
@@ -45,14 +46,15 @@
import sys
import tempfile
import threading
+import traceback
def find_compilation_database(path):
"""Adjusts the directory until a compilation database is found."""
result = './'
while not os.path.isfile(os.path.join(result, path)):
if os.path.realpath(result) == '/':
- print 'Error: could not find compilation database.'
+ print('Error: could not find compilation database.')
sys.exit(1)
result += '../'
return os.path.realpath(result)
@@ -94,7 +96,6 @@
invocation.append('-format')
invocation.append(tmpdir)
subprocess.call(invocation)
- shutil.rmtree(tmpdir)
def run_tidy(args, tmpdir, build_path, queue):
@@ -164,9 +165,9 @@
if args.checks:
invocation.append('-checks=' + args.checks)
invocation.append('-')
- print subprocess.check_output(invocation)
+ print(subprocess.check_output(invocation))
except:
- print >>sys.stderr, "Unable to run clang-tidy."
+ print("Unable to run clang-tidy.", file=sys.stderr)
sys.exit(1)
# Load the database and extract all files.
@@ -204,14 +205,22 @@
except KeyboardInterrupt:
# This is a sad hack. Unfortunately subprocess goes
# bonkers with ctrl-c and we start forking merrily.
- print '\nCtrl-C detected, goodbye.'
+ print('\nCtrl-C detected, goodbye.')
if args.fix:
shutil.rmtree(tmpdir)
os.kill(0, 9)
if args.fix:
- print 'Applying fixes ...'
- apply_fixes(args, tmpdir)
+ print('Applying fixes ...')
+
+ try:
+ apply_fixes(args, tmpdir)
+ except:
+ print('Error applying fixes. Is clang-apply-replacements binary '
+ 'correctly specified?\n', file=sys.stderr)
+ traceback.print_exc()
+
+ shutil.rmtree(tmpdir)
if __name__ == '__main__':
main()
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D32294.96001.patch
Type: text/x-patch
Size: 2170 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20170420/8c011622/attachment.bin>
More information about the cfe-commits
mailing list