158 </p> |
158 </p> |
159 <h3>Derived from</h3> |
159 <h3>Derived from</h3> |
160 object |
160 object |
161 <h3>Class Attributes</h3> |
161 <h3>Class Attributes</h3> |
162 <table> |
162 <table> |
163 <tr><td>ATTRIBUTES</td></tr><tr><td>INVERT</td></tr><tr><td>MOD</td></tr><tr><td>NONLOCAL</td></tr><tr><td>PASS</td></tr><tr><td>SET</td></tr><tr><td>SETCOMP</td></tr><tr><td>WHILE</td></tr><tr><td>nodeDepth</td></tr><tr><td>scope</td></tr><tr><td>traceTree</td></tr> |
163 <tr><td>ATTRIBUTES</td></tr><tr><td>BOOLOP</td></tr><tr><td>CALL</td></tr><tr><td>COMPREHENSION</td></tr><tr><td>INVERT</td></tr><tr><td>ISNOT</td></tr><tr><td>LOAD</td></tr><tr><td>MOD</td></tr><tr><td>NONLOCAL</td></tr><tr><td>PASS</td></tr><tr><td>RETURN</td></tr><tr><td>SETCOMP</td></tr><tr><td>SLICE</td></tr><tr><td>nodeDepth</td></tr><tr><td>scope</td></tr><tr><td>traceTree</td></tr> |
164 </table> |
164 </table> |
165 <h3>Methods</h3> |
165 <h3>Methods</h3> |
166 <table> |
166 <table> |
167 <tr> |
167 <tr> |
168 <td><a href="#Checker.__init__">Checker</a></td> |
168 <td><a href="#Checker.__init__">Checker</a></td> |
169 <td>Constructor</td> |
169 <td>Constructor</td> |
170 </tr><tr> |
170 </tr><tr> |
171 <td><a href="#Checker.ASSERT">ASSERT</a></td> |
|
172 <td></td> |
|
173 </tr><tr> |
|
174 <td><a href="#Checker.ASSIGN">ASSIGN</a></td> |
171 <td><a href="#Checker.ASSIGN">ASSIGN</a></td> |
175 <td></td> |
172 <td></td> |
176 </tr><tr> |
173 </tr><tr> |
177 <td><a href="#Checker.ATTRIBUTE">ATTRIBUTE</a></td> |
|
178 <td></td> |
|
179 </tr><tr> |
|
180 <td><a href="#Checker.AUGASSIGN">AUGASSIGN</a></td> |
174 <td><a href="#Checker.AUGASSIGN">AUGASSIGN</a></td> |
181 <td></td> |
|
182 </tr><tr> |
|
183 <td><a href="#Checker.BINOP">BINOP</a></td> |
|
184 <td></td> |
|
185 </tr><tr> |
|
186 <td><a href="#Checker.BOOLOP">BOOLOP</a></td> |
|
187 <td></td> |
|
188 </tr><tr> |
|
189 <td><a href="#Checker.CALL">CALL</a></td> |
|
190 <td></td> |
175 <td></td> |
191 </tr><tr> |
176 </tr><tr> |
192 <td><a href="#Checker.CLASSDEF">CLASSDEF</a></td> |
177 <td><a href="#Checker.CLASSDEF">CLASSDEF</a></td> |
193 <td>Check names used in a class definition, including its decorators, base classes, and the body of its definition.</td> |
178 <td>Check names used in a class definition, including its decorators, base classes, and the body of its definition.</td> |
194 </tr><tr> |
179 </tr><tr> |
195 <td><a href="#Checker.COMPARE">COMPARE</a></td> |
|
196 <td></td> |
|
197 </tr><tr> |
|
198 <td><a href="#Checker.COMPREHENSION">COMPREHENSION</a></td> |
|
199 <td></td> |
|
200 </tr><tr> |
|
201 <td><a href="#Checker.DELETE">DELETE</a></td> |
|
202 <td></td> |
|
203 </tr><tr> |
|
204 <td><a href="#Checker.DICT">DICT</a></td> |
|
205 <td></td> |
|
206 </tr><tr> |
|
207 <td><a href="#Checker.DICTCOMP">DICTCOMP</a></td> |
180 <td><a href="#Checker.DICTCOMP">DICTCOMP</a></td> |
208 <td></td> |
181 <td></td> |
209 </tr><tr> |
182 </tr><tr> |
210 <td><a href="#Checker.EXCEPTHANDLER">EXCEPTHANDLER</a></td> |
183 <td><a href="#Checker.EXCEPTHANDLER">EXCEPTHANDLER</a></td> |
211 <td></td> |
|
212 </tr><tr> |
|
213 <td><a href="#Checker.EXPR">EXPR</a></td> |
|
214 <td></td> |
|
215 </tr><tr> |
|
216 <td><a href="#Checker.EXTSLICE">EXTSLICE</a></td> |
|
217 <td></td> |
184 <td></td> |
218 </tr><tr> |
185 </tr><tr> |
219 <td><a href="#Checker.FOR">FOR</a></td> |
186 <td><a href="#Checker.FOR">FOR</a></td> |
220 <td>Process bindings for loop variables.</td> |
187 <td>Process bindings for loop variables.</td> |
221 </tr><tr> |
188 </tr><tr> |
223 <td></td> |
190 <td></td> |
224 </tr><tr> |
191 </tr><tr> |
225 <td><a href="#Checker.GLOBAL">GLOBAL</a></td> |
192 <td><a href="#Checker.GLOBAL">GLOBAL</a></td> |
226 <td>Keep track of globals declarations.</td> |
193 <td>Keep track of globals declarations.</td> |
227 </tr><tr> |
194 </tr><tr> |
228 <td><a href="#Checker.IF">IF</a></td> |
|
229 <td></td> |
|
230 </tr><tr> |
|
231 <td><a href="#Checker.IFEXP">IFEXP</a></td> |
|
232 <td></td> |
|
233 </tr><tr> |
|
234 <td><a href="#Checker.IMPORT">IMPORT</a></td> |
195 <td><a href="#Checker.IMPORT">IMPORT</a></td> |
235 <td></td> |
196 <td></td> |
236 </tr><tr> |
197 </tr><tr> |
237 <td><a href="#Checker.IMPORTFROM">IMPORTFROM</a></td> |
198 <td><a href="#Checker.IMPORTFROM">IMPORTFROM</a></td> |
238 <td></td> |
199 <td></td> |
239 </tr><tr> |
200 </tr><tr> |
240 <td><a href="#Checker.INDEX">INDEX</a></td> |
|
241 <td></td> |
|
242 </tr><tr> |
|
243 <td><a href="#Checker.KEYWORD">KEYWORD</a></td> |
|
244 <td></td> |
|
245 </tr><tr> |
|
246 <td><a href="#Checker.LAMBDA">LAMBDA</a></td> |
201 <td><a href="#Checker.LAMBDA">LAMBDA</a></td> |
247 <td></td> |
202 <td></td> |
248 </tr><tr> |
203 </tr><tr> |
249 <td><a href="#Checker.LIST">LIST</a></td> |
|
250 <td></td> |
|
251 </tr><tr> |
|
252 <td><a href="#Checker.LISTCOMP">LISTCOMP</a></td> |
204 <td><a href="#Checker.LISTCOMP">LISTCOMP</a></td> |
253 <td></td> |
205 <td></td> |
254 </tr><tr> |
206 </tr><tr> |
255 <td><a href="#Checker.NAME">NAME</a></td> |
207 <td><a href="#Checker.NAME">NAME</a></td> |
256 <td>Locate the name in locals / function / globals scopes.</td> |
208 <td>Handle occurrence of Name (which can be a load/store/delete access.)</td> |
257 </tr><tr> |
|
258 <td><a href="#Checker.RAISE">RAISE</a></td> |
|
259 <td></td> |
|
260 </tr><tr> |
|
261 <td><a href="#Checker.RETURN">RETURN</a></td> |
|
262 <td></td> |
|
263 </tr><tr> |
|
264 <td><a href="#Checker.SLICE">SLICE</a></td> |
|
265 <td></td> |
|
266 </tr><tr> |
209 </tr><tr> |
267 <td><a href="#Checker.STARRED">STARRED</a></td> |
210 <td><a href="#Checker.STARRED">STARRED</a></td> |
268 <td></td> |
|
269 </tr><tr> |
|
270 <td><a href="#Checker.SUBSCRIPT">SUBSCRIPT</a></td> |
|
271 <td></td> |
|
272 </tr><tr> |
|
273 <td><a href="#Checker.TRYEXCEPT">TRYEXCEPT</a></td> |
|
274 <td></td> |
|
275 </tr><tr> |
|
276 <td><a href="#Checker.TRYFINALLY">TRYFINALLY</a></td> |
|
277 <td></td> |
|
278 </tr><tr> |
|
279 <td><a href="#Checker.UNARYOP">UNARYOP</a></td> |
|
280 <td></td> |
|
281 </tr><tr> |
|
282 <td><a href="#Checker.WITH">WITH</a></td> |
|
283 <td>Handle with by checking the target of the statement (which can be an identifier, a list or tuple of targets, an attribute, etc) for undefined names and defining any it adds to the scope and by continuing to process the suite within the statement.</td> |
|
284 </tr><tr> |
|
285 <td><a href="#Checker.YIELD">YIELD</a></td> |
|
286 <td></td> |
211 <td></td> |
287 </tr><tr> |
212 </tr><tr> |
288 <td><a href="#Checker._runDeferred">_runDeferred</a></td> |
213 <td><a href="#Checker._runDeferred">_runDeferred</a></td> |
289 <td>Run the callables in deferred using their associated scope stack.</td> |
214 <td>Run the callables in deferred using their associated scope stack.</td> |
290 </tr><tr> |
215 </tr><tr> |
351 parsed module tree or module source code |
282 parsed module tree or module source code |
352 </dd><dt><i>filename</i></dt> |
283 </dd><dt><i>filename</i></dt> |
353 <dd> |
284 <dd> |
354 name of the module file (string) |
285 name of the module file (string) |
355 </dd> |
286 </dd> |
356 </dl><a NAME="Checker.ASSERT" ID="Checker.ASSERT"></a> |
287 </dl><a NAME="Checker.ASSIGN" ID="Checker.ASSIGN"></a> |
357 <h4>Checker.ASSERT</h4> |
|
358 <b>ASSERT</b>(<i>node</i>) |
|
359 <a NAME="Checker.ASSIGN" ID="Checker.ASSIGN"></a> |
|
360 <h4>Checker.ASSIGN</h4> |
288 <h4>Checker.ASSIGN</h4> |
361 <b>ASSIGN</b>(<i>node</i>) |
289 <b>ASSIGN</b>(<i>node</i>) |
362 <a NAME="Checker.ATTRIBUTE" ID="Checker.ATTRIBUTE"></a> |
|
363 <h4>Checker.ATTRIBUTE</h4> |
|
364 <b>ATTRIBUTE</b>(<i>node</i>) |
|
365 <a NAME="Checker.AUGASSIGN" ID="Checker.AUGASSIGN"></a> |
290 <a NAME="Checker.AUGASSIGN" ID="Checker.AUGASSIGN"></a> |
366 <h4>Checker.AUGASSIGN</h4> |
291 <h4>Checker.AUGASSIGN</h4> |
367 <b>AUGASSIGN</b>(<i>node</i>) |
292 <b>AUGASSIGN</b>(<i>node</i>) |
368 <a NAME="Checker.BINOP" ID="Checker.BINOP"></a> |
|
369 <h4>Checker.BINOP</h4> |
|
370 <b>BINOP</b>(<i>node</i>) |
|
371 <a NAME="Checker.BOOLOP" ID="Checker.BOOLOP"></a> |
|
372 <h4>Checker.BOOLOP</h4> |
|
373 <b>BOOLOP</b>(<i>node</i>) |
|
374 <a NAME="Checker.CALL" ID="Checker.CALL"></a> |
|
375 <h4>Checker.CALL</h4> |
|
376 <b>CALL</b>(<i>node</i>) |
|
377 <a NAME="Checker.CLASSDEF" ID="Checker.CLASSDEF"></a> |
293 <a NAME="Checker.CLASSDEF" ID="Checker.CLASSDEF"></a> |
378 <h4>Checker.CLASSDEF</h4> |
294 <h4>Checker.CLASSDEF</h4> |
379 <b>CLASSDEF</b>(<i>node</i>) |
295 <b>CLASSDEF</b>(<i>node</i>) |
380 <p> |
296 <p> |
381 Check names used in a class definition, including its decorators, base |
297 Check names used in a class definition, including its decorators, base |
382 classes, and the body of its definition. Additionally, add its name to |
298 classes, and the body of its definition. Additionally, add its name to |
383 the current scope. |
299 the current scope. |
384 </p><a NAME="Checker.COMPARE" ID="Checker.COMPARE"></a> |
300 </p><a NAME="Checker.DICTCOMP" ID="Checker.DICTCOMP"></a> |
385 <h4>Checker.COMPARE</h4> |
|
386 <b>COMPARE</b>(<i>node</i>) |
|
387 <a NAME="Checker.COMPREHENSION" ID="Checker.COMPREHENSION"></a> |
|
388 <h4>Checker.COMPREHENSION</h4> |
|
389 <b>COMPREHENSION</b>(<i>node</i>) |
|
390 <a NAME="Checker.DELETE" ID="Checker.DELETE"></a> |
|
391 <h4>Checker.DELETE</h4> |
|
392 <b>DELETE</b>(<i>node</i>) |
|
393 <a NAME="Checker.DICT" ID="Checker.DICT"></a> |
|
394 <h4>Checker.DICT</h4> |
|
395 <b>DICT</b>(<i>node</i>) |
|
396 <a NAME="Checker.DICTCOMP" ID="Checker.DICTCOMP"></a> |
|
397 <h4>Checker.DICTCOMP</h4> |
301 <h4>Checker.DICTCOMP</h4> |
398 <b>DICTCOMP</b>(<i>node</i>) |
302 <b>DICTCOMP</b>(<i>node</i>) |
399 <a NAME="Checker.EXCEPTHANDLER" ID="Checker.EXCEPTHANDLER"></a> |
303 <a NAME="Checker.EXCEPTHANDLER" ID="Checker.EXCEPTHANDLER"></a> |
400 <h4>Checker.EXCEPTHANDLER</h4> |
304 <h4>Checker.EXCEPTHANDLER</h4> |
401 <b>EXCEPTHANDLER</b>(<i>node</i>) |
305 <b>EXCEPTHANDLER</b>(<i>node</i>) |
402 <a NAME="Checker.EXPR" ID="Checker.EXPR"></a> |
|
403 <h4>Checker.EXPR</h4> |
|
404 <b>EXPR</b>(<i>node</i>) |
|
405 <a NAME="Checker.EXTSLICE" ID="Checker.EXTSLICE"></a> |
|
406 <h4>Checker.EXTSLICE</h4> |
|
407 <b>EXTSLICE</b>(<i>node</i>) |
|
408 <a NAME="Checker.FOR" ID="Checker.FOR"></a> |
306 <a NAME="Checker.FOR" ID="Checker.FOR"></a> |
409 <h4>Checker.FOR</h4> |
307 <h4>Checker.FOR</h4> |
410 <b>FOR</b>(<i>node</i>) |
308 <b>FOR</b>(<i>node</i>) |
411 <p> |
309 <p> |
412 Process bindings for loop variables. |
310 Process bindings for loop variables. |
416 <a NAME="Checker.GLOBAL" ID="Checker.GLOBAL"></a> |
314 <a NAME="Checker.GLOBAL" ID="Checker.GLOBAL"></a> |
417 <h4>Checker.GLOBAL</h4> |
315 <h4>Checker.GLOBAL</h4> |
418 <b>GLOBAL</b>(<i>node</i>) |
316 <b>GLOBAL</b>(<i>node</i>) |
419 <p> |
317 <p> |
420 Keep track of globals declarations. |
318 Keep track of globals declarations. |
421 </p><a NAME="Checker.IF" ID="Checker.IF"></a> |
319 </p><a NAME="Checker.IMPORT" ID="Checker.IMPORT"></a> |
422 <h4>Checker.IF</h4> |
|
423 <b>IF</b>(<i>node</i>) |
|
424 <a NAME="Checker.IFEXP" ID="Checker.IFEXP"></a> |
|
425 <h4>Checker.IFEXP</h4> |
|
426 <b>IFEXP</b>(<i>node</i>) |
|
427 <a NAME="Checker.IMPORT" ID="Checker.IMPORT"></a> |
|
428 <h4>Checker.IMPORT</h4> |
320 <h4>Checker.IMPORT</h4> |
429 <b>IMPORT</b>(<i>node</i>) |
321 <b>IMPORT</b>(<i>node</i>) |
430 <a NAME="Checker.IMPORTFROM" ID="Checker.IMPORTFROM"></a> |
322 <a NAME="Checker.IMPORTFROM" ID="Checker.IMPORTFROM"></a> |
431 <h4>Checker.IMPORTFROM</h4> |
323 <h4>Checker.IMPORTFROM</h4> |
432 <b>IMPORTFROM</b>(<i>node</i>) |
324 <b>IMPORTFROM</b>(<i>node</i>) |
433 <a NAME="Checker.INDEX" ID="Checker.INDEX"></a> |
|
434 <h4>Checker.INDEX</h4> |
|
435 <b>INDEX</b>(<i>node</i>) |
|
436 <a NAME="Checker.KEYWORD" ID="Checker.KEYWORD"></a> |
|
437 <h4>Checker.KEYWORD</h4> |
|
438 <b>KEYWORD</b>(<i>node</i>) |
|
439 <a NAME="Checker.LAMBDA" ID="Checker.LAMBDA"></a> |
325 <a NAME="Checker.LAMBDA" ID="Checker.LAMBDA"></a> |
440 <h4>Checker.LAMBDA</h4> |
326 <h4>Checker.LAMBDA</h4> |
441 <b>LAMBDA</b>(<i>node</i>) |
327 <b>LAMBDA</b>(<i>node</i>) |
442 <a NAME="Checker.LIST" ID="Checker.LIST"></a> |
|
443 <h4>Checker.LIST</h4> |
|
444 <b>LIST</b>(<i>node</i>) |
|
445 <a NAME="Checker.LISTCOMP" ID="Checker.LISTCOMP"></a> |
328 <a NAME="Checker.LISTCOMP" ID="Checker.LISTCOMP"></a> |
446 <h4>Checker.LISTCOMP</h4> |
329 <h4>Checker.LISTCOMP</h4> |
447 <b>LISTCOMP</b>(<i>node</i>) |
330 <b>LISTCOMP</b>(<i>node</i>) |
448 <a NAME="Checker.NAME" ID="Checker.NAME"></a> |
331 <a NAME="Checker.NAME" ID="Checker.NAME"></a> |
449 <h4>Checker.NAME</h4> |
332 <h4>Checker.NAME</h4> |
450 <b>NAME</b>(<i>node</i>) |
333 <b>NAME</b>(<i>node</i>) |
451 <p> |
334 <p> |
452 Locate the name in locals / function / globals scopes. |
335 Handle occurrence of Name (which can be a load/store/delete access.) |
453 </p><a NAME="Checker.RAISE" ID="Checker.RAISE"></a> |
336 </p><a NAME="Checker.STARRED" ID="Checker.STARRED"></a> |
454 <h4>Checker.RAISE</h4> |
|
455 <b>RAISE</b>(<i>node</i>) |
|
456 <a NAME="Checker.RETURN" ID="Checker.RETURN"></a> |
|
457 <h4>Checker.RETURN</h4> |
|
458 <b>RETURN</b>(<i>node</i>) |
|
459 <a NAME="Checker.SLICE" ID="Checker.SLICE"></a> |
|
460 <h4>Checker.SLICE</h4> |
|
461 <b>SLICE</b>(<i>node</i>) |
|
462 <a NAME="Checker.STARRED" ID="Checker.STARRED"></a> |
|
463 <h4>Checker.STARRED</h4> |
337 <h4>Checker.STARRED</h4> |
464 <b>STARRED</b>(<i>node</i>) |
338 <b>STARRED</b>(<i>node</i>) |
465 <a NAME="Checker.SUBSCRIPT" ID="Checker.SUBSCRIPT"></a> |
|
466 <h4>Checker.SUBSCRIPT</h4> |
|
467 <b>SUBSCRIPT</b>(<i>node</i>) |
|
468 <a NAME="Checker.TRYEXCEPT" ID="Checker.TRYEXCEPT"></a> |
|
469 <h4>Checker.TRYEXCEPT</h4> |
|
470 <b>TRYEXCEPT</b>(<i>node</i>) |
|
471 <a NAME="Checker.TRYFINALLY" ID="Checker.TRYFINALLY"></a> |
|
472 <h4>Checker.TRYFINALLY</h4> |
|
473 <b>TRYFINALLY</b>(<i>node</i>) |
|
474 <a NAME="Checker.UNARYOP" ID="Checker.UNARYOP"></a> |
|
475 <h4>Checker.UNARYOP</h4> |
|
476 <b>UNARYOP</b>(<i>node</i>) |
|
477 <a NAME="Checker.WITH" ID="Checker.WITH"></a> |
|
478 <h4>Checker.WITH</h4> |
|
479 <b>WITH</b>(<i>node</i>) |
|
480 <p> |
|
481 Handle with by checking the target of the statement (which can be an |
|
482 identifier, a list or tuple of targets, an attribute, etc) for |
|
483 undefined names and defining any it adds to the scope and by continuing |
|
484 to process the suite within the statement. |
|
485 </p><a NAME="Checker.YIELD" ID="Checker.YIELD"></a> |
|
486 <h4>Checker.YIELD</h4> |
|
487 <b>YIELD</b>(<i>node</i>) |
|
488 <a NAME="Checker._runDeferred" ID="Checker._runDeferred"></a> |
339 <a NAME="Checker._runDeferred" ID="Checker._runDeferred"></a> |
489 <h4>Checker._runDeferred</h4> |
340 <h4>Checker._runDeferred</h4> |
490 <b>_runDeferred</b>(<i>deferred</i>) |
341 <b>_runDeferred</b>(<i>deferred</i>) |
491 <p> |
342 <p> |
492 Run the callables in deferred using their associated scope stack. |
343 Run the callables in deferred using their associated scope stack. |
545 <h4>Checker.handleAssignName</h4> |
396 <h4>Checker.handleAssignName</h4> |
546 <b>handleAssignName</b>(<i>node</i>) |
397 <b>handleAssignName</b>(<i>node</i>) |
547 <a NAME="Checker.handleBody" ID="Checker.handleBody"></a> |
398 <a NAME="Checker.handleBody" ID="Checker.handleBody"></a> |
548 <h4>Checker.handleBody</h4> |
399 <h4>Checker.handleBody</h4> |
549 <b>handleBody</b>(<i>tree</i>) |
400 <b>handleBody</b>(<i>tree</i>) |
|
401 <a NAME="Checker.handleChildren" ID="Checker.handleChildren"></a> |
|
402 <h4>Checker.handleChildren</h4> |
|
403 <b>handleChildren</b>(<i>tree</i>) |
550 <a NAME="Checker.handleNode" ID="Checker.handleNode"></a> |
404 <a NAME="Checker.handleNode" ID="Checker.handleNode"></a> |
551 <h4>Checker.handleNode</h4> |
405 <h4>Checker.handleNode</h4> |
552 <b>handleNode</b>(<i>node, parent</i>) |
406 <b>handleNode</b>(<i>node, parent</i>) |
553 <a NAME="Checker.ignore" ID="Checker.ignore"></a> |
407 <a NAME="Checker.ignore" ID="Checker.ignore"></a> |
554 <h4>Checker.ignore</h4> |
408 <h4>Checker.ignore</h4> |
555 <b>ignore</b>(<i>node</i>) |
409 <b>ignore</b>(<i>node</i>) |
556 <a NAME="Checker.popScope" ID="Checker.popScope"></a> |
410 <a NAME="Checker.isDocstring" ID="Checker.isDocstring"></a> |
|
411 <h4>Checker.isDocstring</h4> |
|
412 <b>isDocstring</b>(<i>node</i>) |
|
413 <p> |
|
414 Determine if the given node is a docstring, as long as it is at the |
|
415 correct place in the node tree. |
|
416 </p><a NAME="Checker.popScope" ID="Checker.popScope"></a> |
557 <h4>Checker.popScope</h4> |
417 <h4>Checker.popScope</h4> |
558 <b>popScope</b>(<i></i>) |
418 <b>popScope</b>(<i></i>) |
559 <a NAME="Checker.pushClassScope" ID="Checker.pushClassScope"></a> |
419 <a NAME="Checker.pushClassScope" ID="Checker.pushClassScope"></a> |
560 <h4>Checker.pushClassScope</h4> |
420 <h4>Checker.pushClassScope</h4> |
561 <b>pushClassScope</b>(<i></i>) |
421 <b>pushClassScope</b>(<i></i>) |