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

branch
eric7
changeset 11159
2abfc48a72db
parent 11150
73d80859079c
child 11160
070b01a1a4c1
equal deleted inserted replaced
11158:54a10654770d 11159:2abfc48a72db
459 459
460 syntaxError, syntaxStats, tree = __checkSyntax(filename, source) 460 syntaxError, syntaxStats, tree = __checkSyntax(filename, source)
461 461
462 # perform the checks only, if syntax is ok and AST tree was generated 462 # perform the checks only, if syntax is ok and AST tree was generated
463 if tree: 463 if tree:
464 # determine enabled categories
465 enabledCategories = set()
466 for includeMessage in includeMessages.split(","):
467 category = includeMessage.strip().split("-", 1)[0]
468 enabledCategories.add(category)
469
464 # check coding style 470 # check coding style
465 pycodestyle.BLANK_LINES_CONFIG = { 471 pycodestyle.BLANK_LINES_CONFIG = {
466 # Top level class and function. 472 # Top level class and function.
467 "top_level": blankLines[0], 473 "top_level": blankLines[0],
468 # Methods and nested class and function. 474 # Methods and nested class and function.
478 hang_closing=hangClosing, 484 hang_closing=hangClosing,
479 ) 485 )
480 report = styleGuide.options.report 486 report = styleGuide.options.report
481 styleGuide.input_file(filename, lines=source) 487 styleGuide.input_file(filename, lines=source)
482 stats.update(report.counters) 488 stats.update(report.counters)
483 errors = report.errors 489 errors += report.errors
484 490
485 # check documentation style 491 # check documentation style
486 docStyleChecker = DocStyleChecker( 492 if DocStyleChecker.Category in enabledCategories:
487 source, 493 docStyleChecker = DocStyleChecker(
488 filename, 494 source,
489 select, 495 filename,
490 ignore, 496 select,
491 [], 497 ignore,
492 repeatMessages, 498 [],
493 maxLineLength=maxDocLineLength, 499 repeatMessages,
494 docType=docType, 500 maxLineLength=maxDocLineLength,
495 ) 501 docType=docType,
496 docStyleChecker.run() 502 )
497 stats.update(docStyleChecker.counters) 503 docStyleChecker.run()
498 errors += docStyleChecker.errors 504 stats.update(docStyleChecker.counters)
505 errors += docStyleChecker.errors
499 506
500 # miscellaneous additional checks 507 # miscellaneous additional checks
501 miscellaneousChecker = MiscellaneousChecker( 508 if MiscellaneousChecker.Category in enabledCategories:
502 source, 509 miscellaneousChecker = MiscellaneousChecker(
503 filename, 510 source,
504 tree, 511 filename,
505 select, 512 tree,
506 ignore, 513 select,
507 [], 514 ignore,
508 repeatMessages, 515 [],
509 miscellaneousArgs, 516 repeatMessages,
510 ) 517 miscellaneousArgs,
511 miscellaneousChecker.run() 518 )
512 stats.update(miscellaneousChecker.counters) 519 miscellaneousChecker.run()
513 errors += miscellaneousChecker.errors 520 stats.update(miscellaneousChecker.counters)
521 errors += miscellaneousChecker.errors
514 522
515 # check code complexity 523 # check code complexity
516 complexityChecker = ComplexityChecker( 524 if ComplexityChecker.Category in enabledCategories:
517 source, filename, tree, select, ignore, codeComplexityArgs 525 complexityChecker = ComplexityChecker(
518 ) 526 source, filename, tree, select, ignore, codeComplexityArgs
519 complexityChecker.run() 527 )
520 stats.update(complexityChecker.counters) 528 complexityChecker.run()
521 errors += complexityChecker.errors 529 stats.update(complexityChecker.counters)
530 errors += complexityChecker.errors
522 531
523 # check function annotations 532 # check function annotations
524 annotationsChecker = AnnotationsChecker( 533 if AnnotationsChecker.Category in enabledCategories:
525 source, 534 annotationsChecker = AnnotationsChecker(
526 filename, 535 source,
527 tree, 536 filename,
528 select, 537 tree,
529 ignore, 538 select,
530 [], 539 ignore,
531 repeatMessages, 540 [],
532 annotationArgs, 541 repeatMessages,
533 ) 542 annotationArgs,
534 annotationsChecker.run() 543 )
535 stats.update(annotationsChecker.counters) 544 annotationsChecker.run()
536 errors += annotationsChecker.errors 545 stats.update(annotationsChecker.counters)
546 errors += annotationsChecker.errors
537 547
538 # check for security issues 548 # check for security issues
539 securityChecker = SecurityChecker( 549 if SecurityChecker.Category in enabledCategories:
540 source, filename, tree, select, ignore, [], repeatMessages, securityArgs 550 securityChecker = SecurityChecker(
541 ) 551 source,
542 securityChecker.run() 552 filename,
543 stats.update(securityChecker.counters) 553 tree,
544 errors += securityChecker.errors 554 select,
555 ignore,
556 [],
557 repeatMessages,
558 securityArgs,
559 )
560 securityChecker.run()
561 stats.update(securityChecker.counters)
562 errors += securityChecker.errors
545 563
546 # check for pathlib usage 564 # check for pathlib usage
547 pathlibChecker = PathlibChecker( 565 if PathlibChecker.Category in enabledCategories:
548 source, filename, tree, select, ignore, [], repeatMessages 566 pathlibChecker = PathlibChecker(
549 ) 567 source, filename, tree, select, ignore, [], repeatMessages
550 pathlibChecker.run() 568 )
551 stats.update(pathlibChecker.counters) 569 pathlibChecker.run()
552 errors += pathlibChecker.errors 570 stats.update(pathlibChecker.counters)
571 errors += pathlibChecker.errors
553 572
554 # check for code simplifications 573 # check for code simplifications
555 simplifyChecker = SimplifyChecker( 574 if SimplifyChecker.Category in enabledCategories:
556 source, filename, tree, select, ignore, [], repeatMessages 575 simplifyChecker = SimplifyChecker(
557 ) 576 source, filename, tree, select, ignore, [], repeatMessages
558 simplifyChecker.run() 577 )
559 stats.update(simplifyChecker.counters) 578 simplifyChecker.run()
560 errors += simplifyChecker.errors 579 stats.update(simplifyChecker.counters)
580 errors += simplifyChecker.errors
561 581
562 # check import statements 582 # check import statements
563 importsChecker = ImportsChecker( 583 if ImportsChecker.Category in enabledCategories:
564 source, filename, tree, select, ignore, [], repeatMessages, importsArgs 584 importsChecker = ImportsChecker(
565 ) 585 source,
566 importsChecker.run() 586 filename,
567 stats.update(importsChecker.counters) 587 tree,
568 errors += importsChecker.errors 588 select,
589 ignore,
590 [],
591 repeatMessages,
592 importsArgs,
593 )
594 importsChecker.run()
595 stats.update(importsChecker.counters)
596 errors += importsChecker.errors
569 597
570 # check naming style 598 # check naming style
571 namingStyleChecker = NamingStyleChecker( 599 if NamingStyleChecker.Category in enabledCategories:
572 source, 600 namingStyleChecker = NamingStyleChecker(
573 filename, 601 source,
574 tree, 602 filename,
575 select, 603 tree,
576 ignore, 604 select,
577 [], 605 ignore,
578 repeatMessages, 606 [],
579 {}, # no arguments yet 607 repeatMessages,
580 ) 608 {}, # no arguments yet
581 namingStyleChecker.run() 609 )
582 stats.update(namingStyleChecker.counters) 610 namingStyleChecker.run()
583 errors += namingStyleChecker.errors 611 stats.update(namingStyleChecker.counters)
612 errors += namingStyleChecker.errors
584 613
585 # check name ordering 614 # check name ordering
586 nameOrderChecker = NameOrderChecker( 615 if NameOrderChecker.Category in enabledCategories:
587 source, 616 nameOrderChecker = NameOrderChecker(
588 filename, 617 source,
589 tree, 618 filename,
590 select, 619 tree,
591 ignore, 620 select,
592 [], 621 ignore,
593 repeatMessages, 622 [],
594 nameOrderArgs, 623 repeatMessages,
595 ) 624 nameOrderArgs,
596 nameOrderChecker.run() 625 )
597 stats.update(nameOrderChecker.counters) 626 nameOrderChecker.run()
598 errors += nameOrderChecker.errors 627 stats.update(nameOrderChecker.counters)
628 errors += nameOrderChecker.errors
599 629
600 # check unused arguments and variables 630 # check unused arguments and variables
601 unusedChecker = UnusedChecker( 631 if UnusedChecker.Category in enabledCategories:
602 source, 632 unusedChecker = UnusedChecker(
603 filename, 633 source,
604 tree, 634 filename,
605 select, 635 tree,
606 ignore, 636 select,
607 [], 637 ignore,
608 repeatMessages, 638 [],
609 unusedArgs, 639 repeatMessages,
610 ) 640 unusedArgs,
611 unusedChecker.run() 641 )
612 stats.update(unusedChecker.counters) 642 unusedChecker.run()
613 errors += unusedChecker.errors 643 stats.update(unusedChecker.counters)
644 errors += unusedChecker.errors
614 645
615 # check async function definitions 646 # check async function definitions
616 asyncChecker = AsyncChecker( 647 if AsyncChecker.Category in enabledCategories:
617 source, 648 asyncChecker = AsyncChecker(
618 filename, 649 source,
619 tree, 650 filename,
620 select, 651 tree,
621 ignore, 652 select,
622 [], 653 ignore,
623 repeatMessages, 654 [],
624 {}, # no arguments yet 655 repeatMessages,
625 ) 656 {}, # no arguments yet
626 asyncChecker.run() 657 )
627 stats.update(asyncChecker.counters) 658 asyncChecker.run()
628 errors += asyncChecker.errors 659 stats.update(asyncChecker.counters)
660 errors += asyncChecker.errors
629 661
630 # checking logging statements 662 # checking logging statements
631 loggingChecker = LoggingChecker( 663 if LoggingChecker.Category in enabledCategories:
632 source, 664 loggingChecker = LoggingChecker(
633 filename, 665 source,
634 tree, 666 filename,
635 select, 667 tree,
636 ignore, 668 select,
637 [], 669 ignore,
638 repeatMessages, 670 [],
639 {}, # no arguments yet 671 repeatMessages,
640 ) 672 {}, # no arguments yet
641 loggingChecker.run() 673 )
642 stats.update(loggingChecker.counters) 674 loggingChecker.run()
643 errors += loggingChecker.errors 675 stats.update(loggingChecker.counters)
676 errors += loggingChecker.errors
644 677
645 # check 'pydantic' related topics 678 # check 'pydantic' related topics
646 pydanticChecker = PydanticChecker( 679 if PydanticChecker.Category in enabledCategories:
647 source, 680 pydanticChecker = PydanticChecker(
648 filename, 681 source,
649 tree, 682 filename,
650 select, 683 tree,
651 ignore, 684 select,
652 [], 685 ignore,
653 repeatMessages, 686 [],
654 {}, # no arguments yet 687 repeatMessages,
655 ) 688 {}, # no arguments yet
656 pydanticChecker.run() 689 )
657 stats.update(pydanticChecker.counters) 690 pydanticChecker.run()
658 errors += pydanticChecker.errors 691 stats.update(pydanticChecker.counters)
692 errors += pydanticChecker.errors
659 693
660 elif syntaxError: 694 elif syntaxError:
661 errors = [syntaxError] 695 errors = [syntaxError]
662 stats.update(syntaxStats) 696 stats.update(syntaxStats)
663 697

eric ide

mercurial