pylint-dev/pylint

Expand to ``use-implicit-booleaness-not-len`` to catch `len(iterable) == 0` and `>0`

Open

#10,281 创建于 2025年3月17日

在 GitHub 查看
 (24 评论) (0 反应) (0 负责人)Python (4,978 star) (1,059 fork)batch import
False Negative 🦋Good first issueHacktoberfestNeeds decision :lock:

描述

Current problem

C1802 currently catches this

Examples 1&2 (currently caught by rule C1802)

fruits = ["orange", "apple"]
vegetables = []

if len(fruits):
    print(fruits)

if not len(vegetables):
    print(vegetables)

I come across the following sometimes as well (potentially in botched attempt to fix the the flagged violation above), which I think should be equally flagged as a violation.

Examples 3&4 (not caught by PLC1802)

fruits = ["orange", "apple"]
vegetables = []

if len(fruits) > 0:
    print(fruits)

if len(vegetables) == 0:
    print(vegetables)

Examples 5&6 (recommended formulation)

fruits = ["orange", "apple"]
vegetables = []

if fruits:
    print(fruits)

if not vegetables:
    print(vegetables)

Desired solution

Examples 3&4 to be flagged as well

Additional context

See our previous discussion on this issue.

贡献者指南