Sat, 24 Oct 2015 20:36:26 +0200
Started to add more code style checkers.
832
eb5ff61f927b
Added a checker for PEP 8 compliance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1 | # -*- coding: utf-8 -*- |
eb5ff61f927b
Added a checker for PEP 8 compliance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2 | |
4021
195a471c327b
Updated copyright for 2015.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3821
diff
changeset
|
3 | # Copyright (c) 2011 - 2015 Detlev Offenbach <detlev@die-offenbachs.de> |
832
eb5ff61f927b
Added a checker for PEP 8 compliance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | # |
eb5ff61f927b
Added a checker for PEP 8 compliance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | |
eb5ff61f927b
Added a checker for PEP 8 compliance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | """ |
2980
2cb4e3c50b37
Continued changing the names of the various code style checkers to make them more appropriate to the broadened scope.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2979
diff
changeset
|
7 | Module implementing the code style checker. |
832
eb5ff61f927b
Added a checker for PEP 8 compliance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8 | """ |
eb5ff61f927b
Added a checker for PEP 8 compliance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | |
3209
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
10 | import sys |
4218
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
11 | import multiprocessing |
3056
9986ec0e559a
Merge with default branch before style changes.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2929
diff
changeset
|
12 | |
3209
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
13 | import pep8 |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
14 | from NamingStyleChecker import NamingStyleChecker |
843
522c8befcf49
Continued implementing a PRP 8 checker for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
832
diff
changeset
|
15 | |
3209
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
16 | # register the name checker |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
17 | pep8.register_check(NamingStyleChecker, NamingStyleChecker.Codes) |
832
eb5ff61f927b
Added a checker for PEP 8 compliance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
18 | |
3209
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
19 | from DocStyleChecker import DocStyleChecker |
4506
57666e501a42
Started to add more code style checkers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4444
diff
changeset
|
20 | from MiscellaneousChecker import MiscellaneousChecker |
57666e501a42
Started to add more code style checkers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4444
diff
changeset
|
21 | from McCabeChecker import McCabeChecker |
843
522c8befcf49
Continued implementing a PRP 8 checker for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
832
diff
changeset
|
22 | |
832
eb5ff61f927b
Added a checker for PEP 8 compliance.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
23 | |
3209
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
24 | def initService(): |
843
522c8befcf49
Continued implementing a PRP 8 checker for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
832
diff
changeset
|
25 | """ |
3209
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
26 | Initialize the service and return the entry point. |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
27 | |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
28 | @return the entry point for the background client (function) |
843
522c8befcf49
Continued implementing a PRP 8 checker for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
832
diff
changeset
|
29 | """ |
3209
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
30 | return codeStyleCheck |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
31 | |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
32 | |
4218
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
33 | def initBatchService(): |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
34 | """ |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
35 | Initialize the batch service and return the entry point. |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
36 | |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
37 | @return the entry point for the background client (function) |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
38 | """ |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
39 | return codeStyleBatchCheck |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
40 | |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
41 | |
3209
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
42 | class CodeStyleCheckerReport(pep8.BaseReport): |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
43 | """ |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
44 | Class implementing a special report to be used with our dialog. |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
45 | """ |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
46 | def __init__(self, options): |
843
522c8befcf49
Continued implementing a PRP 8 checker for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
832
diff
changeset
|
47 | """ |
522c8befcf49
Continued implementing a PRP 8 checker for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
832
diff
changeset
|
48 | Constructor |
522c8befcf49
Continued implementing a PRP 8 checker for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
832
diff
changeset
|
49 | |
3209
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
50 | @param options options for the report (optparse.Values) |
843
522c8befcf49
Continued implementing a PRP 8 checker for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
832
diff
changeset
|
51 | """ |
3209
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
52 | super(CodeStyleCheckerReport, self).__init__(options) |
843
522c8befcf49
Continued implementing a PRP 8 checker for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
832
diff
changeset
|
53 | |
3209
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
54 | self.__repeat = options.repeat |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
55 | self.errors = [] |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
56 | |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
57 | def error_args(self, line_number, offset, code, check, *args): |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
58 | """ |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
59 | Public method to collect the error messages. |
843
522c8befcf49
Continued implementing a PRP 8 checker for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
832
diff
changeset
|
60 | |
3209
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
61 | @param line_number line number of the issue (integer) |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
62 | @param offset position within line of the issue (integer) |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
63 | @param code message code (string) |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
64 | @param check reference to the checker function (function) |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
65 | @param args arguments for the message (list) |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
66 | @return error code (string) |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
67 | """ |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
68 | code = super(CodeStyleCheckerReport, self).error_args( |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
69 | line_number, offset, code, check, *args) |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
70 | if code and (self.counters[code] == 1 or self.__repeat): |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
71 | self.errors.append( |
3413
5e63f809732a
Code style checker: Translations extracted and refactored.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3228
diff
changeset
|
72 | (self.filename, line_number, offset, (code, args)) |
3209
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
73 | ) |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
74 | return code |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
75 | |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
76 | |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
77 | def extractLineFlags(line, startComment="#", endComment=""): |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
78 | """ |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
79 | Function to extract flags starting and ending with '__' from a line |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
80 | comment. |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
81 | |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
82 | @param line line to extract flags from (string) |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
83 | @keyparam startComment string identifying the start of the comment (string) |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
84 | @keyparam endComment string identifying the end of a comment (string) |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
85 | @return list containing the extracted flags (list of strings) |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
86 | """ |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
87 | flags = [] |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
88 | |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
89 | pos = line.rfind(startComment) |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
90 | if pos >= 0: |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
91 | comment = line[pos + len(startComment):].strip() |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
92 | if endComment: |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
93 | comment = comment.replace("endComment", "") |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
94 | flags = [f.strip() for f in comment.split() |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
95 | if (f.startswith("__") and f.endswith("__"))] |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
96 | return flags |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
97 | |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
98 | |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
99 | def codeStyleCheck(filename, source, args): |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
100 | """ |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
101 | Do the code style check and/ or fix found errors. |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
102 | |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
103 | @param filename source filename (string) |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
104 | @param source string containing the code to check (string) |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
105 | @param args arguments used by the codeStyleCheck function (list of |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
106 | excludeMessages (str), includeMessages (str), repeatMessages |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
107 | (bool), fixCodes (str), noFixCodes (str), fixIssues (bool), |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
108 | maxLineLength (int), hangClosing (bool), docType (str), errors |
3549
96ebf42cd960
Added the file backup functionality in the code style fixer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3515
diff
changeset
|
109 | (list of str), eol (str), encoding (str), backup (bool)) |
3209
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
110 | @return tuple of stats (dict) and results (tuple for each found violation |
3515
1b8381afe38f
Merge with default branch.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3456
diff
changeset
|
111 | of style (tuple of lineno (int), position (int), text (str), ignored |
1b8381afe38f
Merge with default branch.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3456
diff
changeset
|
112 | (bool), fixed (bool), autofixing (bool), fixedMsg (str))) |
3209
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
113 | """ |
4218
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
114 | return __checkCodeStyle(filename, source, args) |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
115 | |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
116 | |
4221
c9fdc07753a7
Implemented the Cancel logic for batch checks.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4218
diff
changeset
|
117 | def codeStyleBatchCheck(argumentsList, send, fx, cancelled): |
4218
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
118 | """ |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
119 | Module function to check code style for a batch of files. |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
120 | |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
121 | @param argumentsList list of arguments tuples as given for codeStyleCheck |
4221
c9fdc07753a7
Implemented the Cancel logic for batch checks.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4218
diff
changeset
|
122 | @param send reference to send function (function) |
4218
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
123 | @param fx registered service name (string) |
4221
c9fdc07753a7
Implemented the Cancel logic for batch checks.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4218
diff
changeset
|
124 | @param cancelled reference to function checking for a cancellation |
c9fdc07753a7
Implemented the Cancel logic for batch checks.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4218
diff
changeset
|
125 | (function) |
4218
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
126 | """ |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
127 | try: |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
128 | NumberOfProcesses = multiprocessing.cpu_count() |
4221
c9fdc07753a7
Implemented the Cancel logic for batch checks.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4218
diff
changeset
|
129 | if NumberOfProcesses >= 1: |
c9fdc07753a7
Implemented the Cancel logic for batch checks.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4218
diff
changeset
|
130 | NumberOfProcesses -= 1 |
4218
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
131 | except NotImplementedError: |
4221
c9fdc07753a7
Implemented the Cancel logic for batch checks.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4218
diff
changeset
|
132 | NumberOfProcesses = 1 |
4218
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
133 | |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
134 | # Create queues |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
135 | taskQueue = multiprocessing.Queue() |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
136 | doneQueue = multiprocessing.Queue() |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
137 | |
4221
c9fdc07753a7
Implemented the Cancel logic for batch checks.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4218
diff
changeset
|
138 | # Submit tasks (initially two time number of processes |
c9fdc07753a7
Implemented the Cancel logic for batch checks.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4218
diff
changeset
|
139 | initialTasks = 2 * NumberOfProcesses |
c9fdc07753a7
Implemented the Cancel logic for batch checks.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4218
diff
changeset
|
140 | for task in argumentsList[:initialTasks]: |
4218
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
141 | taskQueue.put(task) |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
142 | |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
143 | # Start worker processes |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
144 | for i in range(NumberOfProcesses): |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
145 | multiprocessing.Process(target=worker, args=(taskQueue, doneQueue))\ |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
146 | .start() |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
147 | |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
148 | # Get and send results |
4221
c9fdc07753a7
Implemented the Cancel logic for batch checks.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4218
diff
changeset
|
149 | endIndex = len(argumentsList) - initialTasks |
4218
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
150 | for i in range(len(argumentsList)): |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
151 | filename, result = doneQueue.get() |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
152 | send(fx, filename, result) |
4221
c9fdc07753a7
Implemented the Cancel logic for batch checks.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4218
diff
changeset
|
153 | if cancelled(): |
c9fdc07753a7
Implemented the Cancel logic for batch checks.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4218
diff
changeset
|
154 | # just exit the loop ignoring the results of queued tasks |
c9fdc07753a7
Implemented the Cancel logic for batch checks.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4218
diff
changeset
|
155 | break |
c9fdc07753a7
Implemented the Cancel logic for batch checks.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4218
diff
changeset
|
156 | if i < endIndex: |
c9fdc07753a7
Implemented the Cancel logic for batch checks.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4218
diff
changeset
|
157 | taskQueue.put(argumentsList[i + initialTasks]) |
4218
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
158 | |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
159 | # Tell child processes to stop |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
160 | for i in range(NumberOfProcesses): |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
161 | taskQueue.put('STOP') |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
162 | |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
163 | |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
164 | def worker(input, output): |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
165 | """ |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
166 | Module function acting as the parallel worker for the style check. |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
167 | |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
168 | @param input input queue (multiprocessing.Queue) |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
169 | @param output output queue (multiprocessing.Queue) |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
170 | """ |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
171 | for filename, source, args in iter(input.get, 'STOP'): |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
172 | result = __checkCodeStyle(filename, source, args) |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
173 | output.put((filename, result)) |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
174 | |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
175 | |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
176 | def __checkCodeStyle(filename, source, args): |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
177 | """ |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
178 | Private module function to perform the code style check and/or fix |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
179 | found errors. |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
180 | |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
181 | @param filename source filename (string) |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
182 | @param source string containing the code to check (string) |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
183 | @param args arguments used by the codeStyleCheck function (list of |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
184 | excludeMessages (str), includeMessages (str), repeatMessages |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
185 | (bool), fixCodes (str), noFixCodes (str), fixIssues (bool), |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
186 | maxLineLength (int), hangClosing (bool), docType (str), errors |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
187 | (list of str), eol (str), encoding (str), backup (bool)) |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
188 | @return tuple of stats (dict) and results (tuple for each found violation |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
189 | of style (tuple of lineno (int), position (int), text (str), ignored |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
190 | (bool), fixed (bool), autofixing (bool), fixedMsg (str))) |
f542ad1f76c5
Added a batch mode to the code style checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
191 | """ |
4423
14f3ca3dcef6
Added a code complexity checker iaw. McCabe to the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4221
diff
changeset
|
192 | (excludeMessages, includeMessages, repeatMessages, fixCodes, noFixCodes, |
4506
57666e501a42
Started to add more code style checkers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4444
diff
changeset
|
193 | fixIssues, maxLineLength, hangClosing, docType, maxComplexity, |
57666e501a42
Started to add more code style checkers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4444
diff
changeset
|
194 | miscellaneousArgs, errors, eol, encoding, backup) = args |
3209
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
195 | |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
196 | stats = {} |
3616 | 197 | |
3209
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
198 | if fixIssues: |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
199 | from CodeStyleFixer import CodeStyleFixer |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
200 | fixer = CodeStyleFixer( |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
201 | filename, source, fixCodes, noFixCodes, |
3549
96ebf42cd960
Added the file backup functionality in the code style fixer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3515
diff
changeset
|
202 | maxLineLength, True, eol, backup) # always fix in place |
3209
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
203 | else: |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
204 | fixer = None |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
205 | |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
206 | if not errors: |
3745
4c6f1782f530
Possible exception on fixing code styles fixed (only Python2).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3616
diff
changeset
|
207 | # avoid 'Encoding declaration in unicode string' exception on Python2 |
4c6f1782f530
Possible exception on fixing code styles fixed (only Python2).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3616
diff
changeset
|
208 | if sys.version_info[0] == 2: |
4c6f1782f530
Possible exception on fixing code styles fixed (only Python2).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3616
diff
changeset
|
209 | if encoding == 'utf-8-bom': |
4c6f1782f530
Possible exception on fixing code styles fixed (only Python2).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3616
diff
changeset
|
210 | enc = 'utf-8' |
4c6f1782f530
Possible exception on fixing code styles fixed (only Python2).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3616
diff
changeset
|
211 | else: |
4c6f1782f530
Possible exception on fixing code styles fixed (only Python2).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3616
diff
changeset
|
212 | enc = encoding |
4c6f1782f530
Possible exception on fixing code styles fixed (only Python2).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3616
diff
changeset
|
213 | source = [line.encode(enc) for line in source] |
4c6f1782f530
Possible exception on fixing code styles fixed (only Python2).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3616
diff
changeset
|
214 | |
3209
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
215 | if includeMessages: |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
216 | select = [s.strip() for s in |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
217 | includeMessages.split(',') if s.strip()] |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
218 | else: |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
219 | select = [] |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
220 | if excludeMessages: |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
221 | ignore = [i.strip() for i in |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
222 | excludeMessages.split(',') if i.strip()] |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
223 | else: |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
224 | ignore = [] |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
225 | |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
226 | # check coding style |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
227 | styleGuide = pep8.StyleGuide( |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
228 | reporter=CodeStyleCheckerReport, |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
229 | repeat=repeatMessages, |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
230 | select=select, |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
231 | ignore=ignore, |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
232 | max_line_length=maxLineLength, |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
233 | hang_closing=hangClosing, |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
234 | ) |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
235 | report = styleGuide.check_files([filename]) |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
236 | stats.update(report.counters) |
4423
14f3ca3dcef6
Added a code complexity checker iaw. McCabe to the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4221
diff
changeset
|
237 | errors = report.errors |
3209
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
238 | |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
239 | # check documentation style |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
240 | docStyleChecker = DocStyleChecker( |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
241 | source, filename, select, ignore, [], repeatMessages, |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
242 | maxLineLength=maxLineLength, docType=docType) |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
243 | docStyleChecker.run() |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
244 | stats.update(docStyleChecker.counters) |
4423
14f3ca3dcef6
Added a code complexity checker iaw. McCabe to the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4221
diff
changeset
|
245 | errors += docStyleChecker.errors |
3209
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
246 | |
4506
57666e501a42
Started to add more code style checkers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4444
diff
changeset
|
247 | # miscellaneous additional checks |
57666e501a42
Started to add more code style checkers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4444
diff
changeset
|
248 | miscellaneousChecker = MiscellaneousChecker( |
57666e501a42
Started to add more code style checkers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4444
diff
changeset
|
249 | source, filename, select, ignore, [], repeatMessages, |
57666e501a42
Started to add more code style checkers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4444
diff
changeset
|
250 | miscellaneousArgs) |
57666e501a42
Started to add more code style checkers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4444
diff
changeset
|
251 | miscellaneousChecker.run() |
57666e501a42
Started to add more code style checkers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4444
diff
changeset
|
252 | stats.update(miscellaneousChecker.counters) |
57666e501a42
Started to add more code style checkers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4444
diff
changeset
|
253 | errors += miscellaneousChecker.errors |
57666e501a42
Started to add more code style checkers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4444
diff
changeset
|
254 | |
4423
14f3ca3dcef6
Added a code complexity checker iaw. McCabe to the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4221
diff
changeset
|
255 | # check code complexity iaw. McCabe |
14f3ca3dcef6
Added a code complexity checker iaw. McCabe to the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4221
diff
changeset
|
256 | mccabeChecker = McCabeChecker( |
14f3ca3dcef6
Added a code complexity checker iaw. McCabe to the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4221
diff
changeset
|
257 | source, filename, select, ignore, maxComplexity) |
14f3ca3dcef6
Added a code complexity checker iaw. McCabe to the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4221
diff
changeset
|
258 | mccabeChecker.run() |
14f3ca3dcef6
Added a code complexity checker iaw. McCabe to the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4221
diff
changeset
|
259 | stats.update(mccabeChecker.counters) |
14f3ca3dcef6
Added a code complexity checker iaw. McCabe to the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4221
diff
changeset
|
260 | errors += mccabeChecker.errors |
3209
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
261 | |
4444
4867c8189b62
Multiple pep8 fixes in one line doesn't mix up syntax any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4423
diff
changeset
|
262 | errorsDict = {} |
3413
5e63f809732a
Code style checker: Translations extracted and refactored.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3228
diff
changeset
|
263 | for fname, lineno, position, text in errors: |
3209
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
264 | if lineno > len(source): |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
265 | lineno = len(source) |
4444
4867c8189b62
Multiple pep8 fixes in one line doesn't mix up syntax any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4423
diff
changeset
|
266 | # inverse processing of messages and fixes |
4867c8189b62
Multiple pep8 fixes in one line doesn't mix up syntax any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4423
diff
changeset
|
267 | errorLine = errorsDict.setdefault(lineno, []) |
4867c8189b62
Multiple pep8 fixes in one line doesn't mix up syntax any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4423
diff
changeset
|
268 | errorLine.append([position, text]) |
4867c8189b62
Multiple pep8 fixes in one line doesn't mix up syntax any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4423
diff
changeset
|
269 | deferredFixes = {} |
4867c8189b62
Multiple pep8 fixes in one line doesn't mix up syntax any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4423
diff
changeset
|
270 | results = [] |
4867c8189b62
Multiple pep8 fixes in one line doesn't mix up syntax any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4423
diff
changeset
|
271 | for lineno, errors in errorsDict.items(): |
4867c8189b62
Multiple pep8 fixes in one line doesn't mix up syntax any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4423
diff
changeset
|
272 | errors.sort(key=lambda x: x[0], reverse=True) |
4867c8189b62
Multiple pep8 fixes in one line doesn't mix up syntax any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4423
diff
changeset
|
273 | for position, text in errors: |
4867c8189b62
Multiple pep8 fixes in one line doesn't mix up syntax any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4423
diff
changeset
|
274 | if source: |
4867c8189b62
Multiple pep8 fixes in one line doesn't mix up syntax any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4423
diff
changeset
|
275 | if "__IGNORE_WARNING__" not in \ |
4867c8189b62
Multiple pep8 fixes in one line doesn't mix up syntax any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4423
diff
changeset
|
276 | extractLineFlags(source[lineno - 1].strip()): |
4867c8189b62
Multiple pep8 fixes in one line doesn't mix up syntax any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4423
diff
changeset
|
277 | if fixer: |
4867c8189b62
Multiple pep8 fixes in one line doesn't mix up syntax any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4423
diff
changeset
|
278 | res, msg, id_ = fixer.fixIssue(lineno, position, text) |
4867c8189b62
Multiple pep8 fixes in one line doesn't mix up syntax any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4423
diff
changeset
|
279 | if res == -1: |
4867c8189b62
Multiple pep8 fixes in one line doesn't mix up syntax any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4423
diff
changeset
|
280 | itm = [lineno, position, text] |
4867c8189b62
Multiple pep8 fixes in one line doesn't mix up syntax any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4423
diff
changeset
|
281 | deferredFixes[id_] = itm |
4867c8189b62
Multiple pep8 fixes in one line doesn't mix up syntax any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4423
diff
changeset
|
282 | else: |
4867c8189b62
Multiple pep8 fixes in one line doesn't mix up syntax any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4423
diff
changeset
|
283 | itm = [lineno, position, text, False, |
4867c8189b62
Multiple pep8 fixes in one line doesn't mix up syntax any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4423
diff
changeset
|
284 | res == 1, True, msg] |
3821
8731f4bf0704
Fixed an issue in the coding style checker service. Empty files should not be ignored because they could show issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3745
diff
changeset
|
285 | else: |
8731f4bf0704
Fixed an issue in the coding style checker service. Empty files should not be ignored because they could show issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3745
diff
changeset
|
286 | itm = [lineno, position, text, False, |
4444
4867c8189b62
Multiple pep8 fixes in one line doesn't mix up syntax any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4423
diff
changeset
|
287 | False, False, ''] |
4867c8189b62
Multiple pep8 fixes in one line doesn't mix up syntax any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4423
diff
changeset
|
288 | results.append(itm) |
2896
9fa71ee50b3d
Finished the pEP-8 naming checker implementation by doing the Py2 variant.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2864
diff
changeset
|
289 | else: |
4444
4867c8189b62
Multiple pep8 fixes in one line doesn't mix up syntax any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4423
diff
changeset
|
290 | results.append([lineno, position, text, True, |
4867c8189b62
Multiple pep8 fixes in one line doesn't mix up syntax any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4423
diff
changeset
|
291 | False, False, '']) |
3209
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
292 | else: |
4444
4867c8189b62
Multiple pep8 fixes in one line doesn't mix up syntax any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4423
diff
changeset
|
293 | results.append([lineno, position, text, False, |
3821
8731f4bf0704
Fixed an issue in the coding style checker service. Empty files should not be ignored because they could show issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3745
diff
changeset
|
294 | False, False, '']) |
3209
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
295 | |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
296 | if fixer: |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
297 | deferredResults = fixer.finalize() |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
298 | for id_ in deferredResults: |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
299 | fixed, msg = deferredResults[id_] |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
300 | itm = deferredFixes[id_] |
3564
4bccb8dd0bbd
Fixed an issue in the code style checker service.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3549
diff
changeset
|
301 | itm.extend([False, fixed == 1, True, msg]) |
3413
5e63f809732a
Code style checker: Translations extracted and refactored.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3228
diff
changeset
|
302 | |
5e63f809732a
Code style checker: Translations extracted and refactored.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3228
diff
changeset
|
303 | errMsg = fixer.saveFile(encoding) |
5e63f809732a
Code style checker: Translations extracted and refactored.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3228
diff
changeset
|
304 | if errMsg: |
5e63f809732a
Code style checker: Translations extracted and refactored.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3228
diff
changeset
|
305 | for result in results: |
5e63f809732a
Code style checker: Translations extracted and refactored.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3228
diff
changeset
|
306 | result[-1] = errMsg |
3209
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
307 | |
c5432abceb25
CodeStyleChecker moved to background service and done a little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
308 | return stats, results |