UtilitiesPython2/Py2SyntaxChecker.py

Sun, 05 Jan 2014 17:13:21 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 05 Jan 2014 17:13:21 +0100
changeset 3176
51feb6174cc2
parent 3160
209a07d7e401
child 3203
61f05d1bf877
permissions
-rw-r--r--

A little change to the QScintilla inputMethodEvent() overwriting code.

805
83ca4d1ff648 Added a tabnanny checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 802
diff changeset
1 #!/usr/bin/env python2
795
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2 # -*- coding: utf-8 -*-
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
3
3160
209a07d7e401 Updated copyright for 2014.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3150
diff changeset
4 # Copyright (c) 2011 - 2014 Detlev Offenbach <detlev@die-offenbachs.de>
795
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5 #
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 """
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 Module implementing the syntax check for Python 2.
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9 """
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 import sys
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 import re
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13 import traceback
3150
42a8d3b5bd57 Fixed an issue checking syntax errors and flakes issues with Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3031
diff changeset
14 import warnings
805
83ca4d1ff648 Added a tabnanny checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 802
diff changeset
15
1308
2b602a1521e7 Made the check for line flags like __IGNORE_WARNING__ more flexible and extensible.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
16 from Tools import readEncodedFile, normalizeCode, extractLineFlags
795
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
18
805
83ca4d1ff648 Added a tabnanny checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 802
diff changeset
19 def compile(file, codestring):
795
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 """
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 Function to compile one Python source file to Python bytecode.
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 @param file source filename (string)
805
83ca4d1ff648 Added a tabnanny checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 802
diff changeset
24 @param codestring source code (string)
915
c1e052773c08 Changed syntax check to report error position within the line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 805
diff changeset
25 @return A tuple indicating status (True = an error was found), the
c1e052773c08 Changed syntax check to report error position within the line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 805
diff changeset
26 file name, the line number, the index number, the code string
c1e052773c08 Changed syntax check to report error position within the line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 805
diff changeset
27 and the error message (boolean, string, string, string, string,
c1e052773c08 Changed syntax check to report error position within the line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 805
diff changeset
28 string). The values are only valid, if the status equals 1.
795
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 """
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 import __builtin__
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 try:
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 if type(file) == type(u""):
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 file = file.encode('utf-8')
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 if file.endswith('.ptl'):
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 try:
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 import quixote.ptl_compile
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 except ImportError:
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 return (0, None, None, None, None)
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 template = quixote.ptl_compile.Template(codestring, file)
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 template.compile()
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 else:
802
e8882d16384c Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 795
diff changeset
44 __builtin__.compile(codestring, file, 'exec')
795
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 except SyntaxError, detail:
1465
3b459b88fcd4 Fixed a few quirks in Utilities and UtilitiesPython2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1308
diff changeset
46 index = "0"
3b459b88fcd4 Fixed a few quirks in Utilities and UtilitiesPython2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1308
diff changeset
47 code = ""
3b459b88fcd4 Fixed a few quirks in Utilities and UtilitiesPython2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1308
diff changeset
48 error = ""
795
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 lines = traceback.format_exception_only(SyntaxError, detail)
3031
ed2eaa573ca5 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2998
diff changeset
50 match = re.match(
ed2eaa573ca5 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2998
diff changeset
51 '\s*File "(.+)", line (\d+)',
795
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 lines[0].replace('<string>', '%s' % file))
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 if match is not None:
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 fn, line = match.group(1, 2)
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 if lines[1].startswith('SyntaxError:'):
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 error = re.match('SyntaxError: (.+)', lines[1]).group(1)
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 else:
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 code = re.match('(.+)', lines[1]).group(1)
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 for seLine in lines[2:]:
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 if seLine.startswith('SyntaxError:'):
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 error = re.match('SyntaxError: (.+)', seLine).group(1)
915
c1e052773c08 Changed syntax check to report error position within the line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 805
diff changeset
62 elif seLine.rstrip().endswith('^'):
c1e052773c08 Changed syntax check to report error position within the line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 805
diff changeset
63 index = len(seLine.rstrip()) - 4
795
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 else:
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 fn = detail.filename
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 line = detail.lineno and detail.lineno or 1
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 error = detail.msg
915
c1e052773c08 Changed syntax check to report error position within the line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 805
diff changeset
68 return (1, fn, line, index, code, error)
795
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 except ValueError, detail:
915
c1e052773c08 Changed syntax check to report error position within the line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 805
diff changeset
70 index = "0"
1465
3b459b88fcd4 Fixed a few quirks in Utilities and UtilitiesPython2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1308
diff changeset
71 code = ""
795
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 try:
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 fn = detail.filename
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 line = detail.lineno
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 error = detail.msg
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 except AttributeError:
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 fn = file
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 line = 1
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 error = unicode(detail)
915
c1e052773c08 Changed syntax check to report error position within the line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 805
diff changeset
80 return (1, fn, line, index, code, error)
795
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 except StandardError, detail:
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 try:
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 fn = detail.filename
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 line = detail.lineno
1465
3b459b88fcd4 Fixed a few quirks in Utilities and UtilitiesPython2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1308
diff changeset
85 index = "0"
795
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 code = ""
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 error = detail.msg
915
c1e052773c08 Changed syntax check to report error position within the line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 805
diff changeset
88 return (1, fn, line, index, code, error)
795
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 except: # this catchall is intentional
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 pass
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91
915
c1e052773c08 Changed syntax check to report error position within the line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 805
diff changeset
92 return (0, None, None, None, None, None)
802
e8882d16384c Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 795
diff changeset
93
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
94
802
e8882d16384c Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 795
diff changeset
95 def flakesCheck(fileName, codestring, ignoreStarImportWarnings):
e8882d16384c Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 795
diff changeset
96 """
e8882d16384c Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 795
diff changeset
97 Function to perform a pyflakes check.
e8882d16384c Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 795
diff changeset
98
e8882d16384c Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 795
diff changeset
99 @param fileName name of the file (string)
e8882d16384c Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 795
diff changeset
100 @param codestring source code to be checked (string)
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 915
diff changeset
101 @param ignoreStarImportWarnings flag indicating to
802
e8882d16384c Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 795
diff changeset
102 ignore 'star import' warnings (boolean)
e8882d16384c Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 795
diff changeset
103 @return list of strings containing the warnings
e8882d16384c Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 795
diff changeset
104 (marker, file name, line number, message)
e8882d16384c Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 795
diff changeset
105 """
2409
df3820f08247 Continued implementing the delayed import.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
106 from py2flakes.checker import Checker
df3820f08247 Continued implementing the delayed import.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
107 from py2flakes.messages import ImportStarUsed
df3820f08247 Continued implementing the delayed import.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
108
802
e8882d16384c Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 795
diff changeset
109 strings = []
e8882d16384c Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 795
diff changeset
110 lines = codestring.splitlines()
e8882d16384c Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 795
diff changeset
111 try:
3150
42a8d3b5bd57 Fixed an issue checking syntax errors and flakes issues with Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3031
diff changeset
112 warnings_ = Checker(codestring, fileName)
42a8d3b5bd57 Fixed an issue checking syntax errors and flakes issues with Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3031
diff changeset
113 warnings_.messages.sort(key=lambda a: a.lineno)
42a8d3b5bd57 Fixed an issue checking syntax errors and flakes issues with Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3031
diff changeset
114 for warning in warnings_.messages:
802
e8882d16384c Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 795
diff changeset
115 if ignoreStarImportWarnings and \
e8882d16384c Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 795
diff changeset
116 isinstance(warning, ImportStarUsed):
e8882d16384c Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 795
diff changeset
117 continue
e8882d16384c Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 795
diff changeset
118
e8882d16384c Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 795
diff changeset
119 _fn, lineno, message = warning.getMessageData()
2998
95581102e03e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2409
diff changeset
120 if "__IGNORE_WARNING__" not in \
95581102e03e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2409
diff changeset
121 extractLineFlags(lines[lineno - 1].strip()):
802
e8882d16384c Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 795
diff changeset
122 strings.extend(["FLAKES_WARNING", _fn, lineno, message])
e8882d16384c Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 795
diff changeset
123 except SyntaxError as err:
e8882d16384c Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 795
diff changeset
124 if err.text.strip():
e8882d16384c Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 795
diff changeset
125 msg = err.text.strip()
e8882d16384c Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 795
diff changeset
126 else:
e8882d16384c Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 795
diff changeset
127 msg = err.msg
e8882d16384c Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 795
diff changeset
128 strings.extend(["FLAKES_ERROR", fileName, err.lineno, msg])
e8882d16384c Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 795
diff changeset
129
e8882d16384c Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 795
diff changeset
130 return strings
795
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 if __name__ == "__main__":
802
e8882d16384c Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 795
diff changeset
133 if len(sys.argv) < 2 or \
e8882d16384c Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 795
diff changeset
134 len(sys.argv) > 3 or \
e8882d16384c Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 795
diff changeset
135 (len(sys.argv) == 3 and sys.argv[1] not in ["-fi", "-fs"]):
795
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 print "ERROR"
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 print ""
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 print ""
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 print ""
915
c1e052773c08 Changed syntax check to report error position within the line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 805
diff changeset
140 print ""
795
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 print "No file name given."
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 else:
3150
42a8d3b5bd57 Fixed an issue checking syntax errors and flakes issues with Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3031
diff changeset
143 warnings.simplefilter("error")
802
e8882d16384c Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 795
diff changeset
144 filename = sys.argv[-1]
805
83ca4d1ff648 Added a tabnanny checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 802
diff changeset
145 try:
83ca4d1ff648 Added a tabnanny checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 802
diff changeset
146 codestring = readEncodedFile(filename)[0]
83ca4d1ff648 Added a tabnanny checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 802
diff changeset
147 codestring = normalizeCode(codestring)
83ca4d1ff648 Added a tabnanny checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 802
diff changeset
148
915
c1e052773c08 Changed syntax check to report error position within the line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 805
diff changeset
149 syntaxerror, fname, line, index, code, error = \
c1e052773c08 Changed syntax check to report error position within the line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 805
diff changeset
150 compile(filename, codestring)
805
83ca4d1ff648 Added a tabnanny checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 802
diff changeset
151 except IOError, msg:
83ca4d1ff648 Added a tabnanny checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 802
diff changeset
152 # fake a syntax error
915
c1e052773c08 Changed syntax check to report error position within the line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 805
diff changeset
153 syntaxerror, fname, line, index, code, error = \
c1e052773c08 Changed syntax check to report error position within the line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 805
diff changeset
154 1, filename, "1", "0", "", "I/O Error: %s" % unicode(msg)
795
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155
802
e8882d16384c Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 795
diff changeset
156 if syntaxerror:
795
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 print "ERROR"
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158 else:
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 print "NO_ERROR"
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 print fname
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161 print line
915
c1e052773c08 Changed syntax check to report error position within the line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 805
diff changeset
162 print index
795
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 print code
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 print error
802
e8882d16384c Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 795
diff changeset
165
e8882d16384c Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 795
diff changeset
166 if not syntaxerror and sys.argv[1] in ["-fi", "-fs"]:
e8882d16384c Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 795
diff changeset
167 # do pyflakes check
2998
95581102e03e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2409
diff changeset
168 warningLines = flakesCheck(
95581102e03e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2409
diff changeset
169 filename, codestring, sys.argv[1] == "-fi")
802
e8882d16384c Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 795
diff changeset
170 for warningLine in warningLines:
e8882d16384c Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 795
diff changeset
171 print warningLine
795
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173 sys.exit(0)
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 #
917f1945355c Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 # eflag: FileType = Python2

eric ide

mercurial