Pychecker
Anthony Greene
sysfault at zetafunc.net
Fri Jun 9 15:41:57 EDT 2006
On Fri, 09 Jun 2006 11:46:59 -0700, Matt Good wrote:
> Anthony Greene wrote:
>> Howdy, I had the impression that pychecker caught and reported such
>> dynamic syntactical errors.
>>
>> #!/usr/bin/env python
>>
>>
>> def add(i):
>> i += 10
>>
>> status = 3
>>
>> if 1 == 1:
>> statuss = 15
>>
>> add(status)
>>
>> =======================
>>
>> exalted sysfault$ pychecker foo.py
>> Processing foo...
>>
>> Warnings...
>>
>> None
>>
>> =======================
>>
>> Hence the mispelling of status (statuss), which was done purposely to test
>> if pychecker will acknowledge and report the error. Do i need to enable
>> some type of pychecker option in order for it to pick up the error? I know
>> that it is syntactically correct in python, however it's likely that
>> 'status' is meant. Am i wishing that pychecker will replace a statically
>> typed language mechanism?
>
> That's a functional error, not a syntactical one. Analyzing the
> spelling of variables for similarity would lead to a lot of incorrect
> warnings since pychecker has no way to tell this apart from intentional
> similar spellings such as:
>
> values = [1, 2, 3]
> value = values[0]
>
> However, when the misspelling is made inside a local scope, rather than
> at the module level a warning is reported "test.py:8: Local variable
> (statuss) not used":
>
> def add(i):
> i += 10
>
> def test():
> status = 3
> if 1 == 1:
> statuss = 15
> add(status)
>
>
> This is why tools like pychecker (or pyflakes, pylint, or even a static
> code compiler) aren't a substitute for unit tests. They can definitely
> help catch common mistakes, but they can't ensure your code does what
> you intended.
Thanks guys, exactly what was needed.
--
A wise man knows he knows nothing.
More information about the Python-list
mailing list