--- a/VultureChecker/VultureCheckerDialog.py Tue Oct 06 20:01:23 2015 +0200 +++ b/VultureChecker/VultureCheckerDialog.py Wed Oct 07 19:17:49 2015 +0200 @@ -83,6 +83,7 @@ self.__finished = True self.__errorItem = None self.__data = None + self.__slotsAreUsed = True self.__fileList = [] self.filterFrame.setVisible(False) @@ -90,6 +91,7 @@ self.__translatedTypes = { "property": self.tr("Property"), "function": self.tr("Function"), + "slot": self.tr("Slot"), "attribute": self.tr("Attribute"), "variable": self.tr("Variable"), "class": self.tr("Class"), @@ -145,6 +147,7 @@ self.__data["WhiteLists"] = { "property": [], "function": [], + "slot": [], "attribute": [], "variable": [], "class": [], @@ -153,7 +156,11 @@ "visit_*", ], } + if "SlotsAreUsed" not in self.__data: + self.__data["SlotsAreUsed"] = True + self.excludeFilesEdit.setText(self.__data["ExcludeFiles"]) + self.slotsCheckBox.setChecked(self.__data["SlotsAreUsed"]) def start(self, fn): """ @@ -402,6 +409,12 @@ fileList = \ [f for f in fileList if not fnmatch.fnmatch(f, filter)] + self.__slotsAreUsed = self.slotsCheckBox.isChecked() + if self.__slotsAreUsed != self.__data["SlotsAreUsed"]: + self.__data["SlotsAreUsed"] = self.__slotsAreUsed + self.__project.setData( + "CHECKERSPARMS", "Vulture", self.__data) + self.start(fileList) def clear(self): @@ -525,6 +538,19 @@ self.__data["WhiteLists"]["function"] + self.__data["WhiteLists"]["class"]) + def __unusedSlots(self): + """ + Private method to get the list of unused PyQt slots. + + @return list of unused PyQt slots + @rtype list of vulture.Item + """ + return self.__getUnusedItems( + self.__definedSlots, + self.__usedAttrs + self.__usedVars + + self.__namesImportedAsAliases + + self.__data["WhiteLists"]["slot"]) + def __unusedProperties(self): """ Private method to get the list of unused properties. @@ -569,11 +595,13 @@ lastFileItem = None lastFileName = "" - for item in sorted(self.__unusedFunctions() + - self.__unusedProperties() + - self.__unusedVariables() + - self.__unusedAttributes(), - key=filename): + items = (self.__unusedFunctions() + + self.__unusedProperties() + + self.__unusedVariables() + + self.__unusedAttributes()) + if not self.__slotsAreUsed: + items += self.__unusedSlots() + for item in sorted(items, key=filename): if lastFileItem is None or lastFileName != item.file: lastFileItem = self.__createFileItem(item.file) lastFileName = item.file