VultureChecker/VultureCheckerService.py

Thu, 10 Jan 2019 14:20:59 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Thu, 10 Jan 2019 14:20:59 +0100
changeset 60
31b4426c9502
parent 55
7925ae5c9f17
child 61
9d01e990bb27
permissions
-rw-r--r--

Updated copyright for 2019.

2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
60
31b4426c9502 Updated copyright for 2019.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 55
diff changeset
3 # Copyright (c) 2015 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing the cyclomatic complexity service.
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 from __future__ import unicode_literals
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 try:
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13 str = unicode # __IGNORE_EXCEPTION__ __IGNORE_WARNING__
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14 except NameError:
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15 pass
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16
49
7b55dc5d09d2 Fixed a serious bug related to the queue module being called Queue in Python 2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
17 try:
7b55dc5d09d2 Fixed a serious bug related to the queue module being called Queue in Python 2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
18 import Queue as queue # Py2
7b55dc5d09d2 Fixed a serious bug related to the queue module being called Queue in Python 2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
19 except ImportError:
7b55dc5d09d2 Fixed a serious bug related to the queue module being called Queue in Python 2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
20 import queue
7b55dc5d09d2 Fixed a serious bug related to the queue module being called Queue in Python 2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
21
47
4e19b213fc3f Corrected an issue in the checker services that caused it to block, if an exception was thrown in the checker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
22 import sys
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 import multiprocessing
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 from vulture import Vulture
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 def initService():
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 """
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 Initialize the service and return the entry point.
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 @return the entry point for the background client (function)
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 """
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 return vultureCheck
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 def initBatchService():
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 """
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 Initialize the batch service and return the entry point.
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 @return the entry point for the background client (function)
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 """
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 return batchVultureCheck
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 def vultureCheck(file, text=""):
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 """
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 Private function to analyze one file.
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 @param file source filename
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 @type str
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 @param text source text
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 @type str
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 @return tuple containing the result dictionary
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 @rtype (tuple of dict)
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 """
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 return __analyze(file, text)
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59
51
cf5c3ddc1de3 Added functionality to limit the number of processes used for background services.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 49
diff changeset
60 def batchVultureCheck(argumentsList, send, fx, cancelled, maxProcesses=0):
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 """
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 Module function to analyze a batch of files.
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 @param argumentsList list of arguments tuples as given for vultureCheck
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 @type list
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 @param send reference to send function
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 @type function
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 @param fx registered service name
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 @type str
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 @param cancelled reference to function checking for a cancellation
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 @type function
51
cf5c3ddc1de3 Added functionality to limit the number of processes used for background services.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 49
diff changeset
72 @param maxProcesses number of processes to be used
cf5c3ddc1de3 Added functionality to limit the number of processes used for background services.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 49
diff changeset
73 @type int
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 """
51
cf5c3ddc1de3 Added functionality to limit the number of processes used for background services.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 49
diff changeset
75 if maxProcesses == 0:
cf5c3ddc1de3 Added functionality to limit the number of processes used for background services.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 49
diff changeset
76 # determine based on CPU count
cf5c3ddc1de3 Added functionality to limit the number of processes used for background services.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 49
diff changeset
77 try:
cf5c3ddc1de3 Added functionality to limit the number of processes used for background services.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 49
diff changeset
78 NumberOfProcesses = multiprocessing.cpu_count()
cf5c3ddc1de3 Added functionality to limit the number of processes used for background services.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 49
diff changeset
79 if NumberOfProcesses >= 1:
cf5c3ddc1de3 Added functionality to limit the number of processes used for background services.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 49
diff changeset
80 NumberOfProcesses -= 1
cf5c3ddc1de3 Added functionality to limit the number of processes used for background services.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 49
diff changeset
81 except NotImplementedError:
cf5c3ddc1de3 Added functionality to limit the number of processes used for background services.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 49
diff changeset
82 NumberOfProcesses = 1
cf5c3ddc1de3 Added functionality to limit the number of processes used for background services.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 49
diff changeset
83 else:
cf5c3ddc1de3 Added functionality to limit the number of processes used for background services.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 49
diff changeset
84 NumberOfProcesses = maxProcesses
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 # Create queues
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 taskQueue = multiprocessing.Queue()
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 doneQueue = multiprocessing.Queue()
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 # Submit tasks (initially two time number of processes
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 initialTasks = 2 * NumberOfProcesses
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 for task in argumentsList[:initialTasks]:
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 taskQueue.put(task)
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 # Start worker processes
54
2194921f5e22 Adjusted the code style checking parameters and fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
96 for _ in range(NumberOfProcesses):
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 multiprocessing.Process(target=worker, args=(taskQueue, doneQueue))\
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 .start()
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 # Get and send results
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 endIndex = len(argumentsList) - initialTasks
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 for i in range(len(argumentsList)):
47
4e19b213fc3f Corrected an issue in the checker services that caused it to block, if an exception was thrown in the checker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
103 resultSent = False
4e19b213fc3f Corrected an issue in the checker services that caused it to block, if an exception was thrown in the checker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
104 wasCancelled = False
4e19b213fc3f Corrected an issue in the checker services that caused it to block, if an exception was thrown in the checker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
105
4e19b213fc3f Corrected an issue in the checker services that caused it to block, if an exception was thrown in the checker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
106 while not resultSent:
4e19b213fc3f Corrected an issue in the checker services that caused it to block, if an exception was thrown in the checker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
107 try:
4e19b213fc3f Corrected an issue in the checker services that caused it to block, if an exception was thrown in the checker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
108 # get result (waiting max. 3 seconds and send it to frontend
4e19b213fc3f Corrected an issue in the checker services that caused it to block, if an exception was thrown in the checker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
109 filename, result = doneQueue.get()
4e19b213fc3f Corrected an issue in the checker services that caused it to block, if an exception was thrown in the checker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
110 send(fx, filename, result)
4e19b213fc3f Corrected an issue in the checker services that caused it to block, if an exception was thrown in the checker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
111 resultSent = True
4e19b213fc3f Corrected an issue in the checker services that caused it to block, if an exception was thrown in the checker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
112 except queue.Empty:
4e19b213fc3f Corrected an issue in the checker services that caused it to block, if an exception was thrown in the checker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
113 # ignore empty queue, just carry on
4e19b213fc3f Corrected an issue in the checker services that caused it to block, if an exception was thrown in the checker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
114 if cancelled():
4e19b213fc3f Corrected an issue in the checker services that caused it to block, if an exception was thrown in the checker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
115 wasCancelled = True
4e19b213fc3f Corrected an issue in the checker services that caused it to block, if an exception was thrown in the checker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
116 break
4e19b213fc3f Corrected an issue in the checker services that caused it to block, if an exception was thrown in the checker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
117
4e19b213fc3f Corrected an issue in the checker services that caused it to block, if an exception was thrown in the checker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
118 if wasCancelled or cancelled():
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 # just exit the loop ignoring the results of queued tasks
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 break
47
4e19b213fc3f Corrected an issue in the checker services that caused it to block, if an exception was thrown in the checker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
121
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 if i < endIndex:
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 taskQueue.put(argumentsList[i + initialTasks])
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 # Tell child processes to stop
54
2194921f5e22 Adjusted the code style checking parameters and fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
126 for _ in range(NumberOfProcesses):
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 taskQueue.put('STOP')
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129
45
232ed15782bb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
130 def worker(inputQueue, outputQueue):
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 """
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 Module function acting as the parallel worker for the cyclomatic
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 complexity calculation.
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134
45
232ed15782bb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
135 @param inputQueue input queue
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 @type multiprocessing.Queue
45
232ed15782bb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
137 @param outputQueue output queue
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 @type multiprocessing.Queue
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 """
45
232ed15782bb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
140 for filename, source in iter(inputQueue.get, 'STOP'):
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 result = __analyze(filename, source)
45
232ed15782bb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
142 outputQueue.put((filename, result))
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144
18
e19e7622a428 Added some vulture improvements from vulture repository.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
145 def __analyze(filename, text=""):
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 """
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 Private function to analyze one Python file.
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148
18
e19e7622a428 Added some vulture improvements from vulture repository.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
149 @param filename source file name
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 @type str
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 @param text source text
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 @type str
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 @return tuple containing the result dictionary
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154 @rtype (tuple of dict)
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 """
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 # Check type for py2: if not str it's unicode
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 if sys.version_info[0] == 2:
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158 try:
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 text = text.encode('utf-8')
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 except UnicodeError:
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161 pass
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 try:
18
e19e7622a428 Added some vulture improvements from vulture repository.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
164 v = EricVulture()
e19e7622a428 Added some vulture improvements from vulture repository.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
165 v.scan(text, filename=filename)
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166 res = v.getResults()
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167 except Exception as err:
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168 res = {"error": str(err)}
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169 return (res, )
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172 class EricVulture(Vulture):
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173 """
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174 Class to adopt the Vulture class to the eric plug-in functionality.
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 """
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 def __item2Dict(self, item):
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 """
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 Private method to convert a vulture item to a dictionary.
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 @param item vulture item
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 @type vulture.Item
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 @return item dictionary
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 @rtype dict
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184 """
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185 d = {
55
7925ae5c9f17 Upgraded the embedded vulture library to version 1.0.0 (with eric patches to support PyQt/PySide slots).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 54
diff changeset
186 "name": item.name,
7925ae5c9f17 Upgraded the embedded vulture library to version 1.0.0 (with eric patches to support PyQt/PySide slots).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 54
diff changeset
187 "type": item.typ,
7925ae5c9f17 Upgraded the embedded vulture library to version 1.0.0 (with eric patches to support PyQt/PySide slots).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 54
diff changeset
188 "file": item.filename,
7925ae5c9f17 Upgraded the embedded vulture library to version 1.0.0 (with eric patches to support PyQt/PySide slots).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 54
diff changeset
189 "first_line": item.first_lineno,
7925ae5c9f17 Upgraded the embedded vulture library to version 1.0.0 (with eric patches to support PyQt/PySide slots).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 54
diff changeset
190 "last_line": item.last_lineno,
7925ae5c9f17 Upgraded the embedded vulture library to version 1.0.0 (with eric patches to support PyQt/PySide slots).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 54
diff changeset
191 "confidence": item.confidence,
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192 }
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
193 return d
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
194
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195 def getResults(self):
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196 """
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197 Public method to get the scan results.
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
198
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199 @return scan results
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200 @rtype dict
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
201 """
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202 return {
9
1ce891a2b3ae Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
203 "DefinedAttributes":
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
204 [self.__item2Dict(i) for i in self.defined_attrs],
55
7925ae5c9f17 Upgraded the embedded vulture library to version 1.0.0 (with eric patches to support PyQt/PySide slots).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 54
diff changeset
205 "DefinedClasses":
7925ae5c9f17 Upgraded the embedded vulture library to version 1.0.0 (with eric patches to support PyQt/PySide slots).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 54
diff changeset
206 [self.__item2Dict(i) for i in self.defined_classes],
9
1ce891a2b3ae Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
207 "DefinedFunctions":
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
208 [self.__item2Dict(i) for i in self.defined_funcs],
55
7925ae5c9f17 Upgraded the embedded vulture library to version 1.0.0 (with eric patches to support PyQt/PySide slots).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 54
diff changeset
209 "DefinedImports":
7925ae5c9f17 Upgraded the embedded vulture library to version 1.0.0 (with eric patches to support PyQt/PySide slots).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 54
diff changeset
210 [self.__item2Dict(i) for i in self.defined_imports],
9
1ce891a2b3ae Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
211 "DefinedSlots":
7
a1a6ff3e5486 Patched the included vulture.py to support the @pyqtSlot() decorator.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
212 [self.__item2Dict(i) for i in self.defined_slots],
9
1ce891a2b3ae Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
213 "DefinedProperties":
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
214 [self.__item2Dict(i) for i in self.defined_props],
9
1ce891a2b3ae Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
215 "DefinedVariables":
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
216 [self.__item2Dict(i) for i in self.defined_vars],
55
7925ae5c9f17 Upgraded the embedded vulture library to version 1.0.0 (with eric patches to support PyQt/PySide slots).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 54
diff changeset
217 "UsedAttributes": list(self.used_attrs),
7925ae5c9f17 Upgraded the embedded vulture library to version 1.0.0 (with eric patches to support PyQt/PySide slots).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 54
diff changeset
218 "UsedNames": list(self.used_names),
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
219 }

eric ide

mercurial