PyCQA/flake8-bugbear

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

Open

#170 opened on May 22, 2021

View on GitHub
 (3 comments) (0 reactions) (0 assignees)Python (116 forks)github user discovery
enhancementhelp wanted

Repository metrics

Stars
 (1,116 stars)
PR merge metrics
 (Avg merge 4h 17m) (3 merged PRs in 30d)

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.

Contributor guide