[Python-Dev] Static checker for common Python programming errors

Francis Giraldeau francis.giraldeau at gmail.com
Mon Nov 17 20:50:21 CET 2014


If I may, there are prior work on JavaScript that may be worth
investigating. Formal verification of dynamically typed software is a
challenging endeavour, but it is very valuable to avoid errors at runtime,
providing benefits from strongly type language without the rigidity.

http://cs.au.dk/~amoeller/papers/tajs/

Good luck!

Francis

2014-11-17 9:49 GMT-05:00 Stefan Bucur <stefan.bucur at gmail.com>:

> 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 at python.org
> https://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe:
> https://mail.python.org/mailman/options/python-dev/francis.giraldeau%40gmail.com
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20141117/7daf83a0/attachment-0001.html>


More information about the Python-Dev mailing list