81 |
81 |
82 self.__project = e5App().getObject("Project") |
82 self.__project = e5App().getObject("Project") |
83 self.__finished = True |
83 self.__finished = True |
84 self.__errorItem = None |
84 self.__errorItem = None |
85 self.__data = None |
85 self.__data = None |
|
86 self.__slotsAreUsed = True |
86 |
87 |
87 self.__fileList = [] |
88 self.__fileList = [] |
88 self.filterFrame.setVisible(False) |
89 self.filterFrame.setVisible(False) |
89 |
90 |
90 self.__translatedTypes = { |
91 self.__translatedTypes = { |
91 "property": self.tr("Property"), |
92 "property": self.tr("Property"), |
92 "function": self.tr("Function"), |
93 "function": self.tr("Function"), |
|
94 "slot": self.tr("Slot"), |
93 "attribute": self.tr("Attribute"), |
95 "attribute": self.tr("Attribute"), |
94 "variable": self.tr("Variable"), |
96 "variable": self.tr("Variable"), |
95 "class": self.tr("Class"), |
97 "class": self.tr("Class"), |
96 } |
98 } |
97 |
99 |
143 self.__data["ExcludeFiles"] = "" |
145 self.__data["ExcludeFiles"] = "" |
144 if "WhiteLists" not in self.__data: |
146 if "WhiteLists" not in self.__data: |
145 self.__data["WhiteLists"] = { |
147 self.__data["WhiteLists"] = { |
146 "property": [], |
148 "property": [], |
147 "function": [], |
149 "function": [], |
|
150 "slot": [], |
148 "attribute": [], |
151 "attribute": [], |
149 "variable": [], |
152 "variable": [], |
150 "class": [], |
153 "class": [], |
151 "__patterns__": [ |
154 "__patterns__": [ |
152 "on_*", |
155 "on_*", |
153 "visit_*", |
156 "visit_*", |
154 ], |
157 ], |
155 } |
158 } |
|
159 if "SlotsAreUsed" not in self.__data: |
|
160 self.__data["SlotsAreUsed"] = True |
|
161 |
156 self.excludeFilesEdit.setText(self.__data["ExcludeFiles"]) |
162 self.excludeFilesEdit.setText(self.__data["ExcludeFiles"]) |
|
163 self.slotsCheckBox.setChecked(self.__data["SlotsAreUsed"]) |
157 |
164 |
158 def start(self, fn): |
165 def start(self, fn): |
159 """ |
166 """ |
160 Public slot to start the code metrics determination. |
167 Public slot to start the code metrics determination. |
161 |
168 |
399 if f.strip()] |
406 if f.strip()] |
400 if filterList: |
407 if filterList: |
401 for filter in filterList: |
408 for filter in filterList: |
402 fileList = \ |
409 fileList = \ |
403 [f for f in fileList if not fnmatch.fnmatch(f, filter)] |
410 [f for f in fileList if not fnmatch.fnmatch(f, filter)] |
|
411 |
|
412 self.__slotsAreUsed = self.slotsCheckBox.isChecked() |
|
413 if self.__slotsAreUsed != self.__data["SlotsAreUsed"]: |
|
414 self.__data["SlotsAreUsed"] = self.__slotsAreUsed |
|
415 self.__project.setData( |
|
416 "CHECKERSPARMS", "Vulture", self.__data) |
404 |
417 |
405 self.start(fileList) |
418 self.start(fileList) |
406 |
419 |
407 def clear(self): |
420 def clear(self): |
408 """ |
421 """ |
523 self.__usedAttrs + self.__usedVars + |
536 self.__usedAttrs + self.__usedVars + |
524 self.__namesImportedAsAliases + |
537 self.__namesImportedAsAliases + |
525 self.__data["WhiteLists"]["function"] + |
538 self.__data["WhiteLists"]["function"] + |
526 self.__data["WhiteLists"]["class"]) |
539 self.__data["WhiteLists"]["class"]) |
527 |
540 |
|
541 def __unusedSlots(self): |
|
542 """ |
|
543 Private method to get the list of unused PyQt slots. |
|
544 |
|
545 @return list of unused PyQt slots |
|
546 @rtype list of vulture.Item |
|
547 """ |
|
548 return self.__getUnusedItems( |
|
549 self.__definedSlots, |
|
550 self.__usedAttrs + self.__usedVars + |
|
551 self.__namesImportedAsAliases + |
|
552 self.__data["WhiteLists"]["slot"]) |
|
553 |
528 def __unusedProperties(self): |
554 def __unusedProperties(self): |
529 """ |
555 """ |
530 Private method to get the list of unused properties. |
556 Private method to get the list of unused properties. |
531 |
557 |
532 @return list of unused properties |
558 @return list of unused properties |
567 def filename(item): |
593 def filename(item): |
568 return item.file |
594 return item.file |
569 |
595 |
570 lastFileItem = None |
596 lastFileItem = None |
571 lastFileName = "" |
597 lastFileName = "" |
572 for item in sorted(self.__unusedFunctions() + |
598 items = (self.__unusedFunctions() + |
573 self.__unusedProperties() + |
599 self.__unusedProperties() + |
574 self.__unusedVariables() + |
600 self.__unusedVariables() + |
575 self.__unusedAttributes(), |
601 self.__unusedAttributes()) |
576 key=filename): |
602 if not self.__slotsAreUsed: |
|
603 items += self.__unusedSlots() |
|
604 for item in sorted(items, key=filename): |
577 if lastFileItem is None or lastFileName != item.file: |
605 if lastFileItem is None or lastFileName != item.file: |
578 lastFileItem = self.__createFileItem(item.file) |
606 lastFileItem = self.__createFileItem(item.file) |
579 lastFileName = item.file |
607 lastFileName = item.file |
580 |
608 |
581 self.__createResultItem(lastFileItem, item) |
609 self.__createResultItem(lastFileItem, item) |