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()
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()
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits