Re: Is there a technic to avoid this bug

2007-03-01 Thread Fabio Zadrozny

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

2007-02-27 Thread hg
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

2007-02-27 Thread Diez B. Roggisch
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

2007-02-27 Thread Michele Simionato
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

2007-02-27 Thread hg
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

2007-02-27 Thread John J. Lee
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

2007-02-27 Thread Ben Finney
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