如何设置 flake8 来捕获不可调用的?
How to set flake8 to catch a not-callable?
关于这个测试程序:
def func():
foo = (
(1, 2)
(3, 4)
)
命令 python -m py_compile my_script.py
警告“SyntaxWarning:'tuple' 对象不可调用;也许您漏掉了一个逗号?” pylint --disable=all --enable=E1102 my_script.py
输出“E1102: (1, 2) is not callable (not-callable)”。
但是 flake8
没有显示任何错误或警告。我如何设置它来捕获(输出或警告)不可调用的声明?
我正在使用:
3.7.9(mccabe:0.6.1,pycodestyle:2.5.0,pyflakes:2.1.1)Linux (WSL2)
上的 CPython 3.8.2
开箱即用的 flake8 无法捕获特定的 SyntaxWarning
但是你可以直接使用标准库来捕捉这个:
$ python3 -Werror -m compileall t.py
Compiling 't.py'...
*** File "t.py", line 3
(1, 2)
^
SyntaxError: 'tuple' object is not callable; perhaps you missed a comma?
通常你也可以通过提高警告级别将 SyntaxWarnings 变成 SyntaxErrors,但无论出于何种原因,它似乎对这个警告不起作用(可能是因为这个警告是在 compile
时间而不是 parse
次):
$ python3 -Werror -c 'import ast; ast.parse("def f():()()")'
$
否则你可以用 PYTHONWARNINGS=error::SyntaxWarning flake8 ...
触发它(但遗憾的是,你不能)
免责声明:我是当前的 flake8 维护者和 pyflakes 维护者(这可能会得到实施)
关于这个测试程序:
def func():
foo = (
(1, 2)
(3, 4)
)
命令 python -m py_compile my_script.py
警告“SyntaxWarning:'tuple' 对象不可调用;也许您漏掉了一个逗号?” pylint --disable=all --enable=E1102 my_script.py
输出“E1102: (1, 2) is not callable (not-callable)”。
但是 flake8
没有显示任何错误或警告。我如何设置它来捕获(输出或警告)不可调用的声明?
我正在使用:
3.7.9(mccabe:0.6.1,pycodestyle:2.5.0,pyflakes:2.1.1)Linux (WSL2)
上的 CPython 3.8.2开箱即用的 flake8 无法捕获特定的 SyntaxWarning
但是你可以直接使用标准库来捕捉这个:
$ python3 -Werror -m compileall t.py
Compiling 't.py'...
*** File "t.py", line 3
(1, 2)
^
SyntaxError: 'tuple' object is not callable; perhaps you missed a comma?
通常你也可以通过提高警告级别将 SyntaxWarnings 变成 SyntaxErrors,但无论出于何种原因,它似乎对这个警告不起作用(可能是因为这个警告是在 compile
时间而不是 parse
次):
$ python3 -Werror -c 'import ast; ast.parse("def f():()()")'
$
否则你可以用 PYTHONWARNINGS=error::SyntaxWarning flake8 ...
触发它(但遗憾的是,你不能)
免责声明:我是当前的 flake8 维护者和 pyflakes 维护者(这可能会得到实施)