474 |
465 |
475 def __prepareResultLists(self): |
466 def __prepareResultLists(self): |
476 """ |
467 """ |
477 Private method to prepare the result lists. |
468 Private method to prepare the result lists. |
478 """ |
469 """ |
479 self.__definedAttrs = [] |
470 self.__unusedAttrs = [] |
480 self.__definedClasses = [] |
471 self.__unusedClasses = [] |
481 self.__definedFuncs = [] |
472 self.__unusedFuncs = [] |
482 self.__definedImports = [] |
473 self.__unusedMethods = [] |
483 self.__definedSlots = [] |
474 self.__unusedImports = [] |
484 self.__definedProps = [] |
475 self.__unusedProps = [] |
485 self.__definedVars = [] |
476 self.__unusedVars = [] |
486 |
|
487 self.__usedAttrs = [] |
|
488 self.__usedNames = [] |
|
489 |
477 |
490 def __storeResult(self, result): |
478 def __storeResult(self, result): |
491 """ |
479 """ |
492 Private method to store the result of an analysis. |
480 Private method to store the result of an analysis. |
493 |
481 |
494 @param result result dictionary |
482 @param result result dictionary |
495 @type dict |
483 @type dict |
496 """ |
484 """ |
497 self.__definedAttrs.extend(self.__filteredList( |
485 self.__unusedAttrs.extend(self.__filteredList( |
498 [self.__dict2Item(d) for d in result["DefinedAttributes"]])) |
486 [self.__dict2Item(d) for d in result["UnusedAttributes"]])) |
499 self.__definedClasses.extend(self.__filteredList( |
487 self.__unusedClasses.extend(self.__filteredList( |
500 [self.__dict2Item(d) for d in result["DefinedClasses"]])) |
488 [self.__dict2Item(d) for d in result["UnusedClasses"]])) |
501 self.__definedFuncs.extend(self.__filteredList( |
489 self.__unusedFuncs.extend(self.__filteredList( |
502 [self.__dict2Item(d) for d in result["DefinedFunctions"]])) |
490 [self.__dict2Item(d) for d in result["UnusedFunctions"]])) |
503 self.__definedImports.extend(self.__filteredList( |
491 self.__unusedMethods.extend(self.__filteredList( |
504 [self.__dict2Item(d) for d in result["DefinedImports"]])) |
492 [self.__dict2Item(d) for d in result["UnusedMethods"]])) |
505 self.__definedSlots.extend(self.__filteredList( |
493 self.__unusedImports.extend(self.__filteredList( |
506 [self.__dict2Item(d) for d in result["DefinedSlots"]])) |
494 [self.__dict2Item(d) for d in result["UnusedImports"]])) |
507 self.__definedProps.extend(self.__filteredList( |
495 self.__unusedProps.extend(self.__filteredList( |
508 [self.__dict2Item(d) for d in result["DefinedProperties"]])) |
496 [self.__dict2Item(d) for d in result["UnusedProperties"]])) |
509 self.__definedVars.extend(self.__filteredList( |
497 self.__unusedVars.extend(self.__filteredList( |
510 [self.__dict2Item(d) for d in result["DefinedVariables"]])) |
498 [self.__dict2Item(d) for d in result["UnusedVariables"]])) |
511 self.__usedAttrs.extend(result["UsedAttributes"]) |
|
512 self.__usedNames.extend(result["UsedNames"]) |
|
513 |
499 |
514 def __dict2Item(self, d): |
500 def __dict2Item(self, d): |
515 """ |
501 """ |
516 Private method to convert an item dictionary to a vulture item. |
502 Private method to convert an item dictionary to a vulture item. |
517 |
503 |
538 regExp = QRegExp(pattern, Qt.CaseSensitive, QRegExp.Wildcard) |
524 regExp = QRegExp(pattern, Qt.CaseSensitive, QRegExp.Wildcard) |
539 filteredList = [item for item in filteredList |
525 filteredList = [item for item in filteredList |
540 if not regExp.exactMatch(item.name)] |
526 if not regExp.exactMatch(item.name)] |
541 return filteredList # __IGNORE_WARNING_M834__ |
527 return filteredList # __IGNORE_WARNING_M834__ |
542 |
528 |
543 def __getUnusedItems(self, defined, used): |
529 def __filterUnusedItems(self, unused, whitelistName): |
544 """ |
530 """ |
545 Private method to get a list of unused items. |
531 Private method to get a list of unused items. |
546 |
532 |
547 @param defined list of defined items |
533 @param unused list of unused items |
548 @type list of VultureItem |
534 @type list of VultureItem |
549 @param used list of used names |
535 @param whitelistName name of the whitelist to use as a filter |
550 @type list of str |
536 @type str |
551 @return list of unused items |
537 @return list of unused items |
552 @rtype list of VultureItem |
538 @rtype list of VultureItem |
553 """ |
539 """ |
554 return [item for item in set(defined) if item.name not in used] |
540 return [ |
555 |
541 item for item in set(unused) |
556 def __unusedFunctions(self): |
542 if item.name not in self.__data["WhiteLists"][whitelistName] |
|
543 ] |
|
544 |
|
545 def __filterUnusedFunctions(self): |
557 """ |
546 """ |
558 Private method to get the list of unused functions. |
547 Private method to get the list of unused functions. |
559 |
548 |
560 @return list of unused functions |
549 @return list of unused functions |
561 @rtype list of VultureItem |
550 @rtype list of VultureItem |
562 """ |
551 """ |
563 return self.__getUnusedItems( |
552 return self.__filterUnusedItems(self.__unusedFuncs, "function") |
564 self.__definedFuncs, |
553 |
565 self.__usedAttrs + self.__usedNames + |
554 def __filterUnusedMethods(self): |
566 self.__data["WhiteLists"]["function"] |
555 """ |
567 ) |
556 Private method to get the list of unused methods. |
568 |
557 |
569 def __unusedSlots(self): |
558 @return list of unused methods |
570 """ |
559 @rtype list of VultureItem |
571 Private method to get the list of unused PyQt/PySide slots. |
560 """ |
572 |
561 return self.__filterUnusedItems(self.__unusedMethods, "method") |
573 @return list of unused PyQt/PySide slots |
562 |
574 @rtype list of VultureItem |
563 def __filterUnusedClasses(self): |
575 """ |
|
576 return self.__getUnusedItems( |
|
577 self.__definedSlots, |
|
578 self.__usedAttrs + self.__usedNames + |
|
579 self.__data["WhiteLists"]["slot"] |
|
580 ) |
|
581 |
|
582 def __unusedClasses(self): |
|
583 """ |
564 """ |
584 Private method to get the list of unused classes. |
565 Private method to get the list of unused classes. |
585 |
566 |
586 @return list of unused classes |
567 @return list of unused classes |
587 @rtype list of VultureItem |
568 @rtype list of VultureItem |
588 """ |
569 """ |
589 return self.__getUnusedItems( |
570 return self.__filterUnusedItems(self.__unusedClasses, "class") |
590 self.__definedClasses, |
571 |
591 self.__usedAttrs + self.__usedNames + |
572 def __filterUnusedImports(self): |
592 self.__data["WhiteLists"]["class"] |
|
593 ) |
|
594 |
|
595 def __unusedImports(self): |
|
596 """ |
573 """ |
597 Private method to get a list of unused imports. |
574 Private method to get a list of unused imports. |
598 |
575 |
599 @return list of unused imports |
576 @return list of unused imports |
600 @rtype list of VultureItem |
577 @rtype list of VultureItem |
601 """ |
578 """ |
602 return self.__getUnusedItems( |
579 return self.__filterUnusedItems(self.__unusedImports, "import") |
603 self.__definedClasses, |
580 |
604 self.__usedAttrs + self.__usedNames + |
581 def __filterUnusedProperties(self): |
605 self.__data["WhiteLists"]["import"] |
|
606 ) |
|
607 |
|
608 def __unusedProperties(self): |
|
609 """ |
582 """ |
610 Private method to get the list of unused properties. |
583 Private method to get the list of unused properties. |
611 |
584 |
612 @return list of unused properties |
585 @return list of unused properties |
613 @rtype list of VultureItem |
586 @rtype list of VultureItem |
614 """ |
587 """ |
615 return self.__getUnusedItems( |
588 return self.__filterUnusedItems(self.__unusedProps, "property") |
616 self.__definedProps, |
589 |
617 self.__usedAttrs + |
590 def __filterUnusedVariables(self): |
618 self.__data["WhiteLists"]["property"] |
|
619 ) |
|
620 |
|
621 def __unusedVariables(self): |
|
622 """ |
591 """ |
623 Private method to get the list of unused variables. |
592 Private method to get the list of unused variables. |
624 |
593 |
625 @return list of unused variables |
594 @return list of unused variables |
626 @rtype list of VultureItem |
595 @rtype list of VultureItem |
627 """ |
596 """ |
628 return self.__getUnusedItems( |
597 return self.__filterUnusedItems(self.__unusedVars, "variable") |
629 self.__definedVars, |
598 |
630 self.__usedAttrs + self.__usedNames + |
599 def __filterUnusedAttributes(self): |
631 self.__data["WhiteLists"]["variable"] |
|
632 ) |
|
633 |
|
634 def __unusedAttributes(self): |
|
635 """ |
600 """ |
636 Private method to get the list of unused attributes. |
601 Private method to get the list of unused attributes. |
637 |
602 |
638 @return list of unused attributes |
603 @return list of unused attributes |
639 @rtype list of VultureItem |
604 @rtype list of VultureItem |
640 """ |
605 """ |
641 return self.__getUnusedItems( |
606 return self.__filterUnusedItems(self.__unusedAttrs, "attribute") |
642 self.__definedAttrs, |
|
643 self.__usedAttrs + |
|
644 self.__data["WhiteLists"]["attribute"] |
|
645 ) |
|
646 |
607 |
647 def __createResultItems(self): |
608 def __createResultItems(self): |
648 """ |
609 """ |
649 Private method to populate the list with the analysis result. |
610 Private method to populate the list with the analysis result. |
650 """ |
611 """ |
651 lastFileItem = None |
612 lastFileItem = None |
652 lastFileName = "" |
613 lastFileName = "" |
653 items = (self.__unusedFunctions() + |
614 items = (self.__filterUnusedFunctions() + |
654 self.__unusedClasses() + |
615 self.__filterUnusedMethods() + |
655 self.__unusedImports() + |
616 self.__filterUnusedClasses() + |
656 self.__unusedProperties() + |
617 self.__filterUnusedImports() + |
657 self.__unusedVariables() + |
618 self.__filterUnusedProperties() + |
658 self.__unusedAttributes()) |
619 self.__filterUnusedVariables() + |
659 if not self.__slotsAreUsed: |
620 self.__filterUnusedAttributes()) |
660 items += self.__unusedSlots() |
|
661 for item in sorted(items, key=lambda item: item.filename): |
621 for item in sorted(items, key=lambda item: item.filename): |
662 if lastFileItem is None or lastFileName != item.filename: |
622 if lastFileItem is None or lastFileName != item.filename: |
663 lastFileItem = self.__createFileItem(item.filename) |
623 lastFileItem = self.__createFileItem(item.filename) |
664 lastFileName = item.filename |
624 lastFileName = item.filename |
665 |
625 |