X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/bd504ef0e0b883cdd7917b73b3574eb9ce669905..39236c6e673c41db228275375ab7fdb0f837b292:/tools/lldbmacros/core/syntax_checker.py diff --git a/tools/lldbmacros/core/syntax_checker.py b/tools/lldbmacros/core/syntax_checker.py new file mode 100755 index 000000000..223b1e988 --- /dev/null +++ b/tools/lldbmacros/core/syntax_checker.py @@ -0,0 +1,51 @@ +#!/usr/bin/env python + +helpdoc = """ +A simple utility that verifies the syntax for python scripts. +The checks it does are : + * Check for 'tab' characters in .py files + * Compile errors in py sources +Usage: + python syntax_checker.py [ ..] +""" +import py_compile +import sys +import os +import re + +tabs_search_rex = re.compile("^\s*\t+",re.MULTILINE|re.DOTALL) + +if __name__ == "__main__": + if len(sys.argv) < 2: + print "Error: Unknown arguments" + print helpdoc + sys.exit(1) + for fname in sys.argv[1:]: + if not os.path.exists(fname): + print "Error: Cannot recognize %s as a file" % fname + sys.exit(1) + if fname.split('.')[-1] != 'py': + print "Note: %s is not a valid python file. Skipping." % fname + continue + fh = open(fname) + strdata = fh.readlines() + lineno = 0 + tab_check_status = True + for linedata in strdata: + lineno += 1 + if len(tabs_search_rex.findall(linedata)) > 0 : + print "Error: Found a TAB character at %s:%d" % (fname, lineno) + tab_check_status = False + if tab_check_status == False: + print "Error: Syntax check failed. Please fix the errors and try again." + sys.exit(1) + #now check for error in compilation + try: + compile_result = py_compile.compile(fname, cfile="/dev/null", doraise=True) + except py_compile.PyCompileError as exc: + print str(exc) + print "Error: Compilation failed. Please fix the errors and try again." + sys.exit(1) + print "Success: Checked %s. No syntax errors found." % fname + sys.exit(0) +