I'm developing a Python static analysis tool that flags common programming
errors in Python programs. The tool is meant to complement other tools like
Pylint (which perform checks at lexical and syntactic level) by going
deeper with the code analysis and keeping track of the possible control
flow paths in the program (path-sensitive analysis).

For instance, a path-sensitive analysis detects that the following snippet
of code would raise an AttributeError exception:

if object is None: # If the True branch is taken, we know the object is None
  object.doSomething() # ... so this statement would always fail

I'm writing first to the Python developers themselves to ask, in their
experience, what common pitfalls in the language & its standard library
such a static checker should look for. For instance, here [1] is a list of
static checks for the C++ language, as part of the Clang static analyzer
project.

My preliminary list of Python checks is quite rudimentary, but maybe could
serve as a discussion starter:

* Proper Unicode handling (for 2.x)
  - encode() is not called on str object
  - decode() is not called on unicode object
* Check for integer division by zero
* Check for None object dereferences

Thanks a lot,
Stefan Bucur

[1] http://clang-analyzer.llvm.org/available_checks.html
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to