PyCQA/flake8-bugbear

B950 does not give warnings when --extend-ignore'ing E501

Ouverte

#266 ouverte le 23 juin 2022

 (6 commentaires) (0 réaction) (0 personne assignée)Python (116 forks)github user discovery
bughelp wantedterrible_maintainer

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

In an empty folder (no .flake8, tox.ini, or setup.cfg present)

echo "foo = 'foo'" > bug.py
flake8 --extend-ignore=E501 --extend-select=B950 --max-line-length=9 bug.py 

Gives me no errors.

Adding verbose logging (-vv) tells me:

flake8.main.application   MainProcess     62 INFO     Reporting errors
flake8.style_guide        MainProcess     62 DEBUG    Deciding if "E501" should be reported
flake8.style_guide        MainProcess     62 DEBUG    The user configured "E501" to be "Selected.Explicitly", "Ignored.Explicitly"
flake8.style_guide        MainProcess     62 DEBUG    "E501" will be "Decision.Ignored"
flake8.style_guide        MainProcess     63 DEBUG    Violation(code='E501', filename='bug.py', line_number=1, column_number=10, text='line too long (11 > 9 characters)', physical_line="foo = 'foo'\n") is not inline ignored
flake8.style_guide        MainProcess     63 DEBUG    Deciding if "B950" should be reported
flake8.style_guide        MainProcess     63 DEBUG    The user configured "B950" to be "Selected.Explicitly", "Ignored.Explicitly"
flake8.style_guide        MainProcess     63 DEBUG    "B950" will be "Decision.Ignored"
flake8.style_guide        MainProcess     63 DEBUG    Violation(code='B950', filename='bug.py', line_number=1, column_number=12, text='line too long (11 > 9 characters)', physical_line="foo = 'foo'\n") is not inline ignored
flake8.main.application   MainProcess     63 INFO     Found a total of 2 violations and reported 0

It appears that --extend-ignore=E501 makes flake8 think it can ignore B950 because E501 is part of the default ignore list. And I can't find any flake8 or bugbear version combination where this has ever worked... The reported debugging info for B950 is the same as when not using any ignores at all.


Using --ignore=E501 instead of --extend-ignore makes it work as expected, but of course we don't want to override the default ignore list.

flake8 --ignore=E501 --extend-select=B950 --max-line-length=9 bug.py 
flake8.main.application   MainProcess     64 INFO     Reporting errors
flake8.style_guide        MainProcess     64 DEBUG    Deciding if "E501" should be reported
flake8.style_guide        MainProcess     64 DEBUG    The user configured "E501" to be "Selected.Explicitly", "Ignored.Explicitly"
flake8.style_guide        MainProcess     64 DEBUG    "E501" will be "Decision.Ignored"
flake8.style_guide        MainProcess     64 DEBUG    Violation(code='E501', filename='bug.py', line_number=1, column_number=10, text='line too long (11 > 9 characters)', physical_line="foo = 'foo'\n") is not inline ignored
flake8.style_guide        MainProcess     64 DEBUG    Deciding if "B950" should be reported
flake8.style_guide        MainProcess     64 DEBUG    The user configured "B950" to be "Selected.Explicitly", "Selected.Implicitly"
flake8.style_guide        MainProcess     64 DEBUG    "B950" will be "Decision.Selected"
flake8.style_guide        MainProcess     64 DEBUG    Violation(code='B950', filename='bug.py', line_number=1, column_number=12, text='line too long (11 > 9 characters)', physical_line="foo = 'foo'\n") is not inline ignored
flake8.main.application   MainProcess     64 INFO     Found a total of 2 violations and reported 1
bug.py:1:12: B950 line too long (11 > 9 characters)

In total the following table shows all issues:

ignore select reports B950
:x: --extend-ignore=E501 --extend-select=B950 NO
:x: --extend-ignore=E501 --select=B950 NO
:heavy_check_mark: --ignore=E501 --select=B950 YES
:heavy_check_mark: --ignore=E501 --extend-select=B950 YES
:grey_question: --extend-select=B950 (only) E501
:heavy_check_mark: --select=B950 YES

Not sure about the second last line, whether it is expected to report both E501 and B950 or E501 alone...

Guide contributeur