PluginVulture.py

Tue, 10 Dec 2024 15:48:52 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 10 Dec 2024 15:48:52 +0100
branch
eric7
changeset 123
f515f0152188
parent 121
9b0f92e34a3f
permissions
-rw-r--r--

Updated copyright for 2025.

1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
1 # -*- coding: utf-8 -*-
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
2
123
f515f0152188 Updated copyright for 2025.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 121
diff changeset
3 # Copyright (c) 2015 - 2025 Detlev Offenbach <detlev@die-offenbachs.de>
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
4 #
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
5
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
6 """
6
76c0f3ed7ac5 Finished implementing the whitelist edit dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
7 Module implementing the vulture plug-in.
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
8 """
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
9
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
10 import os
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
11
97
6ec0844dafe7 Adapted some import statements to eric 23.1 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 95
diff changeset
12 from PyQt6.QtCore import QObject, QTranslator, pyqtSignal
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
13
95
1c4dadf3ce89 Adapted the import statements to the new structure.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 90
diff changeset
14 from eric7 import Preferences
1c4dadf3ce89 Adapted the import statements to the new structure.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 90
diff changeset
15 from eric7.EricGui.EricAction import EricAction
1c4dadf3ce89 Adapted the import statements to the new structure.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 90
diff changeset
16 from eric7.EricWidgets.EricApplication import ericApp
119
6b7a48ea6e66 Reworked the recent change to determine Python files dynamically.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 116
diff changeset
17 from eric7.SystemUtilities import PythonUtilities
95
1c4dadf3ce89 Adapted the import statements to the new structure.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 90
diff changeset
18
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
19 # Start-Of-Header
121
9b0f92e34a3f - changed use of modal dialogs to ensure a valid parent
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 119
diff changeset
20 __header__ = {
9b0f92e34a3f - changed use of modal dialogs to ensure a valid parent
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 119
diff changeset
21 "name": "Unused Code Checker Plug-in",
9b0f92e34a3f - changed use of modal dialogs to ensure a valid parent
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 119
diff changeset
22 "author": "Detlev Offenbach <detlev@die-offenbachs.de>",
9b0f92e34a3f - changed use of modal dialogs to ensure a valid parent
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 119
diff changeset
23 "autoactivate": True,
9b0f92e34a3f - changed use of modal dialogs to ensure a valid parent
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 119
diff changeset
24 "deactivateable": True,
9b0f92e34a3f - changed use of modal dialogs to ensure a valid parent
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 119
diff changeset
25 "version": "10.3.4",
9b0f92e34a3f - changed use of modal dialogs to ensure a valid parent
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 119
diff changeset
26 "className": "VulturePlugin",
9b0f92e34a3f - changed use of modal dialogs to ensure a valid parent
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 119
diff changeset
27 "packageName": "VultureChecker",
9b0f92e34a3f - changed use of modal dialogs to ensure a valid parent
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 119
diff changeset
28 "shortDescription": "Plug-in to detect unused code using the 'vulture' library",
9b0f92e34a3f - changed use of modal dialogs to ensure a valid parent
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 119
diff changeset
29 "longDescription": "Plug-in to detect unused code using the 'vulture' library.",
9b0f92e34a3f - changed use of modal dialogs to ensure a valid parent
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 119
diff changeset
30 "needsRestart": False,
9b0f92e34a3f - changed use of modal dialogs to ensure a valid parent
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 119
diff changeset
31 "hasCompiledForms": True,
9b0f92e34a3f - changed use of modal dialogs to ensure a valid parent
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 119
diff changeset
32 "pyqtApi": 2,
9b0f92e34a3f - changed use of modal dialogs to ensure a valid parent
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 119
diff changeset
33 }
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
34 # End-Of-Header
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
35
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
36 error = ""
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
37
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
38
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
39 class VulturePlugin(QObject):
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
40 """
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
41 Class documentation goes here.
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
42
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
43 @signal analysisDone(str, dict) emitted when the code analysis has
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
44 been completed for a file
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
45 @signal error(str, str) emitted in case of an error
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
46 @signal batchFinished() emitted when a style check batch is done
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
47 """
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
48
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
49 analysisDone = pyqtSignal(str, dict)
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
50 batchFinished = pyqtSignal()
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
51 error = pyqtSignal(str, str)
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
52
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
53 def __init__(self, ui):
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
54 """
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
55 Constructor
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
56
79
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
57 @param ui reference to the user interface object
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
58 @type UserInterface
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
59 """
69
3c2922b45a9f Upgraded embedded vulture library to version 2.3.0 (no eric patches for slot support needed anymore).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 68
diff changeset
60 super().__init__(ui)
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
61 self.__ui = ui
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
62 self.__initialize()
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
63
79
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
64 self.backgroundService = ericApp().getObject("BackgroundService")
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
65
121
9b0f92e34a3f - changed use of modal dialogs to ensure a valid parent
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 119
diff changeset
66 path = os.path.join(os.path.dirname(__file__), __header__["packageName"])
62
4a69da851bd2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
67 self.backgroundService.serviceConnect(
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
68 "vulture",
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
69 "Python3",
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
70 path,
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
71 "VultureCheckerService",
62
4a69da851bd2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
72 self.vultureCheckDone,
4a69da851bd2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
73 onErrorCallback=self.serviceErrorPy3,
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
74 onBatchDone=self.batchJobDone,
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
75 )
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
76
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
77 self.queuedBatches = []
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
78 self.batchesFinished = True
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
79
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
80 self.__translator = None
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
81 self.__loadTranslator()
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
82
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
83 def __serviceError(self, fn, msg):
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
84 """
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
85 Private slot handling service errors.
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
86
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
87 @param fn file name
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
88 @type str
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
89 @param msg message text
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
90 @type str
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
91 """
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
92 self.error.emit(fn, msg)
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
93
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
94 def serviceErrorPy3(self, fx, lang, fn, msg):
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
95 """
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
96 Public slot handling service errors for Python 3.
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
97
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
98 @param fx service name
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
99 @type str
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
100 @param lang language
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
101 @type str
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
102 @param fn file name
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
103 @type str
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
104 @param msg message text
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
105 @type str
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
106 """
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
107 if fx in ["vulture", "batch_vulture"] and lang == "Python3":
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
108 if fx == "vulture":
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
109 self.__serviceError(fn, msg)
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
110 else:
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
111 self.__serviceError(self.tr("Python 3 batch job"), msg)
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
112 self.batchJobDone(fx, lang)
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
113
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
114 def batchJobDone(self, fx, lang):
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
115 """
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
116 Public slot handling the completion of a batch job.
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
117
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
118 @param fx service name
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
119 @type str
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
120 @param lang language
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
121 @type str
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
122 """
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
123 if fx in ["vulture", "batch_vulture"]:
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
124 if lang in self.queuedBatches:
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
125 self.queuedBatches.remove(lang)
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
126 # prevent sending the signal multiple times
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
127 if len(self.queuedBatches) == 0 and not self.batchesFinished:
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
128 self.batchFinished.emit()
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
129 self.batchesFinished = True
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
130
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
131 def vultureCheckDone(self, filename, result):
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
132 """
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
133 Public slot to dispatch the result.
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
134
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
135 @param filename name of the file the results belong to
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
136 @type str
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
137 @param result result dictionary
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
138 @type dict
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
139 """
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
140 self.analysisDone.emit(filename, result)
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
141
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
142 def __initialize(self):
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
143 """
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
144 Private slot to (re)initialize the plug-in.
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
145 """
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
146 self.__projectAct = None
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
147 self.__projectVultureCheckerDialog = None
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
148
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
149 def vultureCheck(self, lang, filename, source):
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
150 """
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
151 Public method to prepare a vulture check for a Python project.
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
152
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
153 @param lang language of the files or None to determine by internal
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
154 algorithm
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
155 @type str or None
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
156 @param filename name of the file to analyze
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
157 @type str
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
158 @param source string containing the code
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
159 @type str
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
160 """
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
161 if lang is None:
119
6b7a48ea6e66 Reworked the recent change to determine Python files dynamically.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 116
diff changeset
162 try:
6b7a48ea6e66 Reworked the recent change to determine Python files dynamically.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 116
diff changeset
163 if PythonUtilities.isPythonSource(filename, source):
6b7a48ea6e66 Reworked the recent change to determine Python files dynamically.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 116
diff changeset
164 lang = "Python3"
6b7a48ea6e66 Reworked the recent change to determine Python files dynamically.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 116
diff changeset
165 except AttributeError:
6b7a48ea6e66 Reworked the recent change to determine Python files dynamically.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 116
diff changeset
166 # backward compatibility for eric-ide < 24.8
6b7a48ea6e66 Reworked the recent change to determine Python files dynamically.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 116
diff changeset
167 if PythonUtilities.determinePythonVersion(filename, source) == 3:
6b7a48ea6e66 Reworked the recent change to determine Python files dynamically.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 116
diff changeset
168 lang = "Python3"
6b7a48ea6e66 Reworked the recent change to determine Python files dynamically.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 116
diff changeset
169 if lang == "Python3":
6b7a48ea6e66 Reworked the recent change to determine Python files dynamically.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 116
diff changeset
170 self.backgroundService.enqueueRequest("vulture", lang, filename, [source])
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
171
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
172 def vultureCheckBatch(self, argumentsList):
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
173 """
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
174 Public method to prepare a vulture check for a Python project using
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
175 the batch mode.
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
176
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
177 @param argumentsList list of arguments tuples with each tuple
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
178 containing filename and source
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
179 @type (str, str)
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
180 """
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
181 data = {
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
182 "Python3": [],
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
183 }
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
184 for filename, source in argumentsList:
119
6b7a48ea6e66 Reworked the recent change to determine Python files dynamically.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 116
diff changeset
185 try:
6b7a48ea6e66 Reworked the recent change to determine Python files dynamically.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 116
diff changeset
186 if PythonUtilities.isPythonSource(filename, source):
6b7a48ea6e66 Reworked the recent change to determine Python files dynamically.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 116
diff changeset
187 data["Python3"].append((filename, source))
6b7a48ea6e66 Reworked the recent change to determine Python files dynamically.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 116
diff changeset
188 except AttributeError:
6b7a48ea6e66 Reworked the recent change to determine Python files dynamically.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 116
diff changeset
189 # backward compatibility for eric-ide < 24.8
6b7a48ea6e66 Reworked the recent change to determine Python files dynamically.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 116
diff changeset
190 if PythonUtilities.determinePythonVersion(filename, source) == 3:
6b7a48ea6e66 Reworked the recent change to determine Python files dynamically.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 116
diff changeset
191 data["Python3"].append((filename, source))
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
192
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
193 self.queuedBatches = []
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
194 if data["Python3"]:
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
195 self.queuedBatches.append("Python3")
62
4a69da851bd2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
196 self.backgroundService.enqueueRequest(
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
197 "batch_vulture", "Python3", "", data["Python3"]
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
198 )
62
4a69da851bd2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
199 self.batchesFinished = False
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
200
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
201 def cancelVultureCheckBatch(self):
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
202 """
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
203 Public method to cancel all batch jobs.
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
204 """
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
205 self.backgroundService.requestCancel("batch_vulture", "Python3")
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
206
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
207 def activate(self):
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
208 """
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
209 Public method to activate this plug-in.
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
210
79
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
211 @return tuple of None and activation status
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
212 @rtype tuple of (None, bool)
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
213 """
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
214 global error
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
215 error = "" # clear previous error
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
216
79
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
217 menu = ericApp().getObject("Project").getMenu("Checks")
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
218 if menu:
79
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
219 self.__projectAct = EricAction(
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
220 self.tr("Check Unused Code"),
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
221 self.tr("&Unused Code..."),
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
222 0,
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
223 0,
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
224 self,
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
225 "project_check_vulture",
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
226 )
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
227 self.__projectAct.setStatusTip(self.tr("Check for unused code"))
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
228 self.__projectAct.setWhatsThis(
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
229 self.tr(
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
230 """<b>Check Unused Code...</b>"""
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
231 """<p>This checks a Python project for unused code.</p>"""
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
232 )
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
233 )
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
234 self.__projectAct.triggered.connect(self.__projectVultureCheck)
79
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
235 ericApp().getObject("Project").addEricActions([self.__projectAct])
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
236 menu.addAction(self.__projectAct)
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
237
79
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
238 ericApp().getObject("Project").showMenu.connect(self.__projectShowMenu)
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
239 ericApp().getObject("Project").projectClosed.connect(self.__projectClosed)
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
240
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
241 return None, True
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
242
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
243 def deactivate(self):
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
244 """
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
245 Public method to deactivate this plug-in.
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
246 """
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
247 ericApp().getObject("Project").showMenu.disconnect(self.__projectShowMenu)
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
248 ericApp().getObject("Project").projectClosed.disconnect(self.__projectClosed)
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
249
79
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
250 menu = ericApp().getObject("Project").getMenu("Checks")
69
3c2922b45a9f Upgraded embedded vulture library to version 2.3.0 (no eric patches for slot support needed anymore).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 68
diff changeset
251 if menu is not None and self.__projectAct is not None:
3c2922b45a9f Upgraded embedded vulture library to version 2.3.0 (no eric patches for slot support needed anymore).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 68
diff changeset
252 menu.removeAction(self.__projectAct)
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
253 ericApp().getObject("Project").removeEricActions([self.__projectAct])
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
254
23
416ea417de46 Fixed a bug deactivating the plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
255 self.__initialize()
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
256
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
257 def __loadTranslator(self):
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
258 """
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
259 Private method to load the translation file.
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
260 """
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
261 if self.__ui is not None:
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
262 loc = self.__ui.getLocale()
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
263 if loc and loc != "C":
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
264 locale_dir = os.path.join(
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
265 os.path.dirname(__file__), "VultureChecker", "i18n"
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
266 )
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
267 translation = "vulture_{0}".format(loc)
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
268 translator = QTranslator(None)
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
269 loaded = translator.load(translation, locale_dir)
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
270 if loaded:
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
271 self.__translator = translator
79
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
272 ericApp().installTranslator(self.__translator)
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
273 else:
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
274 print(
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
275 "Warning: translation file '{0}' could not be"
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
276 " loaded.".format(translation)
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
277 )
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
278 print("Using default.")
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
279
104
cefe2b00fede Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
280 def __projectShowMenu(
cefe2b00fede Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
281 self,
cefe2b00fede Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
282 menuName,
cefe2b00fede Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
283 menu, # noqa: U100
cefe2b00fede Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
284 ):
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
285 """
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
286 Private slot called, when the the project menu or a submenu is
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
287 about to be shown.
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
288
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
289 @param menuName name of the menu to be shown
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
290 @type str
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
291 @param menu reference to the menu
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
292 @type QMenu
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
293 """
69
3c2922b45a9f Upgraded embedded vulture library to version 2.3.0 (no eric patches for slot support needed anymore).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 68
diff changeset
294 if menuName == "Check" and self.__projectAct is not None:
3c2922b45a9f Upgraded embedded vulture library to version 2.3.0 (no eric patches for slot support needed anymore).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 68
diff changeset
295 self.__projectAct.setEnabled(
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
296 ericApp().getObject("Project").getProjectLanguage() == "Python3"
69
3c2922b45a9f Upgraded embedded vulture library to version 2.3.0 (no eric patches for slot support needed anymore).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 68
diff changeset
297 )
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
298
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
299 def __projectVultureCheck(self):
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
300 """
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
301 Private slot used to check the project for unused code.
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
302 """
79
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
303 project = ericApp().getObject("Project")
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
304 project.saveAllScripts()
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
305 ppath = project.getProjectPath()
79
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
306 files = [
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
307 os.path.join(ppath, file_)
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
308 for file_ in project.getSources()
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
309 if file_.endswith(tuple(Preferences.getPython("Python3Extensions")))
79
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
310 ]
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
311
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
312 if self.__projectVultureCheckerDialog is None:
121
9b0f92e34a3f - changed use of modal dialogs to ensure a valid parent
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 119
diff changeset
313 from VultureChecker.VultureCheckerDialog import ( # noqa: I101
9b0f92e34a3f - changed use of modal dialogs to ensure a valid parent
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 119
diff changeset
314 VultureCheckerDialog,
9b0f92e34a3f - changed use of modal dialogs to ensure a valid parent
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 119
diff changeset
315 )
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
316
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
317 self.__projectVultureCheckerDialog = VultureCheckerDialog(self)
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
318 self.__projectVultureCheckerDialog.show()
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
319 self.__projectVultureCheckerDialog.prepare(files, project)
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
320
4
2a12ec365dd1 Started implementing the whitelist functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
321 def __projectClosed(self):
2a12ec365dd1 Started implementing the whitelist functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
322 """
2a12ec365dd1 Started implementing the whitelist functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
323 Private slot to handle closing a project.
2a12ec365dd1 Started implementing the whitelist functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
324 """
62
4a69da851bd2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
325 if self.__projectVultureCheckerDialog:
4
2a12ec365dd1 Started implementing the whitelist functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
326 self.__projectVultureCheckerDialog.clear()
45
232ed15782bb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
327
76
69f611e5efbb Removed the included 'vulture' library and have it as an external dependency installed during the plug-in installation (for eric > 21.5)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 74
diff changeset
328
69f611e5efbb Removed the included 'vulture' library and have it as an external dependency installed during the plug-in installation (for eric > 21.5)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 74
diff changeset
329 def installDependencies(pipInstall):
69f611e5efbb Removed the included 'vulture' library and have it as an external dependency installed during the plug-in installation (for eric > 21.5)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 74
diff changeset
330 """
69f611e5efbb Removed the included 'vulture' library and have it as an external dependency installed during the plug-in installation (for eric > 21.5)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 74
diff changeset
331 Function to install dependencies of this plug-in.
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
332
76
69f611e5efbb Removed the included 'vulture' library and have it as an external dependency installed during the plug-in installation (for eric > 21.5)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 74
diff changeset
333 @param pipInstall function to be called with a list of package names.
69f611e5efbb Removed the included 'vulture' library and have it as an external dependency installed during the plug-in installation (for eric > 21.5)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 74
diff changeset
334 @type function
69f611e5efbb Removed the included 'vulture' library and have it as an external dependency installed during the plug-in installation (for eric > 21.5)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 74
diff changeset
335 """
69f611e5efbb Removed the included 'vulture' library and have it as an external dependency installed during the plug-in installation (for eric > 21.5)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 74
diff changeset
336 try:
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
337 import vulture # __IGNORE_WARNING__
76
69f611e5efbb Removed the included 'vulture' library and have it as an external dependency installed during the plug-in installation (for eric > 21.5)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 74
diff changeset
338 except ImportError:
69f611e5efbb Removed the included 'vulture' library and have it as an external dependency installed during the plug-in installation (for eric > 21.5)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 74
diff changeset
339 pipInstall(["vulture>=2.3"])
69f611e5efbb Removed the included 'vulture' library and have it as an external dependency installed during the plug-in installation (for eric > 21.5)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 74
diff changeset
340
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
341
45
232ed15782bb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
342 #
232ed15782bb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
343 # eflag: noqa = M801

eric ide

mercurial