447 def __prepareResultLists(self): |
482 def __prepareResultLists(self): |
448 """ |
483 """ |
449 Private method to prepare the result lists. |
484 Private method to prepare the result lists. |
450 """ |
485 """ |
451 self.__definedAttrs = [] |
486 self.__definedAttrs = [] |
|
487 self.__definedClasses = [] |
452 self.__definedFuncs = [] |
488 self.__definedFuncs = [] |
|
489 self.__definedImports = [] |
453 self.__definedSlots = [] |
490 self.__definedSlots = [] |
454 self.__definedProps = [] |
491 self.__definedProps = [] |
455 self.__definedVars = [] |
492 self.__definedVars = [] |
|
493 |
456 self.__usedAttrs = [] |
494 self.__usedAttrs = [] |
457 self.__usedVars = [] |
495 self.__usedNames = [] |
458 self.__tupleAssignVars = [] |
|
459 self.__namesImportedAsAliases = [] |
|
460 |
496 |
461 def __storeResult(self, result): |
497 def __storeResult(self, result): |
462 """ |
498 """ |
463 Private method to store the result of an analysis. |
499 Private method to store the result of an analysis. |
464 |
500 |
465 @param result result dictionary |
501 @param result result dictionary |
466 @type dict |
502 @type dict |
467 """ |
503 """ |
468 self.__definedAttrs.extend(self.__filteredList( |
504 self.__definedAttrs.extend(self.__filteredList( |
469 [self.__dict2Item(d) for d in result["DefinedAttributes"]])) |
505 [self.__dict2Item(d) for d in result["DefinedAttributes"]])) |
|
506 self.__definedClasses.extend(self.__filteredList( |
|
507 [self.__dict2Item(d) for d in result["DefinedClasses"]])) |
470 self.__definedFuncs.extend(self.__filteredList( |
508 self.__definedFuncs.extend(self.__filteredList( |
471 [self.__dict2Item(d) for d in result["DefinedFunctions"]])) |
509 [self.__dict2Item(d) for d in result["DefinedFunctions"]])) |
|
510 self.__definedImports.extend(self.__filteredList( |
|
511 [self.__dict2Item(d) for d in result["DefinedImports"]])) |
472 self.__definedSlots.extend(self.__filteredList( |
512 self.__definedSlots.extend(self.__filteredList( |
473 [self.__dict2Item(d) for d in result["DefinedSlots"]])) |
513 [self.__dict2Item(d) for d in result["DefinedSlots"]])) |
474 self.__definedProps.extend(self.__filteredList( |
514 self.__definedProps.extend(self.__filteredList( |
475 [self.__dict2Item(d) for d in result["DefinedProperties"]])) |
515 [self.__dict2Item(d) for d in result["DefinedProperties"]])) |
476 self.__definedVars.extend(self.__filteredList( |
516 self.__definedVars.extend(self.__filteredList( |
477 [self.__dict2Item(d) for d in result["DefinedVariables"]])) |
517 [self.__dict2Item(d) for d in result["DefinedVariables"]])) |
478 self.__usedAttrs.extend( |
518 self.__usedAttrs.extend(result["UsedAttributes"]) |
479 [self.__dict2Item(d) for d in result["UsedAttributes"]]) |
519 self.__usedNames.extend(result["UsedNames"]) |
480 self.__usedVars.extend( |
|
481 [self.__dict2Item(d) for d in result["UsedVariables"]]) |
|
482 self.__tupleAssignVars.extend( |
|
483 [self.__dict2Item(d) for d in result["TupleVariables"]]) |
|
484 self.__namesImportedAsAliases.extend( |
|
485 [self.__dict2Item(d) for d in result["Aliases"]]) |
|
486 |
520 |
487 def __dict2Item(self, d): |
521 def __dict2Item(self, d): |
488 """ |
522 """ |
489 Private method to convert an item dictionary to a vulture item. |
523 Private method to convert an item dictionary to a vulture item. |
490 |
524 |
491 @param d item dictionary |
525 @param d item dictionary |
492 @type dict |
526 @type dict |
493 @return vulture item |
527 @return vulture item |
494 @rtype vulture.Item |
528 @rtype VultureItem |
495 """ |
529 """ |
496 return Item(d["name"], d["type"], d["file"], d["line"]) |
530 return VultureItem(d["name"], d["type"], d["file"], d["first_line"], |
|
531 d["last_line"], confidence=d["confidence"]) |
497 |
532 |
498 def __filteredList(self, itemList): |
533 def __filteredList(self, itemList): |
499 """ |
534 """ |
500 Private method to filter a list against the whitelist patterns |
535 Private method to filter a list against the whitelist patterns |
501 returning items not matching the whitelist. |
536 returning items not matching the whitelist. |
502 |
537 |
503 @param itemList list of items to be filtered |
538 @param itemList list of items to be filtered |
504 @type list of vulture.Item |
539 @type list of VultureItem |
505 @return list of filtered items |
540 @return list of filtered items |
506 @rtype list of vulture.Item |
541 @rtype list of VultureItem |
507 """ |
542 """ |
508 filteredList = itemList |
543 filteredList = itemList |
509 for pattern in self.__data["WhiteLists"]["__patterns__"]: |
544 for pattern in self.__data["WhiteLists"]["__patterns__"]: |
510 regExp = QRegExp(pattern, Qt.CaseSensitive, QRegExp.Wildcard) |
545 regExp = QRegExp(pattern, Qt.CaseSensitive, QRegExp.Wildcard) |
511 filteredList = [name for name in filteredList |
546 filteredList = [item for item in filteredList |
512 if not regExp.exactMatch(name)] |
547 if not regExp.exactMatch(item.name)] |
513 return filteredList |
548 return filteredList |
514 |
549 |
515 def __getUnusedItems(self, defined, used): |
550 def __getUnusedItems(self, defined, used): |
516 """ |
551 """ |
517 Private method to get a list of unused items. |
552 Private method to get a list of unused items. |
518 |
553 |
519 @param defined list of defined items |
554 @param defined list of defined items |
520 @type list of vulture.Item |
555 @type list of VultureItem |
521 @param used list of used items |
556 @param used list of used names |
522 @type list of vulture.Item |
557 @type list of str |
523 @return list of unused items |
558 @return list of unused items |
524 @rtype list of vulture.Item |
559 @rtype list of VultureItem |
525 """ |
560 """ |
526 return list(set(defined) - set(used)) |
561 unusedItems = [item for item in set(defined) |
|
562 if item.name not in used] |
|
563 return unusedItems |
527 |
564 |
528 def __unusedFunctions(self): |
565 def __unusedFunctions(self): |
529 """ |
566 """ |
530 Private method to get the list of unused functions. |
567 Private method to get the list of unused functions. |
531 |
568 |
532 @return list of unused functions |
569 @return list of unused functions |
533 @rtype list of vulture.Item |
570 @rtype list of VultureItem |
534 """ |
571 """ |
535 return self.__getUnusedItems( |
572 return self.__getUnusedItems( |
536 self.__definedFuncs, |
573 self.__definedFuncs, |
537 self.__usedAttrs + self.__usedVars + |
574 self.__usedAttrs + self.__usedNames + |
538 self.__namesImportedAsAliases + |
575 self.__data["WhiteLists"]["function"] |
539 self.__data["WhiteLists"]["function"] + |
576 ) |
540 self.__data["WhiteLists"]["class"]) |
|
541 |
577 |
542 def __unusedSlots(self): |
578 def __unusedSlots(self): |
543 """ |
579 """ |
544 Private method to get the list of unused PyQt slots. |
580 Private method to get the list of unused PyQt/PySide slots. |
545 |
581 |
546 @return list of unused PyQt slots |
582 @return list of unused PyQt/PySide slots |
547 @rtype list of vulture.Item |
583 @rtype list of VultureItem |
548 """ |
584 """ |
549 return self.__getUnusedItems( |
585 return self.__getUnusedItems( |
550 self.__definedSlots, |
586 self.__definedSlots, |
551 self.__usedAttrs + self.__usedVars + |
587 self.__usedAttrs + self.__usedNames + |
552 self.__namesImportedAsAliases + |
588 self.__data["WhiteLists"]["slot"] |
553 self.__data["WhiteLists"]["slot"]) |
589 ) |
554 |
590 |
|
591 def __unusedClasses(self): |
|
592 """ |
|
593 Private method to get the list of unused classes. |
|
594 |
|
595 @return list of unused classes |
|
596 @rtype list of VultureItem |
|
597 """ |
|
598 return self.__getUnusedItems( |
|
599 self.__definedClasses, |
|
600 self.__usedAttrs + self.__usedNames + |
|
601 self.__data["WhiteLists"]["class"] |
|
602 ) |
|
603 |
|
604 def __unusedImports(self): |
|
605 """ |
|
606 Private method to get a list of unused imports. |
|
607 |
|
608 @return list of unused imports |
|
609 @rtype list of VultureItem |
|
610 """ |
|
611 return self.__getUnusedItems( |
|
612 self.__definedClasses, |
|
613 self.__usedAttrs + self.__usedNames + |
|
614 self.__data["WhiteLists"]["import"] |
|
615 ) |
|
616 |
555 def __unusedProperties(self): |
617 def __unusedProperties(self): |
556 """ |
618 """ |
557 Private method to get the list of unused properties. |
619 Private method to get the list of unused properties. |
558 |
620 |
559 @return list of unused properties |
621 @return list of unused properties |
560 @rtype list of vulture.Item |
622 @rtype list of VultureItem |
561 """ |
623 """ |
562 return self.__getUnusedItems( |
624 return self.__getUnusedItems( |
563 self.__definedProps, |
625 self.__definedProps, |
564 self.__usedAttrs + self.__data["WhiteLists"]["property"]) |
626 self.__usedAttrs + |
|
627 self.__data["WhiteLists"]["property"] |
|
628 ) |
565 |
629 |
566 def __unusedVariables(self): |
630 def __unusedVariables(self): |
567 """ |
631 """ |
568 Private method to get the list of unused variables. |
632 Private method to get the list of unused variables. |
569 |
633 |
570 @return list of unused variables |
634 @return list of unused variables |
571 @rtype list of vulture.Item |
635 @rtype list of VultureItem |
572 """ |
636 """ |
573 return self.__getUnusedItems( |
637 return self.__getUnusedItems( |
574 self.__definedVars, |
638 self.__definedVars, |
575 self.__usedAttrs + self.__usedVars + self.__tupleAssignVars + |
639 self.__usedAttrs + self.__usedNames + |
576 self.__namesImportedAsAliases + |
640 self.__data["WhiteLists"]["variable"] |
577 self.__data["WhiteLists"]["variable"]) |
641 ) |
578 |
642 |
579 def __unusedAttributes(self): |
643 def __unusedAttributes(self): |
580 """ |
644 """ |
581 Private method to get the list of unused attributes. |
645 Private method to get the list of unused attributes. |
582 |
646 |
583 @return list of unused attributes |
647 @return list of unused attributes |
584 @rtype list of vulture.Item |
648 @rtype list of VultureItem |
585 """ |
649 """ |
586 return self.__getUnusedItems( |
650 return self.__getUnusedItems( |
587 self.__definedAttrs, |
651 self.__definedAttrs, |
588 self.__usedAttrs + self.__usedVars + |
652 self.__usedAttrs + |
589 self.__data["WhiteLists"]["attribute"]) |
653 self.__data["WhiteLists"]["attribute"] |
|
654 ) |
590 |
655 |
591 def __createResultItems(self): |
656 def __createResultItems(self): |
592 """ |
657 """ |
593 Private method to populate the list with the analysis result. |
658 Private method to populate the list with the analysis result. |
594 """ # __IGNORE_WARNING__ |
659 """ # __IGNORE_WARNING__ |