VultureChecker/VultureCheckerService.py

Fri, 31 Mar 2017 17:59:28 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Fri, 31 Mar 2017 17:59:28 +0200
changeset 47
4e19b213fc3f
parent 45
232ed15782bb
child 49
7b55dc5d09d2
permissions
-rw-r--r--

Corrected an issue in the checker services that caused it to block, if an exception was thrown in the checker class.

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
44
9be43ed02aaa Updated copyright for 2017.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 39
diff changeset
3 # Copyright (c) 2015 - 2017 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
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
17 import sys
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 import multiprocessing
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
19 import queue
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 from vulture import Vulture
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 def initService():
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 """
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 Initialize the service and return the entry point.
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 @return the entry point for the background client (function)
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 return vultureCheck
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
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 def initBatchService():
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 """
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 Initialize the batch service and return the entry point.
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 @return the entry point for the background client (function)
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 return batchVultureCheck
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
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 def vultureCheck(file, text=""):
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 """
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 Private function to analyze one file.
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 @param file source filename
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 @type str
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 @param text source text
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 @type str
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 @return tuple containing the result dictionary
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 @rtype (tuple of dict)
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 """
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 return __analyze(file, text)
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 def batchVultureCheck(argumentsList, send, fx, cancelled):
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 """
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 Module function to analyze a batch of files.
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 @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
61 @type list
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 @param send reference to send function
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 @type function
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 @param fx registered service name
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 @type str
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 @param cancelled reference to function checking for a cancellation
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 """
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 try:
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 NumberOfProcesses = multiprocessing.cpu_count()
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 if NumberOfProcesses >= 1:
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 NumberOfProcesses -= 1
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 except NotImplementedError:
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 NumberOfProcesses = 1
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 # Create queues
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 taskQueue = multiprocessing.Queue()
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 doneQueue = multiprocessing.Queue()
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 # Submit tasks (initially two time number of processes
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 initialTasks = 2 * NumberOfProcesses
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 for task in argumentsList[:initialTasks]:
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 taskQueue.put(task)
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 # Start worker processes
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 for i in range(NumberOfProcesses):
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 multiprocessing.Process(target=worker, args=(taskQueue, doneQueue))\
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 .start()
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 # Get and send results
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 endIndex = len(argumentsList) - initialTasks
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 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
93 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
94 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
95
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
96 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
97 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
98 # 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
99 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
100 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
101 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
102 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
103 # 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
104 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
105 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
106 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
107
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 if wasCancelled or cancelled():
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 # 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
110 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
111
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 if i < endIndex:
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 taskQueue.put(argumentsList[i + initialTasks])
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 # Tell child processes to stop
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 for i in range(NumberOfProcesses):
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 taskQueue.put('STOP')
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119
45
232ed15782bb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
120 def worker(inputQueue, outputQueue):
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 """
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 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
123 complexity calculation.
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124
45
232ed15782bb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
125 @param inputQueue input queue
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 @type multiprocessing.Queue
45
232ed15782bb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
127 @param outputQueue output queue
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128 @type multiprocessing.Queue
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 for filename, source in iter(inputQueue.get, 'STOP'):
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 result = __analyze(filename, source)
45
232ed15782bb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
132 outputQueue.put((filename, result))
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134
18
e19e7622a428 Added some vulture improvements from vulture repository.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
135 def __analyze(filename, text=""):
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 """
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 Private function to analyze one Python file.
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138
18
e19e7622a428 Added some vulture improvements from vulture repository.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
139 @param filename source file name
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 @type str
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 @param text source text
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 @type str
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 @return tuple containing the result dictionary
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 @rtype (tuple of dict)
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 """
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 # 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
147 if sys.version_info[0] == 2:
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 try:
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 text = text.encode('utf-8')
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 except UnicodeError:
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 pass
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 try:
18
e19e7622a428 Added some vulture improvements from vulture repository.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
154 v = EricVulture()
e19e7622a428 Added some vulture improvements from vulture repository.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
155 v.scan(text, filename=filename)
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 res = v.getResults()
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 except Exception as err:
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158 res = {"error": str(err)}
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 return (res, )
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 class EricVulture(Vulture):
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 """
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 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
165 """
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166 def __item2Dict(self, item):
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167 """
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168 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
169
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170 @param item vulture item
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171 @type vulture.Item
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172 @return item dictionary
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173 @rtype dict
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174 """
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 d = {
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 "name": str(item),
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 "type": getattr(item, "typ", ""),
18
e19e7622a428 Added some vulture improvements from vulture repository.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
178 "file": getattr(item, "filename", ""),
9
1ce891a2b3ae Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
179 "line": getattr(item, "lineno", ""),
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 }
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 return d
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 def getResults(self):
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 Public method to get the scan results.
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187 @return scan results
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188 @rtype dict
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 """
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190 return {
9
1ce891a2b3ae Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
191 "DefinedAttributes":
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192 [self.__item2Dict(i) for i in self.defined_attrs],
9
1ce891a2b3ae Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
193 "DefinedFunctions":
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
194 [self.__item2Dict(i) for i in self.defined_funcs],
9
1ce891a2b3ae Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
195 "DefinedSlots":
7
a1a6ff3e5486 Patched the included vulture.py to support the @pyqtSlot() decorator.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
196 [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
197 "DefinedProperties":
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
198 [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
199 "DefinedVariables":
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200 [self.__item2Dict(i) for i in self.defined_vars],
9
1ce891a2b3ae Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
201 "UsedAttributes":
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202 [self.__item2Dict(i) for i in self.used_attrs],
9
1ce891a2b3ae Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
203 "UsedVariables":
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
204 [self.__item2Dict(i) for i in self.used_vars],
9
1ce891a2b3ae Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
205 "TupleVariables":
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
206 [self.__item2Dict(i) for i in self.tuple_assign_vars],
9
1ce891a2b3ae Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
207 "Aliases":
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
208 [self.__item2Dict(i) for i in self.names_imported_as_aliases],
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209 }

eric ide

mercurial