Re: Is there a technic to avoid this bug
On 2/27/07, hg [EMAIL PROTECTED] wrote: Michele Simionato wrote: pychecker Thanks all ... pydev extension does not however ... will have to install pychecker also. Just as a note: pydev extensions 1.2.8 supports that... (just released) Cheers, Fabio -- http://mail.python.org/mailman/listinfo/python-list
Is there a technic to avoid this bug
Hi, In C/C++ I got used to write an expression like so: #define TEST 0 if (TEST == value) { } in order to avoid the usual bug: if (value = TEST) { } In a relatively similar domain, I spent a few hours find this bug: value == self.Get_Value() if value == WHATEVER: do this instead of value = self.Get_Value() if value == WHATEVER: do this Is there a way to avoid such a bug with some type of construct ? Thanks, hg -- http://mail.python.org/mailman/listinfo/python-list
Re: Is there a technic to avoid this bug
hg wrote: Hi, In C/C++ I got used to write an expression like so: #define TEST 0 if (TEST == value) { } in order to avoid the usual bug: if (value = TEST) { } In a relatively similar domain, I spent a few hours find this bug: value == self.Get_Value() if value == WHATEVER: do this instead of value = self.Get_Value() if value == WHATEVER: do this Is there a way to avoid such a bug with some type of construct ? No. In a language inherent with sideeffects, there is nothing that should force you to not write that. However, it might be that either pychecker or pylint will give you a warning for such statements. Diez -- http://mail.python.org/mailman/listinfo/python-list
Re: Is there a technic to avoid this bug
On Feb 27, 1:49 pm, Diez B. Roggisch [EMAIL PROTECTED] wrote: However, it might be that either pychecker or pylint will give you a warning for such statements. Yep, pychecker gives a warning Statement appears to have no effect Michele Simionato -- http://mail.python.org/mailman/listinfo/python-list
Re: Is there a technic to avoid this bug
Michele Simionato wrote: pychecker Thanks all ... pydev extension does not however ... will have to install pychecker also. hg -- http://mail.python.org/mailman/listinfo/python-list
Re: Is there a technic to avoid this bug
Diez B. Roggisch [EMAIL PROTECTED] writes: hg wrote: [...] In a relatively similar domain, I spent a few hours find this bug: value == self.Get_Value() if value == WHATEVER: do this instead of value = self.Get_Value() if value == WHATEVER: do this Is there a way to avoid such a bug with some type of construct ? No. In a language inherent with sideeffects, there is nothing that should force you to not write that. [...] It's illegal in C#: // compare.cs -- class BadComparison { static void Main() { 1 == 2; } } // end - $ mcs compare.cs compare.cs(3,9): error CS0201: Only assignment, call, increment, decrement, and new object expressions can be used as a statement Compilation failed: 1 error(s), 0 warnings csharp[0]$ // compare2.cs -- class BadComparison { static void Main() { bool falsehood = 1 == 2; } } // end - $ mcs compare2.cs compare2.cs(3,14): warning CS0219: The variable `falsehood' is assigned but its value is never used Compilation succeeded - 1 warning(s) John -- http://mail.python.org/mailman/listinfo/python-list
Re: Is there a technic to avoid this bug
hg [EMAIL PROTECTED] writes: I spent a few hours find this bug: value == self.Get_Value() if value == WHATEVER: do this instead of value = self.Get_Value() if value == WHATEVER: do this Is there a way to avoid such a bug with some type of construct ? Use pylint to check your code for common mistakes. URL:http://www.logilab.org/projects/pylint = bad_assign.py = Demonstrate a logical error value = None value == 10 if value == 10: print Yep else: print Nope = $ python ./bad_assign.py Nope $ pylint ./bad_assign.py * Module bad_assign C: 2: Invalid name value (should match (([A-Z_][A-Z1-9_]*)|(__.*__))$) W: 4: Statement seems to have no effect [...] -- \When I was crossing the border into Canada, they asked if I | `\ had any firearms with me. I said, 'Well, what do you need?' | _o__) -- Steven Wright | Ben Finney -- http://mail.python.org/mailman/listinfo/python-list