VultureChecker/VultureCheckerService.py

changeset 18
e19e7622a428
parent 9
1ce891a2b3ae
child 39
445ed09016ce
equal deleted inserted replaced
17:0063e49e772f 18:e19e7622a428
11 11
12 try: 12 try:
13 str = unicode # __IGNORE_EXCEPTION__ __IGNORE_WARNING__ 13 str = unicode # __IGNORE_EXCEPTION__ __IGNORE_WARNING__
14 except NameError: 14 except NameError:
15 pass 15 pass
16
17 import ast
18 16
19 import multiprocessing 17 import multiprocessing
20 import sys 18 import sys
21 19
22 from vulture import Vulture 20 from vulture import Vulture
117 for filename, source in iter(input.get, 'STOP'): 115 for filename, source in iter(input.get, 'STOP'):
118 result = __analyze(filename, source) 116 result = __analyze(filename, source)
119 output.put((filename, result)) 117 output.put((filename, result))
120 118
121 119
122 def __analyze(file, text=""): 120 def __analyze(filename, text=""):
123 """ 121 """
124 Private function to analyze one Python file. 122 Private function to analyze one Python file.
125 123
126 @param file source file name 124 @param filename source file name
127 @type str 125 @type str
128 @param text source text 126 @param text source text
129 @type str 127 @type str
130 @return tuple containing the result dictionary 128 @return tuple containing the result dictionary
131 @rtype (tuple of dict) 129 @rtype (tuple of dict)
136 text = text.encode('utf-8') 134 text = text.encode('utf-8')
137 except UnicodeError: 135 except UnicodeError:
138 pass 136 pass
139 137
140 try: 138 try:
141 v = EricVulture(file) 139 v = EricVulture()
142 v.scan(text) 140 v.scan(text, filename=filename)
143 res = v.getResults() 141 res = v.getResults()
144 except Exception as err: 142 except Exception as err:
145 res = {"error": str(err)} 143 res = {"error": str(err)}
146 return (res, ) 144 return (res, )
147 145
148 146
149 class EricVulture(Vulture): 147 class EricVulture(Vulture):
150 """ 148 """
151 Class to adopt the Vulture class to the eric plug-in functionality. 149 Class to adopt the Vulture class to the eric plug-in functionality.
152 """ 150 """
153 def __init__(self, filename):
154 """
155 Constructor
156
157 @param filename source file name
158 @type str
159 """
160 super(EricVulture, self).__init__()
161
162 self.file = filename
163 self.code = None
164
165 def scan(self, source):
166 """
167 Public method to scan the source text.
168
169 @param source source text
170 @type str
171 """
172 self.code = source.splitlines()
173 node = ast.parse(source, filename=self.file)
174 self.visit(node)
175
176 def __item2Dict(self, item): 151 def __item2Dict(self, item):
177 """ 152 """
178 Private method to convert a vulture item to a dictionary. 153 Private method to convert a vulture item to a dictionary.
179 154
180 @param item vulture item 155 @param item vulture item
183 @rtype dict 158 @rtype dict
184 """ 159 """
185 d = { 160 d = {
186 "name": str(item), 161 "name": str(item),
187 "type": getattr(item, "typ", ""), 162 "type": getattr(item, "typ", ""),
188 "file": getattr(item, "file", ""), 163 "file": getattr(item, "filename", ""),
189 "line": getattr(item, "lineno", ""), 164 "line": getattr(item, "lineno", ""),
190 } 165 }
191 return d 166 return d
192 167
193 def getResults(self): 168 def getResults(self):

eric ide

mercurial