On Fri, 25 Apr 2008 13:10:18 +0000
James Laska <jlaska(a)redhat.com> wrote:
I've been playing around with a side project of using pychecker
to
provide early warning of typos/thinkos and questionable practices.
I'm basically looking for many of the benefits that a compiler
provides when it can't resolve find a variable/class/function name
etc...
I've got the right mix of pychecker cmdline args such that the subset
of issues is now manageable. But I'm curious if folks have any
general thoughts on this subject.
What are your best practices?
Are there other similar tools out there?
Have any experiences to share or words of caution/wisdom?
Hey James,
I've been using pylint for a while and I must say it's pretty useful.
It takes a while though to tune some of the tests - like
* every variable has to be at least 3 chars (except for i when
iterating), so often used 'id' won't pass as well as common for l in
lines, for k,v in dict.iteritems() and such
* pylint complains about nonexisting properties if you override the
__getattr__ method.
* in default * and ** magic is now allowed (from foo import *, def
bar(*args, **kwargs), which is sometimes very useful
But it has pretty good documentation, commented config file and you can
tune the checks using comments in the .py files themselves
to disable a check for a file or even a block of code as simply as for
example '# pylint: disable-msg=C0103' to disable warning about module
variable in lowercase.
As I mentioned, you really have to take the time to configure it to
your standart. As some people prefer to use CamelCase, some
use_underline. After that is helps you keep the same standart
throughout the whole project. And writing your own tests (plugins) is
easy and fun :)
HTH,
/David
--
===================================================================
David Kovalsky dkovalsk(a)redhat.com
Quality Engineer & EUS (z-stream) QE point person
Red Hat Czech s.r.o. Brno, Czech Republic
tel: +420 532 294 223
mobile: +420 777 707 369
IRC: #0day, #brno, #errata, #qa, #rhlp, #tps, #urt
===================================================================