PyCQA/flake8-bugbear

Proposed Check: Flag Improper Use of string.find()

Ouverte

#170 ouverte le 22 mai 2021

 (3 commentaires) (0 réaction) (0 personne assignée)Python (116 forks)github user discovery
enhancementhelp wanted

Métriques du dépôt

Stars
 (1 116 étoiles)
Métriques de merge PR
 (Merge moyen 4h 17m) (3 PRs mergées en 30 j)

Description

Title: Flag Improper Use of string.find()

Description The string.find() method is easy to mis-use. A common error is:

mystring='abc'
if mystring.find('def'):
  print("def is contained in {}".format(mystring)

The issue is that if string.find fails, it returns -1, which is "truthy". If string.find() locates the output at the beginning of the line, it returns 0 which is "false".

mystring='abc'
if mystring.find('a'):
  print("a is in {}".format(mystring))
else:
  print('a is not in {}'.format(mystring))

It would be awesome if flake8-bugbear could flag any logical test involving string.find() that does not compare to a numerical value.

Guide contributeur