VultureChecker/VultureCheckerDialog.py

changeset 8
46783c4f7187
parent 7
a1a6ff3e5486
child 9
1ce891a2b3ae
diff -r a1a6ff3e5486 -r 46783c4f7187 VultureChecker/VultureCheckerDialog.py
--- 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

eric ide

mercurial