src/eric7/Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleChecker.py

branch
eric7
changeset 10119
64147a7e6393
parent 10116
4a619fb7bd09
child 10122
f9b87800ecf2
equal deleted inserted replaced
10118:f93954861747 10119:64147a7e6393
12 import multiprocessing 12 import multiprocessing
13 import queue 13 import queue
14 import sys 14 import sys
15 15
16 import pycodestyle 16 import pycodestyle
17 17 from Annotations.AnnotationsChecker import AnnotationsChecker
18 from Async.AsyncChecker import AsyncChecker 18 from Async.AsyncChecker import AsyncChecker
19 from CodeStyleFixer import CodeStyleFixer 19 from CodeStyleFixer import CodeStyleFixer
20 from Complexity.ComplexityChecker import ComplexityChecker 20 from Complexity.ComplexityChecker import ComplexityChecker
21 from DocStyle.DocStyleChecker import DocStyleChecker 21 from DocStyle.DocStyleChecker import DocStyleChecker
22 from Imports.ImportsChecker import ImportsChecker 22 from Imports.ImportsChecker import ImportsChecker
313 @rtype tuple of (dict, dict, None) or tuple of (None, None, ast.Module) 313 @rtype tuple of (dict, dict, None) or tuple of (None, None, ast.Module)
314 """ 314 """
315 src = "".join(source) 315 src = "".join(source)
316 316
317 try: 317 try:
318 tree = ( 318 tree = ast.parse(src, filename, "exec", type_comments=True)
319 ast.parse(src, filename, "exec", type_comments=True) 319 # need the 'type_comments' parameter to include type annotations
320 # need the 'type_comments' parameter to include type annotations
321 if sys.version_info >= (3, 8)
322 else ast.parse(src, filename, "exec")
323 )
324 return None, None, tree 320 return None, None, tree
325 except (SyntaxError, TypeError): 321 except (SyntaxError, TypeError):
326 exc_type, exc = sys.exc_info()[:2] 322 exc_type, exc = sys.exc_info()[:2]
327 if len(exc.args) > 1: 323 if len(exc.args) > 1:
328 offset = exc.args[1] 324 offset = exc.args[1]
492 complexityChecker.run() 488 complexityChecker.run()
493 stats.update(complexityChecker.counters) 489 stats.update(complexityChecker.counters)
494 errors += complexityChecker.errors 490 errors += complexityChecker.errors
495 491
496 # check function annotations 492 # check function annotations
497 if sys.version_info >= (3, 8, 0): 493 annotationsChecker = AnnotationsChecker(
498 # annotations with type comments are supported from 494 source,
499 # Python 3.8 on 495 filename,
500 from Annotations.AnnotationsChecker import ( # __IGNORE_WARNING_I10__ 496 tree,
501 AnnotationsChecker, 497 select,
502 ) 498 ignore,
503 499 [],
504 annotationsChecker = AnnotationsChecker( 500 repeatMessages,
505 source, 501 annotationArgs,
506 filename, 502 )
507 tree, 503 annotationsChecker.run()
508 select, 504 stats.update(annotationsChecker.counters)
509 ignore, 505 errors += annotationsChecker.errors
510 [],
511 repeatMessages,
512 annotationArgs,
513 )
514 annotationsChecker.run()
515 stats.update(annotationsChecker.counters)
516 errors += annotationsChecker.errors
517 506
518 # check for security issues 507 # check for security issues
519 securityChecker = SecurityChecker( 508 securityChecker = SecurityChecker(
520 source, filename, tree, select, ignore, [], repeatMessages, securityArgs 509 source, filename, tree, select, ignore, [], repeatMessages, securityArgs
521 ) 510 )

eric ide

mercurial