[code-quality] Static checker for common Python programming errors

Dave Halter davidhalter88 at gmail.com
Tue Nov 18 14:01:45 CET 2014


Hi Stefan

I'm playing with this as well in Jedi. I'm pretty far with flow analysis
and AttributeErrors. (This includes everything you mention above except
integer division by zero). Would be easy to implement in Jedi, though. I
just have different priorities, at the moment.

If you have some time on your hands you can watch my EuroPython talk about
this: https://www.youtube.com/watch?v=DfVHSw0iOsk I'm also glad to skype
(gaukler_) if you're interested. Jedi is not well known for doing static
analysis. But it's my goal to change this now.

~ Dave

2014-11-17 18:18 GMT+01: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 AST 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 wanted first to tap into people's experience and get a sense of what
> common pitfalls in the language & its standard library such a static
> checker should look for. Just as an example of what I mean, 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
>
>
> _______________________________________________
> code-quality mailing list
> code-quality at python.org
> https://mail.python.org/mailman/listinfo/code-quality
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/code-quality/attachments/20141118/4291a288/attachment.html>


More information about the code-quality mailing list