PyCQA/flake8-bugbear

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

Offen

#266 geöffnet am 23.06.2022

 (6 Kommentare) (0 Reaktionen) (0 zugewiesene Personen)Python (116 Forks)github user discovery
bughelp wantedterrible_maintainer

Repository-Metriken

Stars
 (1.116 Sterne)
PR-Merge-Metriken
 (Durchschn. Merge 4h 17m) (3 gemergte PRs in 30 T)

Beschreibung

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...

Contributor Guide