PluginVulture.py

Tue, 25 May 2021 19:36:03 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 25 May 2021 19:36:03 +0200
branch
eric7
changeset 79
47e46cd3bb23
parent 76
69f611e5efbb
child 83
7a6fb6e896e0
permissions
-rw-r--r--

Ported the plug-in to PyQt6 for eric7.

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
68
d7a6b7ea640d Updated copyright for 2021.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
3 # Copyright (c) 2015 - 2021 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
79
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
12 from PyQt6.QtCore import pyqtSignal, QObject, QTranslator
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
13
79
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
14 from EricWidgets.EricApplication import ericApp
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
15 from EricGui.EricAction import EricAction
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
16
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
17 import Preferences
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
18 from Utilities import determinePythonVersion
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
19
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
20 # Start-Of-Header
23
416ea417de46 Fixed a bug deactivating the plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
21 name = "Unused Code Checker Plug-in"
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
22 author = "Detlev Offenbach <detlev@die-offenbachs.de>"
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
23 autoactivate = True
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
24 deactivateable = True
79
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
25 version = "1.0.0"
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
26 className = "VulturePlugin"
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
27 packageName = "VultureChecker"
79
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
28 shortDescription = "Plug-in to detect unused code using the 'vulture' library"
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
29 longDescription = (
79
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
30 """Plug-in to detect unused code using the 'vulture' library."""
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
31 )
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
32 needsRestart = False
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
33 pyqtApi = 2
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 = ""
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
37
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.
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
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 """
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
48 analysisDone = pyqtSignal(str, dict)
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
49 batchFinished = pyqtSignal()
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
50 error = pyqtSignal(str, str)
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
51
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
52 def __init__(self, ui):
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
53 """
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
54 Constructor
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
55
79
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
56 @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
57 @type UserInterface
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
58 """
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
59 super().__init__(ui)
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
60 self.__ui = ui
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
61 self.__initialize()
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
62
79
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
63 self.backgroundService = ericApp().getObject("BackgroundService")
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
64
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
65 path = os.path.join(os.path.dirname(__file__), packageName)
62
4a69da851bd2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
66 self.backgroundService.serviceConnect(
4a69da851bd2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
67 'vulture', 'Python3', path, 'VultureCheckerService',
4a69da851bd2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
68 self.vultureCheckDone,
4a69da851bd2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
69 onErrorCallback=self.serviceErrorPy3,
4a69da851bd2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
70 onBatchDone=self.batchJobDone)
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
71
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
72 self.queuedBatches = []
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
73 self.batchesFinished = True
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
74
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
75 self.__translator = None
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
76 self.__loadTranslator()
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
77
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
78 def __serviceError(self, fn, msg):
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
79 """
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
80 Private slot handling service errors.
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
81
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
82 @param fn file name
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
83 @type str
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
84 @param msg message text
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
85 @type str
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
86 """
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
87 self.error.emit(fn, msg)
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
88
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
89 def serviceErrorPy3(self, fx, lang, fn, msg):
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
90 """
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
91 Public slot handling service errors for Python 3.
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
92
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
93 @param fx service name
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
94 @type str
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
95 @param lang language
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
96 @type str
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
97 @param fn file name
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
98 @type str
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
99 @param msg message text
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
100 @type str
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
101 """
62
4a69da851bd2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
102 if fx in ['vulture', 'batch_vulture'] and lang == 'Python3':
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
103 if fx == 'vulture':
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
104 self.__serviceError(fn, msg)
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
105 else:
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
106 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
107 self.batchJobDone(fx, lang)
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
108
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
109 def batchJobDone(self, fx, lang):
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
110 """
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
111 Public slot handling the completion of a batch job.
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
112
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
113 @param fx service name
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
114 @type str
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
115 @param lang language
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
116 @type str
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
117 """
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
118 if fx in ['vulture', 'batch_vulture']:
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
119 if lang in self.queuedBatches:
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
120 self.queuedBatches.remove(lang)
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
121 # prevent sending the signal multiple times
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
122 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
123 self.batchFinished.emit()
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
124 self.batchesFinished = True
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
125
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
126 def vultureCheckDone(self, filename, result):
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
127 """
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
128 Public slot to dispatch the result.
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
129
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
130 @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
131 @type str
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
132 @param result result dictionary
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
133 @type dict
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
134 """
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
135 self.analysisDone.emit(filename, result)
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
136
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
137 def __initialize(self):
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
138 """
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
139 Private slot to (re)initialize the plug-in.
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
140 """
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
141 self.__projectAct = None
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
142 self.__projectVultureCheckerDialog = None
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
143
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
144 def vultureCheck(self, lang, filename, source):
1
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 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
147
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
148 @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
149 algorithm
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
150 @type str or None
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
151 @param filename name of the file to analyze
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
152 @type str
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
153 @param source string containing the code
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
154 @type str
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
155 """
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
156 if lang is None:
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
157 lang = 'Python{0}'.format(determinePythonVersion(filename, source))
62
4a69da851bd2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
158 if lang != 'Python3':
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
159 return
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 self.backgroundService.enqueueRequest(
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
162 'vulture', lang, filename, [source])
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
163
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
164 def vultureCheckBatch(self, argumentsList):
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
165 """
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
166 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
167 the batch mode.
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
168
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
169 @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
170 containing filename and source
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
171 @type (str, str)
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
172 """
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
173 data = {
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
174 "Python3": [],
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
175 }
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
176 for filename, source in argumentsList:
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
177 lang = 'Python{0}'.format(determinePythonVersion(filename, source))
62
4a69da851bd2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
178 if lang != 'Python3':
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
179 continue
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
180 else:
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
181 data[lang].append((filename, source))
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
182
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
183 self.queuedBatches = []
62
4a69da851bd2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
184 if data['Python3']:
4a69da851bd2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
185 self.queuedBatches.append('Python3')
4a69da851bd2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
186 self.backgroundService.enqueueRequest(
4a69da851bd2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
187 'batch_vulture', 'Python3', "", data['Python3'])
4a69da851bd2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
188 self.batchesFinished = False
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
189
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
190 def cancelVultureCheckBatch(self):
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
191 """
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
192 Public method to cancel all batch jobs.
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
193 """
62
4a69da851bd2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
194 self.backgroundService.requestCancel('batch_vulture', 'Python3')
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
195
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
196 def activate(self):
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
197 """
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
198 Public method to activate this plug-in.
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
199
79
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
200 @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
201 @rtype tuple of (None, bool)
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
202 """
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
203 global error
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
204 error = "" # clear previous error
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
205
79
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
206 menu = ericApp().getObject("Project").getMenu("Checks")
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
207 if menu:
79
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
208 self.__projectAct = EricAction(
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
209 self.tr('Check Unused Code'),
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
210 self.tr('&Unused Code...'), 0, 0,
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
211 self, 'project_check_vulture')
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
212 self.__projectAct.setStatusTip(
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
213 self.tr('Check for unused code'))
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
214 self.__projectAct.setWhatsThis(self.tr(
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
215 """<b>Check Unused Code...</b>"""
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
216 """<p>This checks a Python project for unused code.</p>"""
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
217 ))
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
218 self.__projectAct.triggered.connect(
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
219 self.__projectVultureCheck)
79
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
220 ericApp().getObject("Project").addEricActions([self.__projectAct])
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
221 menu.addAction(self.__projectAct)
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
222
79
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
223 ericApp().getObject("Project").showMenu.connect(self.__projectShowMenu)
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
224 ericApp().getObject("Project").projectClosed.connect(
4
2a12ec365dd1 Started implementing the whitelist functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
225 self.__projectClosed)
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
226
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
227 return None, True
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
228
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
229 def deactivate(self):
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
230 """
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
231 Public method to deactivate this plug-in.
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
232 """
79
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
233 ericApp().getObject("Project").showMenu.disconnect(
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
234 self.__projectShowMenu)
79
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
235 ericApp().getObject("Project").projectClosed.disconnect(
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
236 self.__projectClosed)
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
237
79
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
238 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
239 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
240 menu.removeAction(self.__projectAct)
79
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
241 ericApp().getObject("Project").removeEricActions(
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
242 [self.__projectAct])
23
416ea417de46 Fixed a bug deactivating the plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
243
416ea417de46 Fixed a bug deactivating the plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
244 self.__initialize()
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
245
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
246 def __loadTranslator(self):
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
247 """
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
248 Private method to load the translation file.
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
249 """
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
250 if self.__ui is not None:
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
251 loc = self.__ui.getLocale()
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
252 if loc and loc != "C":
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
253 locale_dir = os.path.join(
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
254 os.path.dirname(__file__), "VultureChecker", "i18n")
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
255 translation = "vulture_{0}".format(loc)
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
256 translator = QTranslator(None)
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
257 loaded = translator.load(translation, locale_dir)
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
258 if loaded:
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
259 self.__translator = translator
79
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
260 ericApp().installTranslator(self.__translator)
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
261 else:
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
262 print("Warning: translation file '{0}' could not be"
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
263 " loaded.".format(translation))
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
264 print("Using default.")
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
265
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
266 def __projectShowMenu(self, menuName, menu):
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
267 """
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
268 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
269 about to be shown.
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
270
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
271 @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
272 @type str
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
273 @param menu reference to the menu
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
274 @type QMenu
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
275 """
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
276 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
277 self.__projectAct.setEnabled(
79
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
278 ericApp().getObject("Project")
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
279 .getProjectLanguage() == "Python3"
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
280 )
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
281
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
282 def __projectVultureCheck(self):
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
283 """
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
284 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
285 """
79
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
286 project = ericApp().getObject("Project")
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
287 project.saveAllScripts()
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
288 ppath = project.getProjectPath()
79
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
289 files = [
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
290 os.path.join(ppath, file_)
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
291 for file_ in project.getSources()
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
292 if file_.endswith(
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
293 tuple(Preferences.getPython("Python3Extensions"))
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
294 )
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
295 ]
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
296
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
297 if self.__projectVultureCheckerDialog is None:
62
4a69da851bd2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
298 from VultureChecker.VultureCheckerDialog import (
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
299 VultureCheckerDialog
62
4a69da851bd2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
300 )
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
301 self.__projectVultureCheckerDialog = VultureCheckerDialog(self)
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
302 self.__projectVultureCheckerDialog.show()
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
303 self.__projectVultureCheckerDialog.prepare(files, project)
4
2a12ec365dd1 Started implementing the whitelist functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
304
2a12ec365dd1 Started implementing the whitelist functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
305 def __projectClosed(self):
2a12ec365dd1 Started implementing the whitelist functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
306 """
2a12ec365dd1 Started implementing the whitelist functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
307 Private slot to handle closing a project.
2a12ec365dd1 Started implementing the whitelist functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
308 """
62
4a69da851bd2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
309 if self.__projectVultureCheckerDialog:
4
2a12ec365dd1 Started implementing the whitelist functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
310 self.__projectVultureCheckerDialog.clear()
45
232ed15782bb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
311
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
312
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
313 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
314 """
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
315 Function to install dependencies of this plug-in.
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
316
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
317 @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
318 @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
319 """
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
320 try:
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
321 import vulture # __IGNORE_WARNING__
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
322 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
323 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
324
45
232ed15782bb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
325 #
232ed15782bb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
326 # eflag: noqa = M801

eric ide

mercurial