Wed, 01 Jan 2014 14:38:45 +0100
Updated copyright for 2014.
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 |