14 """ |
14 """ |
15 Class implementing a checker for logging related issues. |
15 Class implementing a checker for logging related issues. |
16 """ |
16 """ |
17 |
17 |
18 Codes = [ |
18 Codes = [ |
19 ## Logging format |
19 ## Logging |
20 "L101", |
20 "L101", |
21 "L102", |
21 "L102", |
22 "L103", |
22 "L103", |
23 "L104", |
23 "L104", |
|
24 "L105", |
|
25 "L106", |
|
26 "L107", |
|
27 "L108", |
|
28 "L109", |
24 "L110", |
29 "L110", |
|
30 "L111", |
|
31 "L112", |
|
32 "L113", |
|
33 "L114", |
25 ] |
34 ] |
26 |
35 |
27 def __init__(self, source, filename, tree, select, ignore, expected, repeat, args): |
36 def __init__(self, source, filename, tree, select, ignore, expected, repeat, args): |
28 """ |
37 """ |
29 Constructor |
38 Constructor |
43 @param repeat flag indicating to report each occurrence of a code |
52 @param repeat flag indicating to report each occurrence of a code |
44 @type bool |
53 @type bool |
45 @param args dictionary of arguments for the various checks |
54 @param args dictionary of arguments for the various checks |
46 @type dict |
55 @type dict |
47 """ |
56 """ |
48 self.__select = tuple(select) |
57 self.__select = tuple(select) # noqa: M188 |
49 self.__ignore = ("",) if select else tuple(ignore) |
58 self.__ignore = ("",) if select else tuple(ignore) # noqa: M188 |
50 self.__expected = expected[:] |
59 self.__expected = expected[:] |
51 self.__repeat = repeat |
60 self.__repeat = repeat |
52 self.__filename = filename |
61 self.__filename = filename |
53 self.__source = source[:] |
62 self.__source = source[:] |
54 self.__tree = copy.deepcopy(tree) |
63 self.__tree = copy.deepcopy(tree) |
59 |
68 |
60 # collection of detected errors |
69 # collection of detected errors |
61 self.errors = [] |
70 self.errors = [] |
62 |
71 |
63 checkersWithCodes = [ |
72 checkersWithCodes = [ |
64 (self.__checkLoggingFormat, ("L101", "L102", "L103", "L104", "L110")), |
73 ( |
|
74 self.__checkLogging, |
|
75 ( |
|
76 "L101", |
|
77 "L102", |
|
78 "L103", |
|
79 "L104", |
|
80 "L105", |
|
81 "L106", |
|
82 "L107", |
|
83 "L108", |
|
84 "L109", |
|
85 "L110", |
|
86 "L111", |
|
87 "L112", |
|
88 "L113", |
|
89 "L114", |
|
90 ), |
|
91 ), |
65 ] |
92 ] |
66 |
93 |
67 self.__checkers = [] |
94 self.__checkers = [] |
68 for checker, codes in checkersWithCodes: |
95 for checker, codes in checkersWithCodes: |
69 if any(not (code and self.__ignoreCode(code)) for code in codes): |
96 if any(not (code and self.__ignoreCode(code)) for code in codes): |
131 return |
158 return |
132 |
159 |
133 for check in self.__checkers: |
160 for check in self.__checkers: |
134 check() |
161 check() |
135 |
162 |
136 def __checkLoggingFormat(self): |
163 def __checkLogging(self): |
137 """ |
164 """ |
138 Private method to check logging statements. |
165 Private method to check logging statements. |
139 """ |
166 """ |
140 from .LoggingFormatVisitor import LoggingFormatVisitor |
167 from .LoggingVisitor import LoggingVisitor |
141 |
168 |
142 visitor = LoggingFormatVisitor(errorCallback=self.__error) |
169 visitor = LoggingVisitor(errorCallback=self.__error) |
143 visitor.visit(self.__tree) |
170 visitor.visit(self.__tree) |