198 (self.__checkReturn, ("M831", "M832", "M833", "M834")), |
199 (self.__checkReturn, ("M831", "M832", "M833", "M834")), |
199 (self.__checkLineContinuation, ("M841",)), |
200 (self.__checkLineContinuation, ("M841",)), |
200 (self.__checkCommentedCode, ("M891",)), |
201 (self.__checkCommentedCode, ("M891",)), |
201 ] |
202 ] |
202 |
203 |
203 self.__defaultArgs = { |
204 # the eradicate whitelist |
204 "BuiltinsChecker": { |
205 commentedCodeCheckerArgs = self.__args.get( |
205 "chr": ["unichr", ], |
206 "CommentedCodeChecker", |
206 "str": ["unicode", ], |
207 MiscellaneousCheckerDefaultArgs["CommentedCodeChecker"]) |
207 }, |
208 commentedCodeCheckerWhitelist = commentedCodeCheckerArgs.get( |
208 "CodingChecker": 'latin-1, utf-8', |
209 "WhiteList", |
209 "CopyrightChecker": { |
210 MiscellaneousCheckerDefaultArgs[ |
210 "Author": "", |
211 "CommentedCodeChecker"]["WhiteList"]) |
211 "MinFilesize": 0, |
212 self.__eradicator.update_whitelist(commentedCodeCheckerWhitelist, |
212 }, |
213 extend_default=False) |
213 "CommentedCodeChecker": { |
|
214 "Aggressive": False, |
|
215 } |
|
216 } |
|
217 |
214 |
218 self.__checkers = [] |
215 self.__checkers = [] |
219 for checker, codes in checkersWithCodes: |
216 for checker, codes in checkersWithCodes: |
220 if any(not (code and self.__ignoreCode(code)) |
217 if any(not (code and self.__ignoreCode(code)) |
221 for code in codes): |
218 for code in codes): |
339 if len(self.__source) == 0: |
336 if len(self.__source) == 0: |
340 return |
337 return |
341 |
338 |
342 encodings = [e.lower().strip() |
339 encodings = [e.lower().strip() |
343 for e in self.__args.get( |
340 for e in self.__args.get( |
344 "CodingChecker", self.__defaultArgs["CodingChecker"]) |
341 "CodingChecker", |
|
342 MiscellaneousCheckerDefaultArgs["CodingChecker"]) |
345 .split(",")] |
343 .split(",")] |
346 lineno, coding = self.__getCoding() |
344 lineno, coding = self.__getCoding() |
347 if coding: |
345 if coding: |
348 if coding.lower() not in encodings: |
346 if coding.lower() not in encodings: |
349 self.__error(lineno, 0, "M102", coding) |
347 self.__error(lineno, 0, "M102", coding) |
354 """ |
352 """ |
355 Private method to check the presence of a copyright statement. |
353 Private method to check the presence of a copyright statement. |
356 """ |
354 """ |
357 source = "".join(self.__source) |
355 source = "".join(self.__source) |
358 copyrightArgs = self.__args.get( |
356 copyrightArgs = self.__args.get( |
359 "CopyrightChecker", self.__defaultArgs["CopyrightChecker"]) |
357 "CopyrightChecker", |
|
358 MiscellaneousCheckerDefaultArgs["CopyrightChecker"]) |
360 copyrightMinFileSize = copyrightArgs.get( |
359 copyrightMinFileSize = copyrightArgs.get( |
361 "MinFilesize", |
360 "MinFilesize", |
362 self.__defaultArgs["CopyrightChecker"]["MinFilesize"]) |
361 MiscellaneousCheckerDefaultArgs["CopyrightChecker"]["MinFilesize"]) |
363 copyrightAuthor = copyrightArgs.get( |
362 copyrightAuthor = copyrightArgs.get( |
364 "Author", |
363 "Author", |
365 self.__defaultArgs["CopyrightChecker"]["Author"]) |
364 MiscellaneousCheckerDefaultArgs["CopyrightChecker"]["Author"]) |
366 copyrightRegexStr = ( |
365 copyrightRegexStr = ( |
367 r"Copyright\s+(\(C\)\s+)?(\d{{4}}\s+-\s+)?\d{{4}}\s+{author}" |
366 r"Copyright\s+(\(C\)\s+)?(\d{{4}}\s+-\s+)?\d{{4}}\s+{author}" |
368 ) |
367 ) |
369 |
368 |
370 tocheck = max(1024, copyrightMinFileSize) |
369 tocheck = max(1024, copyrightMinFileSize) |
389 """ |
388 """ |
390 Private method to check for commented code. |
389 Private method to check for commented code. |
391 """ |
390 """ |
392 source = "".join(self.__source) |
391 source = "".join(self.__source) |
393 commentedCodeCheckerArgs = self.__args.get( |
392 commentedCodeCheckerArgs = self.__args.get( |
394 "CommentedCodeChecker", self.__defaultArgs["CommentedCodeChecker"]) |
393 "CommentedCodeChecker", |
|
394 MiscellaneousCheckerDefaultArgs["CommentedCodeChecker"]) |
395 aggressive = commentedCodeCheckerArgs.get( |
395 aggressive = commentedCodeCheckerArgs.get( |
396 "Aggressive", |
396 "Aggressive", |
397 self.__defaultArgs["CommentedCodeChecker"]["Aggressive"]) |
397 MiscellaneousCheckerDefaultArgs[ |
|
398 "CommentedCodeChecker"]["Aggressive"]) |
398 for markedLine in self.__eradicator.commented_out_code_line_numbers( |
399 for markedLine in self.__eradicator.commented_out_code_line_numbers( |
399 source, aggressive=aggressive): |
400 source, aggressive=aggressive): |
400 self.__error(markedLine - 1, 0, "M891") |
401 self.__error(markedLine - 1, 0, "M891") |
401 |
402 |
402 def __checkLineContinuation(self): |
403 def __checkLineContinuation(self): |
646 functionDefs.append(ast.AsyncFunctionDef) |
647 functionDefs.append(ast.AsyncFunctionDef) |
647 except AttributeError: |
648 except AttributeError: |
648 pass |
649 pass |
649 |
650 |
650 ignoreBuiltinAssignments = self.__args.get( |
651 ignoreBuiltinAssignments = self.__args.get( |
651 "BuiltinsChecker", self.__defaultArgs["BuiltinsChecker"]) |
652 "BuiltinsChecker", |
|
653 MiscellaneousCheckerDefaultArgs["BuiltinsChecker"]) |
652 |
654 |
653 for node in ast.walk(self.__tree): |
655 for node in ast.walk(self.__tree): |
654 if isinstance(node, ast.Assign): |
656 if isinstance(node, ast.Assign): |
655 # assign statement |
657 # assign statement |
656 for element in node.targets: |
658 for element in node.targets: |